Solidity

如何對外部 ERC20 代幣的批准功能進行委託呼叫?

  • August 22, 2020

我想做的是這樣的:

function testCall(uint amount) public virtual returns (bool) {
address tta = address(0xE7B6....);    
   
(bool success, bytes memory result) = tta.delegatecall(abi.encodeWithSignature("approve(address, uint256)", address(this), amount));
return success;
}

令牌看起來像這樣(具有批准功能)

但是,無論何時執行該函式,它都會返回一個錯誤

我究竟做錯了什麼?

我需要完成的是讓使用者通過首先transferFrom執行契約的testCall()功能來批准契約。

您正在函式中添加一個空格,該空格會產生不同的方法簽名。

> provider.eth.abi.encodeFunctionSignature('approve(address, uint256)')
0x8b069f2a

provider.eth.abi.encodeFunctionSignature('approve(address,uint256)')
0x095ea7b3

如果刪除空間,它應該可以工作!

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