Tokens

我是新手,有人可以用函式批准()竊取我的 erc20 令牌嗎

  • September 17, 2021

我一直在使用 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)

引用自:https://ethereum.stackexchange.com/questions/87149