Tokens
我是新手,有人可以用函式批准()竊取我的 erc20 令牌嗎
我一直在使用 yield Farming (YFValue),當我通過 MetaMask 接受契約時我注意到了。
我設置了 500 USDT,但在契約中輸入的是:
Function: approve(address _spender, uint256 _value) MethodID: 0x095ea7b3 [0]: 000000000000000000000000c2d55ce14a8e04aef9b6bcfd105079b63c6a0ac8 [1]: 000000000000000000000000000000000000314dc6448d932ae0a456589c0000
當我通過 Etherscan 對其進行解碼時,它說:
_value uint256 999999999999999000000000000000000
我的問題是:這是否意味著
_spender
可以多拿 500 USDT?如果不能每次重複拿500 USDT,怎麼取消?先感謝您交易如下:https ://etherscan.io/tx/0xa10306c12bbb1a3e9c81936879ef919105c4e38262da483943eb9026347e2f75
是的,從技術上講,
_spender
最多可以佔用999999999999999000000000000000000
您的代幣。不幸的是,這是一種常見的做法,因為它使這種性質的代幣交易對使用者更加友好。例如,一旦您
approve()
使用此金額呼叫,您現在可以進行許多交易而無需approve()
再次呼叫,這在技術上意味著您需要進行更少的交易並且將花費更少。為了取消它,只需
approve()
再次呼叫該函式並將其設置回0
:
approve(0xC2D55CE14a8e04AEF9B6bCfD105079b63C6a0AC8, 0)