在交互starknet上的dApp时,发现https://flexing.gg这个NFT Market竟然要授权100000000000000ETH,是的,后面是14个0,没看错,就是授权这么多的ETH。
我们来复习下ETH的单位换算:
- Wei,通常用于智能合约交互的单位,1ETH=10^18Wei。
- GWei,用于计算Gas价格。1ETH=10^9GWei。
- 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)。
填入参数
- spender: felt:填:0x4b1b3fdf34d00288a7956e6342fb366a1510a9387d321c87f3301d990ac19d4
- 这是Flex Marketplace: NFT Marketplace官方合约地址。
- amount: Uint256 填:10000000000000。约等于=0.00001ETH。
这里梳理几个常用的数值:
- 0.00001ETH = 10000000000000
- 0.00002 ETH = 20000000000000
- 0.0001ETH = 1000000000000
不够用的话,可以用上面的单位换算为Wei值。
填好参数后,直接点击Write,确认提交即可。
原文发表在Twitter:
内容仅作日常记录之用,不可视作投资建议。