Стандарт ERC-1363 реализует расширение токена ERC-20 для выполнения произвольного кода сразу после вызова
transfer(), transferFrom() или approve() в рамках одной транзакции. Этот стандарт позволяет выполнить две транзакции в одной и избежать излишней оплаты за газ.Важно! Стандарт ERC-1363 является расширением стандарта ERC-20 и полностью обратно совместимым. То есть, он не переопределяет стандартные функции
transfer(), transferFrom() или approve().Стандарт IERC1363.sol расширяет реализацию токена ERC-20 новыми функциями.
interface IERC1363 is IERC20, IERC165 {
function transferAndCall(address to, uint256 amount) external returns (bool);
function transferAndCall(address to, uint256 amount, bytes calldata data) external returns (bool);
function transferFromAndCall(address from, address to, uint256 amount) external returns (bool);
function transferFromAndCall(address from, address to, uint256 amount, bytes calldata data) external returns (bool);
function approveAndCall(address spender, uint256 amount) external returns (bool);
function approveAndCall(address spender, uint256 amount, bytes calldata data) external returns (bool);
}
Работает это следующим образом: вызов любой из этих функций сначала выполняет вызов соответсвующей функции в ERC-20, а затем делает дополнительный вызов на адресе получателя токенов или кому выдавался approve(). Например, transferAndCall(), под капотом, делает стандартный вызов функции transfer(), а затем делает дополнительный вызов функции на адресе получателя токена.Для выполнения кода после вызова
transfer() или transferFrom() получатель токена должен быть контрактом и реализовывать интерфейс IERC1363Receiver.solinterface IERC1363Receiver {
function onTransferReceived(address spender, address sender, uint256 amount, bytes ?calldata data) external returns (bytes4);
}
Репозиторий и документация с примерами реализации стандарта от Vittorio Minacori, который является автором стандарта ERC-1363: Payable TokenP.S. Про другие стандарты, такие как ERC-165 и ERC-4337 можно почитать в wiki от студии web3 разработки MetaLamp.
#erc1363 #token