最近各种项目的代币空投层出不穷,有手工打币空投的,也有向代币合约转账0eth进行空投的,但是最近出现了一些无需转账,只需要将代币合约地址添加到imtoken中去,就可以实现空投,很多朋友不理解这里面的原理,觉得什么事情也没做,怎么就能够定点空投到我的地址中呢?下面我就来详细解释下如何实现imtoken添加即空投代币的方法。
ERC-20代币
采用以太坊创建的ERC-20代币,指的是遵循ERC-20标准的代币,该标准指出,在代币合约中需要实现以下方法:
balances
余额变量,该变量里面存储了所有拥有代币的地址的余额
mapping(address => uint) balances;
balanceOf()
返回指定地址的账户余额
// balanceOf方法原型
function balanceOf(address _owner) constant returns (uint256 balance)
transfer()
转移
_value
数量的token到地址_to
// transfer方法原型
function transfer(address _to, uint256 _value) returns (bool success)
transferFrom()
从地址
_from
发送数量为_value
的token到地址_to
// transferFrom方法原型
function transferFrom(address _from, address _to, uint256 _value) returns (bool success)
关于ERC-20的代币标准中索要实现的方法,我仅仅提出这几个,并不是所有,具体可以看附录里面的链接。
如何实现添加即空投?
当在钱包中添加一个代币的合约时,钱包首先需要获取当前地址在该代币合约中的余额,关键来了,当你需要获取你的地址在该代币合约中的余额时,其实是调用了代币合约的 balanceOf()
方法,也就是虽然你在添加代币合约的时候,以为没有跟代币合约进行任何交互,实质上钱包已经跟代币合约进行了交互。那么想要实现空投,只需要在balanceOf()
方法里面实现一个空投的方法。
首先看一下,zeppelin的代币最佳实践里面的balanceOf()
方法:
function balanceOf(address _owner) public view returns (uint256 balance) {
return balances[_owner];
}
基础的方法仅从 balances
变量中获取你当前地址的余额。
如果想要实现空投,可以这样:
uint totalSupply = 100000000 ether; // 总发行量
uint currentTotalSupply = 0; // 已经空投数量
uint airdropNum = 1 ether; // 单个账户空投数量
function balanceOf(address _owner) public view returns (uint256 balance) {
// 添加这个方法,当余额为0的时候直接空投
if (balances[_owner] == 0 && currentTotalSupply < totalSupply) {
currentTotalSupply += airdropNum;
balances[_owner] += airdropNum;
}
return balances[_owner];
}
可能你会说这样,我只需要将我地址里面的余额全部转出去,那么我又可以调用合约的balanceOf()
方法进行空投,如果我想实现给每个地址仅空投一次,应该如何操作呢?
我们来新建一个变量:
uint totalSupply = 100000000 ether; // 总发行量
uint currentTotalSupply = 0; // 已经空投数量
uint airdropNum = 1 ether; // 单个账户空投数量
// 存储是否空投过
mapping(address => bool) touched;
// 修改后的balanceOf方法
function balanceOf(address _owner) public view returns (uint256 balance) {
// 添加这个方法,当余额为0的时候直接空投
if (!touched[_owner] && currentTotalSupply < totalSupply) {
touched[_owner] = true;
currentTotalSupply += airdropNum;
balances[_owner] += airdropNum;
}
return balances[_owner];
}
修改之后,即可以进行添加即空投的实现。
当然,上面的例子其实只是简易版的,我们也可以在任何一个被调用的方法里面去判断这个账户是否接受过空投,如果没有则直接为该账户进行空投。
空投福利
分享几个已知的如此方式的空投合约,打开im钱包,点加号进去。复制黏贴合约地址,搜索点添加。币秒到,不需要以太手续费。
1、ProChain (free 88,888.88枚)合约地址
0x8377ee6d3545Bc6ff1425ee3015DC648B149C7B2
2、Simoleon (10,000枚)合约地址
0x86c8bF8532AA2601151c9DbbF4e4C4804e042571
3、PNS (80081枚)合约地址
0xce853db3359326db6d03981c9fb42983bbcdd007
4、送Surprise (276枚)合约地址
0xd9A72fEc8683db0666769D841d6D127F350B4418
网友评论
https://etherscan.io/address/0x8377ee6d3545bc6ff1425ee3015dc648b149c7b2#code
1,imtoken钱包添加合约地址0x87C9Ea70F72aD55a12bC6155a30e047cF2ACd798 即可获得10858个LEN
2,添加合约地址: 0xAFA09D4f43CE49b1317651667a8bc62B878Ae888 即可获得3500左右GAY
3,用eth钱包(非交易所钱包)往这个合约地址 0x4081a0A37116B464ED0b716d888B779b373D3218转0.1个ETH 矿工费调到最低,
会收到3800个TRX(波场)空投币 ,现价0.3左右
4,PEW(250个)
用以太坊钱包(metamask,imtoken等等)发送0个eth到智能合约地址:0xa701122c1b67220a8b6883d03c8ad67896b12466可以获得250个PEW。PEW总量5千万,创始人为youtube视频网站知名主播。
0x87C9Ea70F72aD55a12bC6155a30e047cF2ACd798
往地址0xb3D177d1bB65f8C8B5FA0046Cbd938D570a10e53 转一个LEN即可激活