#solidity #smartcontracts
Вопрос:
У меня есть вопрос, и я пытаюсь погуглить без особого труда.
Давайте возьмем пример этого токена: 1-дюймовый токен
Таким образом, вы можете видеть, что у него есть разные токены, которые люди отправили на этот адрес.
Если бы я был владельцем, как бы я мог реализовать функцию вывода всех этих токенов на свой кошелек?
Ответ №1:
Ваш контракт может определить функцию ERC20
интерфейса transfer()
, а затем выполнить эту функцию во внешнем контракте токенов.
pragma solidity ^0.8;
interface IERC20 {
function transfer(address _to, uint256 _amount) external returns (bool);
}
contract MyContract {
modifier onlyOwner {
require(msg.sender == address(0x123), 'Not authorized');
_;
}
function withdrawERC20Token(address _tokenContractAddress, uint256 _amount) external onlyOwner {
IERC20 token = IERC20(_tokenContractAddress);
// transfer the `_amount` of tokens (mind the decimals) from this contract address
// to the `msg.sender` - the caller of the `withdrawERC20Token()` function
bool success = token.transfer(msg.sender, _amount);
require(success, 'Could not withdraw');
}
}