Solidity
如何對外部 ERC20 代幣的批准功能進行委託呼叫?
我想做的是這樣的:
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
如果刪除空間,它應該可以工作!