外部ERC20トークンの承認関数にdelegatecallを行う方法は?

Aug 23 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()機能を実行することによって、ユーザーが契約を承認して作成できるようにすることです。

回答

1 ShaneFontaine Aug 23 2020 at 04:26

別のメソッドシグネチャを生成するスペースを関数に追加しています。

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

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

スペースを削除すると、機能するはずです。