乐趣区

关于区块链:一个简单的ERC20代币空投合约

空投是币圈中一种营销策略,我的项目方将代币收费发放给特定用户群体。为了拿到空投资格,用户通常须要实现一些简略的工作,如测试产品、分享新闻、介绍敌人等。我的项目方通过空投能够取得种子用户,而用户能够取得一笔财产,两败俱伤。
Airdrop空投合约逻辑非常简单:利用循环,一笔交易将 ERC20 代币发送给多个地址。咱们明天就来实现一个简略的空投合约,其次要性能就是对拥有者发送的空投地址的每个地址空投 100 枚 ERC20 代币。
合约代码:

// SPDX-License-Identifier: MIT
// By 0xAApragma 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 代币,避免出现余额有余,空投失败的状况哦!

退出移动版