Смарт-контракт BEP-20 с функцией раздачи
Я создаю свой собственный токен BEP20 и хочу реализовать функцию раздачи токенов сразу по нескольким адресам, чтобы снизить плату за газ. Пример использования - раздача бесплатных токенов выбранным пользователям после запуска.
Это код, который у меня есть, но, похоже, что-то не хватает для правильной работы:
contract Airdrop is Ownable {
IERC20 token;
struct PaymentInfo {
address payable payee;
uint256 amount;
}
constructor(address _token) public {
token = IERC20(_token);
}
function batchPayout(PaymentInfo[] calldata info) external onlyOwner {
for (uint i=0; i < info.length; i++) {
token.transfer(info[i].payee,info[i].amount);
}
}
function transfer(address to, uint256 amount) external onlyOwner {
token.transfer(to, amount);
}
}
Могу ли я использовать фрагменты кода из примеров ERC20? Будут ли они работать с BEP20?
3 ответа
Ethereum и Binance Smart Chain используют немного разные стандарты токенов, поэтому большая часть кода Solidity, разработанного для виртуальной машины Ethereum, требует незначительных изменений, включая замену упоминаний IERC20 на IBEP20 и использование правильного файла Solidity для интерфейса IBEP20.
Если вы используете правильную версию компилятора Solidity, он должен сказать, нуждается ли код в дальнейших изменениях. Для тестирования в реальной жизни лучше протестировать код в тестовой сети Binance Smart Chain.
Вам не нужно включать пакетную отправку в сам токен. Поскольку смарт-контракты можно компоновать, существуют сторонние смарт-контракты, которые могут выполнять пакетную отправку от имени любого токена.
Одним из примеров сервиса со смарт-контрактами с открытым исходным кодом является Token BulkSender . Источник смарт-контракта для массовой отправки находится здесь .