1

我正在创建自己的 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 合作吗?

4

2 回答 2

1

以太坊和币安智能链使用的代币标准略有不同,因此为以太坊虚拟机设计的大部分 Solidity 代码都需要进行细微更改,包括将提及的 IERC20 替换为 IBEP20 以及为 IBEP20 接口使用正确的 Solidity 文件。

如果您使用正确版本的 Solidity 编译器,它应该会告诉您代码是否需要进一步更改。对于现实生活中的测试,最好在币安智能链的测试网上测试代码。

于 2021-08-02T09:49:19.510 回答
0

您不需要在令牌本身中包含批量发送。由于智能合约是可组合的,因此存在可以代表任何代币进行批量发送的第三方智能合约。

使用开源智能合约的一个示例服务是Token BulkSender。批量发送智能合约的来源在这里

于 2021-06-07T09:49:18.163 回答