Codificação ABI
WEB3DEV Team
# Codificação ABI
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
interface IERC20 {
function transfer(address, uint) external;
}
contract AbiEncode {
function encodeWithSignature(address to, uint amount)
external
pure
returns (bytes memory)
{
// Erro de digitação não é verificado - "transfer(address, uint)"
return abi.encodeWithSignature("transfer(address,uint256)", to, amount);
}
function encodeWithSelector(address to, uint amount)
external
pure
returns (bytes memory)
{
// Tipo não está marcado - (IERC20.transfer.selector, true, amount)
return abi.encodeWithSelector(IERC20.transfer.selector, to, amount);
}
function encodeCall(address to, uint amount) external pure returns (bytes memory) {
// Erros de digitação e tipo não serão compilados
return abi.encodeCall(IERC20.transfer, (to, amount));
}
}