本文將介紹如何在以太坊智慧型合約中實現代幣的空投。區塊鏈世界中所謂空投(airdrop),就是免費給你的區塊鏈位址(公鑰)傳送代幣。
代幣空投的方式層出不窮,有手工打幣空投的,也有向代幣合約轉賬進行空投的,還可以無需轉賬,只需要將代幣合約位址新增到imtoken錢包中去,就可以實現代幣空投。本文將介紹這種無須動手的以太坊代幣空投實現**。
採用以太坊建立的erc-20代幣,指的是遵循erc-20標準的代幣,該標準指出,在代幣合約中需要實現以下方法:
// balanceof方法原型
function balanceof(address _owner) constant returns (uint256 balance)
// transfer方法原型
function transfer(address _to, uint256 _value) returns (bool success)
從位址_from傳送數量為_value的token到位址_to
// transferfrom方法原型
function transferfrom(address _from, address _to, uint256 _value) returns (bool success)
這裡僅列出erc-20的代幣標準中要實現的部分方法,具體可以檢視erc20規範。
當在錢包中新增乙個代幣的合約時,錢包首先需要獲取當前位址在該代幣合約中的餘額,這時錢包會呼叫了代幣合約的 balanceof() 方法,也就是雖然你在新增代幣合約的時候。因此想要實現空投,只需要在balanceof()方法裡面實現乙個空投的方法。
首先看一下,乙個基本的balanceof() 方法實現**:
function balanceof(address _owner) public view returns (uint256 balance)
基礎的方法僅從 balances 變數中獲取你當前位址的餘額。
如果想要實現空投,可以這樣:
uint totalsupply = 100000000 ether; // 總發行量
uint currenttotalsupply = 0; // 已經空投數量
uint airdropnum = 1 ether; // 單個賬戶空投數量
function balanceof(address _owner) public view returns (uint256 balance)
return balances[_owner];
}
可能你會說這樣,我只需要將我位址裡面的餘額全部轉出去,那麼我又可以呼叫合約的balanceof()方法進行空投,如果我想實現給每個位址僅空投一次,應該如何操作呢?
我們來新建乙個變數:
uint totalsupply = 100000000 ether; // 總發行量
uint currenttotalsupply = 0; // 已經空投數量
uint airdropnum = 1 ether; // 單個賬戶空投數量
// 儲存是否空投過
// 修改後的balanceof方法
function balanceof(address _owner) public view returns (uint256 balance)
return balances[_owner];
}
修改之後,即可以進行新增即空投的實現。
當然,上面的例子其實只是簡易版的,我們也可以在任何乙個被呼叫的方法裡面去判斷這個賬戶是否接受過空投,如果沒有則直接為該賬戶進行空投。
以太坊智慧型合約中實現代幣空投
本文將介紹如何在以太坊智慧型合約中實現代幣的空投。區塊鏈世界中所謂空投 airdrop 就是免費給你的區塊鏈位址 公鑰 傳送代幣。代幣空投的方式層出不窮,有手工打幣空投的,也有向代幣合約轉賬進行空投的,還可以無需轉賬,只需要將代幣合約位址新增到imtoken錢包中去,就可以實現代幣空投。本文將介紹這...
以太坊智慧型合約部署代幣
pragma solidity 0.4.0 建立乙個基礎合約,用於指定某些操作只能由合約擁有者 執行 contract owned 宣告乙個修改器,證明只有合約擁有者才能執行某些操作 modifier onlyownerelse 此函式的功能是把合約轉讓給指定使用者 function transfe...
智慧型合約 以太坊
智慧型合約是執行在可複製 共享的賬本上的電腦程式,可以處理資訊,接收 儲存和傳送價值。2.1 什麼是以太坊 以太坊 ethereum 是乙個分布式計算機,有許多的節點,其中的每乙個節點都會執行智慧型合約,然後把結果存在區塊鏈上。由於整個網路是分布式的,且應用就是乙個個的狀態組成,儲存了狀態就有了服務...