1. 摘要
通證token項目啟動時,短期內(nèi)繁榮生態(tài)脑蠕,要舍得給粉絲們打幣购撼,把利益分出去。本文聚焦在技術(shù)層面谴仙,實現(xiàn)如何快速完成TOKEN海量空投迂求,既要節(jié)約時間,又要節(jié)省TOKEN費用晃跺。
2.代碼分析
話不多說揩局,直接上代碼。
pragma solidity ^0.4.18;
contract Ownable {
address public owner;
function Ownable() public {
owner = msg.sender;
}
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
}
interface Token {
function balanceOf(address _owner) public constant returns (uint256 );
function transfer(address _to, uint256 _value) public ;
event Transfer(address indexed _from, address indexed _to, uint256 _value);
}
contract Airdropper is Ownable {
function AirTransfer(address[] memory _recipients, uint _values, address _tokenAddress) onlyOwner public returns (bool) {
require(_recipients.length > 0);
Token token = Token(_tokenAddress);
for(uint j = 0; j < _recipients.length; j++){
token.transfer(_recipients[j], _values);
}
return true;
}
function withdrawalToken(address _tokenAddress) onlyOwner public {
Token token = Token(_tokenAddress);
token.transfer(owner, token.balanceOf(this));
}
}
說明
(1)定義interface Token接口掀虎,可以適配任何支持ERC20的代幣凌盯。
(2)contract Airdropper is Ownable,對應(yīng)空投合約函數(shù)烹玉,包含2個核心函數(shù):
<1> AirTransfer
空投函數(shù):AirTransfer(address[] memory _recipients, uint _values, address _tokenAddress)
入?yún)⒎謩e是接受地址驰怎,對應(yīng)的數(shù)量,目標ERC20的合約地址春霍。
<2>withdrawalToken
回收函數(shù):withdrawalToken(address _tokenAddress)
用于把未發(fā)送的token回收管理賬號
3.測試
測試流程包括3步:
(1) 部署空投合約砸西;
(2) 轉(zhuǎn)賬足夠數(shù)量的ERC20代幣到空投合約地址;
(3) 組裝空投接受地址和其他入?yún)⒅啡澹瑘?zhí)行;
例如:["0xbCBE3593561dF94Ed18c13dA1877db3857bE4402","0xEbcA76f064cd01fDb699051c291559A697812B18","0x5fa20E0A24b72A85630200A58651EB777f8d4097","0x1ed80b85C0ecAafbFCC45249922a1096Dd92460B","0x97dF0DcCd22651c20A0511422C6d995Bf937973A","0xd201D869D0A006901a70a24b91946E19b5649F73","0x219f9C9e87085084f9148B6cFB51A586D7EFDcdb","0x0bd2e92a72d9a7c71c03a3eCEd4B563ACE6405F3","0xab19520a874061f87132128E590822B051bF75b9","0xF7CfAA4201C81A0CbB92424d70Dd14031350c31e"],100000000000000000000,"0x14780cdc560680d2cea42459fe824aad277298f1"
(4) 回收未打完的TOKEN回管理賬號衅疙;
4.啟發(fā)問題
(1)如何快速組裝打幣目標地址數(shù)組列表呢莲趣?
我們拿到的地址一般是XLS表格形式給出的,舉例來說1000個饱溢,如何快速把這些列表組裝成solidity的數(shù)組呢喧伞?["a","b","c"]樣子,組裝1000個也挺費時間的,有沒有快速的批量方法呢潘鲫?
(2)如果真的是10萬級別的空投地址翁逞,如何實現(xiàn)呢?
如果空投地址很大溉仑,例如是10萬級別的挖函,而以太坊的GAS費是受限的,800萬到頂浊竟。這時候需要切分成多次打幣怨喘。建議采用WEB3J調(diào)用實現(xiàn),通過程序把XLS導(dǎo)入目標地址進行切分后再逐步調(diào)用程序振定。
輝哥就點到這兒了必怜,需要打幣合作,實現(xiàn)多快好省后频,歡迎加入輝哥的知識星球聯(lián)系輝哥微信梳庆。本工程的源碼也公布在此: