ERC-20代幣錢包添加合約地址即空投的實現(xiàn)原理

最近各種項目的代幣空投層出不窮,有手工打幣空投的,也有向代幣合約轉(zhuǎn)賬0eth進行空投的,但是最近出現(xiàn)了一些無需轉(zhuǎn)賬,只需要將代幣合約地址添加到imtoken中去,就可以實現(xiàn)空投,很多朋友不理解這里面的原理,覺得什么事情也沒做,怎么就能夠定點空投到我的地址中呢?下面我就來詳細解釋下如何實現(xiàn)imtoken添加即空投代幣的方法。

ERC-20代幣

采用以太坊創(chuàng)建的ERC-20代幣,指的是遵循ERC-20標(biāo)準(zhǔn)的代幣,該標(biāo)準(zhǔn)指出,在代幣合約中需要實現(xiàn)以下方法:

balances

余額變量,該變量里面存儲了所有擁有代幣的地址的余額

mapping(address => uint) balances;

balanceOf()

返回指定地址的賬戶余額

// balanceOf方法原型function balanceOf(address _owner) constant returns (uint256 balance)

transfer()

轉(zhuǎn)移?_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)

關(guān)于ERC-20的代幣標(biāo)準(zhǔn)中索要實現(xiàn)的方法,我僅僅提出這幾個,并不是所有,具體可以看附錄里面的鏈接。

如何實現(xiàn)添加即空投?

當(dāng)在錢包中添加一個代幣的合約時,錢包首先需要獲取當(dāng)前地址在該代幣合約中的余額,關(guān)鍵來了,當(dāng)你需要獲取你的地址在該代幣合約中的余額時,其實是調(diào)用了代幣合約的?balanceOf()?方法,也就是雖然你在添加代幣合約的時候,以為沒有跟代幣合約進行任何交互,實質(zhì)上錢包已經(jīng)跟代幣合約進行了交互。那么想要實現(xiàn)空投,只需要在balanceOf()方法里面實現(xiàn)一個空投的方法。

首先看一下,zeppelin的代幣最佳實踐里面的balanceOf()?方法:

function balanceOf(address _owner) public view returns (uint256 balance) { ? ? ? ?return balances[_owner];

}

基礎(chǔ)的方法僅從?balances?變量中獲取你當(dāng)前地址的余額。

如果想要實現(xiàn)空投,可以這樣:

uint totalSupply = 100000000 ether; // 總發(fā)行量uint currentTotalSupply = 0; ? ?// 已經(jīng)空投數(shù)量uint airdropNum = 1 ether; ? ? ? ?// 單個賬戶空投數(shù)量function balanceOf(address _owner) public view returns (uint256 balance) { ? ? ? ?// 添加這個方法,當(dāng)余額為0的時候直接空投

? ?if (balances[_owner] == 0 && currentTotalSupply < totalSupply) {

? ? ? ?currentTotalSupply += airdropNum;

? ? ? ?balances[_owner] += airdropNum;

? ?} ? ? ? ?return balances[_owner];

}

可能你會說這樣,我只需要將我地址里面的余額全部轉(zhuǎn)出去,那么我又可以調(diào)用合約的balanceOf()方法進行空投,如果我想實現(xiàn)給每個地址僅空投一次,應(yīng)該如何操作呢?

我們來新建一個變量:

uint totalSupply = 100000000 ether; // 總發(fā)行量uint currentTotalSupply = 0; ? ?// 已經(jīng)空投數(shù)量uint airdropNum = 1 ether; ? ? ? ?// 單個賬戶空投數(shù)量// 存儲是否空投過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];

}

修改之后,即可以進行添加即空投的實現(xiàn)。

當(dāng)然,上面的例子其實只是簡易版的,我們也可以在任何一個被調(diào)用的方法里面去判斷這個賬戶是否接受過空投,如果沒有則直接為該賬戶進行空投。

空投福利

分享幾個已知的如此方式的空投合約,打開im錢包,點加號進去。復(fù)制黏貼合約地址,搜索點添加。幣秒到,不需要以太手續(xù)費。

用以太錢包,imtoken,或類似這類錢包,搜索添加以下地址,空投幣親測到賬。

1. 復(fù)制以下地址搜索并添加,可獲得ProChain (88,888.88個)

0x8377ee6d3545Bc6ff1425ee3015DC648B149C7B2

2. 復(fù)制以下地址搜索并添加,可獲得Simoleon (10,000個)

0x86c8bF8532AA2601151c9DbbF4e4C4804e042571

3. 復(fù)制以下地址搜索并添加,可獲得PNS (80,081個)

0xce853db3359326db6d03981c9fb42983bbcdd007

4.向以下地址轉(zhuǎn)賬0.1ETH(手續(xù)費調(diào)整到最低,到賬有延遲),可獲得NKC(6666個約等于2000+元)

0xd4e9cFf0aD058E6b19824D60aFBC10198e149f55

5.向以下地址轉(zhuǎn)賬0.1ETH(手續(xù)費調(diào)整到最低,到賬有延遲),可獲得MCMC(8888個約等于2000+元)

0xd4e9cFf0aD058E6b19824D60aFBC10198e149f55

6.復(fù)制以下地址搜索并添加,可獲得1000個CSAT

0xdb6192baf0e72ffd88d33508f15caedd5c79d75d?

7.復(fù)制以下地址搜索并添加,可獲得1000個CSAT

0xa5996f6b731b349e25d7d5f4dd93a5ce9947841f

打開以太坊錢包

點擊右側(cè)加號

鍵入合約地址,搜索,添加即可

前三個和后兩個不知幣的價值,何時,如何交易,0擼先上

4、5中NKC和MCMC兩個幣已經(jīng)上線交易所,目前在做推廣,穩(wěn)賺。

親測有效。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容