Смарт-контракт 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.

Bep20
0x9e4Ae1204507D7e928C9A272a1A8907F3852fc8b

Вам не нужно включать пакетную отправку в сам токен. Поскольку смарт-контракты можно компоновать, существуют сторонние смарт-контракты, которые могут выполнять пакетную отправку от имени любого токена.

Одним из примеров сервиса со смарт-контрактами с открытым исходным кодом является Token BulkSender . Источник смарт-контракта для массовой отправки находится здесь .

Другие вопросы по тегам