实现一个简单的空投合约,其主要功能就是对拥有者发送的空投地址的每个地址空投100枚ERC20代币。
空投是币圈中一种营销策略,项目方将代币免费发放给特定用户群体。为了拿到空投资格,用户通常需要完成一些简单的任务,如测试产品、分享新闻、介绍朋友等。项目方通过空投可以获得种子用户,而用户可以获得一笔财富,两全其美。
Airdrop
空投合约逻辑非常简单:利用循环,一笔交易将ERC20
代币发送给多个地址。我们今天就来实现一个简单的空投合约,其主要功能就是对拥有者发送的空投地址的每个地址空投100枚ERC20代币。
合约代码:
// SPDX-License-Identifier: MIT
// By 0xAA
pragma solidity ^0.8.4;
import "./IERC20.sol"; //import IERC20
/// @notice 向多个地址转账ERC20代币
contract Airdrop {
function multiTransferToken(
address _token,
address[] calldata _addresses
) external {
IERC20 token = IERC20(_token); // 声明IERC合约变量
uint _amountSum = _addresses.length * 100; // 计算空投代币总量
// 检查:授权代币数量 > 空投代币总量
require(token.allowance(msg.sender, address(this)) > _amountSum, "Need Approve ERC20 token");
// for循环,利用transferFrom函数发送空投
for (uint256 i; i < _addresses.length; i++) {
token.transferFrom(msg.sender, _addresses[i], 100)
}
}
}
我们可以利用之前在chainpip社区创建好的Dapp应用,进入应用在之前的合约文件中添加一个新的合约文件Airdrop.sol,并进行编译。
因为可以使用之前部署好的代币合约,所以本次我们只需要部署空投合约就可以了。
部署完成了,我们来试试空投功能,我们给下面的两个地址发起一次空投: 地址1:0xB1f3DD75c582C11Ee2B7ad06891BD96Fb423Db9c 地址2:0x1B9e252BB9241e139BE310D1FA5f89A38af0Cea2
空投完成,我们来查询一下这两个地址的余额:
从查询结果可以得知,它们分别拥有了100枚HH代币。 还有空投之前记得给空投合约地址转入足够的ERC20代币,避免出现余额不足,空投失败的情况哦!
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!