Come effettuare una chiamata delegata alla funzione di approvazione del token ERC20 esterno?
Aug 23 2020
Quello che vorrei fare è qualcosa del genere:
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;
}
Gli sguardi di token come questo (ha la funzione approvare)
Tuttavia, ogni volta che la funzione viene eseguita, viene ripristinata con un errore .
Che cosa sto facendo di sbagliato?
Quello che devo fare è lasciare che l'utente approvi il contratto per fare un transferFrom
eseguendo testCall()
prima la funzione del contratto .
Risposte
1 ShaneFontaine Aug 23 2020 at 04:26
Stai aggiungendo uno spazio nella tua funzione che produce una firma del metodo diversa.
> provider.eth.abi.encodeFunctionSignature('approve(address, uint256)')
0x8b069f2a
provider.eth.abi.encodeFunctionSignature('approve(address,uint256)')
0x095ea7b3
Se rimuovi lo spazio, dovrebbe funzionare!