最近各種項目的代幣空投層出不窮肛度,有手工打幣空投的屡拨,也有向代幣合約轉賬0eth進行空投的份招,但是最近出現(xiàn)了一些無需轉賬丈攒,只需要將代幣合約地址添加到imtoken中去渡嚣,就可以實現(xiàn)空投,很多朋友不理解這里面的原理,覺得什么事情也沒做识椰,怎么就能夠定點空投到我的地址中呢绝葡?下面我就來詳細解釋下如何實現(xiàn)imtoken添加即空投代幣的方法。
ERC-20代幣
采用以太坊創(chuàng)建的ERC-20代幣腹鹉,指的是遵循ERC-20標準的代幣藏畅,該標準指出,在代幣合約中需要實現(xiàn)以下方法:
balances
余額變量功咒,該變量里面存儲了所有擁有代幣的地址的余額
mapping(address => uint) balances;
balanceOf()
返回指定地址的賬戶余額
// balanceOf方法原型
function balanceOf(address _owner) constant returns (uint256 balance)
transfer()
轉移
_value
數(shù)量的token到地址_to
// transfer方法原型
function transfer(address _to, uint256 _value) returns (bool success)
transferFrom()
從地址
_from
發(fā)送數(shù)量為_value
的token到地址_to
// transferFrom方法原型
function transferFrom(address _from, address _to, uint256 _value) returns (bool success)
關于ERC-20的代幣標準中索要實現(xiàn)的方法愉阎,我僅僅提出這幾個,并不是所有力奋,具體可以看附錄里面的鏈接榜旦。
如何實現(xiàn)添加即空投?
當在錢包中添加一個代幣的合約時景殷,錢包首先需要獲取當前地址在該代幣合約中的余額溅呢,關鍵來了,當你需要獲取你的地址在該代幣合約中的余額時猿挚,其實是調用了代幣合約的 balanceOf()
方法咐旧,也就是雖然你在添加代幣合約的時候,以為沒有跟代幣合約進行任何交互绩蜻,實質上錢包已經跟代幣合約進行了交互铣墨。那么想要實現(xiàn)空投,只需要在balanceOf()
方法里面實現(xiàn)一個空投的方法办绝。
首先看一下伊约,zeppelin的代幣最佳實踐里面的balanceOf()
方法:
function balanceOf(address _owner) public view returns (uint256 balance) {
return balances[_owner];
}
基礎的方法僅從 balances
變量中獲取你當前地址的余額。
如果想要實現(xiàn)空投孕蝉,可以這樣:
uint totalSupply = 100000000 ether; // 總發(fā)行量
uint currentTotalSupply = 0; // 已經空投數(shù)量
uint airdropNum = 1 ether; // 單個賬戶空投數(shù)量
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()
方法進行空投疹尾,如果我想實現(xiàn)給每個地址僅空投一次,應該如何操作呢骤肛?
我們來新建一個變量:
uint totalSupply = 100000000 ether; // 總發(fā)行量
uint currentTotalSupply = 0; // 已經空投數(shù)量
uint airdropNum = 1 ether; // 單個賬戶空投數(shù)量
// 存儲是否空投過
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];
}
修改之后,即可以進行添加即空投的實現(xiàn)腋颠。
當然繁成,上面的例子其實只是簡易版的,我們也可以在任何一個被調用的方法里面去判斷這個賬戶是否接受過空投淑玫,如果沒有則直接為該賬戶進行空投巾腕。
空投福利
分享幾個已知的如此方式的空投合約面睛,打開im錢包,點加號進去尊搬。復制黏貼合約地址叁鉴,搜索點添加。幣秒到佛寿,不需要以太手續(xù)費幌墓。
1、ProChain (free 88,888.88枚)合約地址
0x8377ee6d3545Bc6ff1425ee3015DC648B149C7B2
2冀泻、Simoleon (10,000枚)合約地址
0x86c8bF8532AA2601151c9DbbF4e4C4804e042571
3常侣、PNS (80081枚)合約地址
0xce853db3359326db6d03981c9fb42983bbcdd007
4、送Surprise (276枚)合約地址
0xd9A72fEc8683db0666769D841d6D127F350B4418