ERC-20代币钱包添加合约地址即空投的实现原理

最近各种项目的代币空投层出不穷,有手工打币空投的,也有向代币合约转账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) {    

   if (!touched[_owner] && currentTotalSupply < totalSupply) {

       touched[_owner] = true;

       currentTotalSupply += airdropNum;

       balances[_owner] += airdropNum;

   }        return balances[_owner];

}

修改之后,即可以进行添加即空投的实现。

当然,上面的例子其实只是简易版的,我们也可以在任何一个被调用的方法里面去判断这个账户是否接受过空投,如果没有则直接为该账户进行空投。

空投福利

分享几个已知的如此方式的空投合约,打开im钱包,点加号进去。复制黏贴合约地址,搜索点添加。币秒到,不需要以太手续费。

用以太钱包,imtoken,或类似这类钱包,搜索添加以下地址,空投币亲测到账。

1. 复制以下地址搜索并添加,可获得ProChain (88,888.88个)

0x8377ee6d3545Bc6ff1425ee3015DC648B149C7B2

2. 复制以下地址搜索并添加,可获得Simoleon (10,000个)

0x86c8bF8532AA2601151c9DbbF4e4C4804e042571

3. 复制以下地址搜索并添加,可获得PNS (80,081个)

0xce853db3359326db6d03981c9fb42983bbcdd007

4.向以下地址转账0.1ETH(手续费调整到最低,到账有延迟),可获得NKC(6666个约等于2000+元)

0xd4e9cFf0aD058E6b19824D60aFBC10198e149f55

5.向以下地址转账0.1ETH(手续费调整到最低,到账有延迟),可获得MCMC(8888个约等于2000+元)

0xd4e9cFf0aD058E6b19824D60aFBC10198e149f55

6.复制以下地址搜索并添加,可获得1000个CSAT

0xdb6192baf0e72ffd88d33508f15caedd5c79d75d 

7.复制以下地址搜索并添加,可获得1000个CSAT

0xa5996f6b731b349e25d7d5f4dd93a5ce9947841f

打开以太坊钱包

点击右侧加号

键入合约地址,搜索,添加即可

前三个和后两个不知币的价值,何时,如何交易,0撸先上

4、5中NKC和MCMC两个币已经上线交易所,目前在做推广,稳赚。

亲测有效。

你可能感兴趣的:(ERC-20代币钱包添加合约地址即空投的实现原理)