分类
默认

撸毛starknet之取消ETH授权

在交互starknet上的dApp时,发现https://flexing.gg这个NFT Market竟然要授权100000000000000ETH,是的,后面是14个0,没看错,就是授权这么多的ETH。

我们来复习下ETH的单位换算:

  1. Wei,通常用于智能合约交互的单位,1ETH=10^18Wei。
  2. GWei,用于计算Gas价格。1ETH=10^9GWei。
  3. Finney,1ETH=10^3Finney。

主要原因是为了方便不同场景的计算,人为规定了几个不同的面额的ETH。参考:ETH官方的单位换算工具

至于flexing为什么要这么多授权ETH,不太明白。授权过多的风险在于,如果合约被黑的话,自己钱包的ETH可能会被一锅端。

我特地去看该项目方朋友们的授权金额,比如https://pyramid.market、https://unframed.co。

比如查了下unframed是argentHQ构建的,你可以在这个tweet看到:https://twitter.com/argentHQ/status/1683478409618309120。这2个项目方都很实在,每次授权都是用户操作金额,比如你出价0.05ETH,就需要授权0.05。不像flexing.gg,一上来就要你的全部。

既然授权太多了,我们就需要限制下它的授权金额。在ETH上,有这样的工具可以来检查你的授权,比如https://revoke.cash/。但在starknet上却没有好的工具,唯一找到是starkrekt。打开后发现接口请求直接返回500,根本没法用。

既然工具不好用,那我们就直接用合约来执行就好了。找到跨链桥部署的ETH合约StarkGate: ETH Token,切换到Read/Write Contract,选择Write函数,链接你的钱包,找到第3个函数approve(sender,amount)。

填入参数

  1. spender: felt:填:0x4b1b3fdf34d00288a7956e6342fb366a1510a9387d321c87f3301d990ac19d4
  2. 这是Flex Marketplace: NFT Marketplace官方合约地址。
  3. amount: Uint256 填:10000000000000。约等于=0.00001ETH。

这里梳理几个常用的数值:

  1. 0.00001ETH = 10000000000000
  2. 0.00002 ETH = 20000000000000
  3. 0.0001ETH = 1000000000000

不够用的话,可以用上面的单位换算为Wei值。

填好参数后,直接点击Write,确认提交即可。

原文发表在Twitter: