以太坊智能合約編寫(二)

簡單環(huán)境搭建---實現(xiàn)簡單Hello World合約


我這里將使用當前最活躍的智能合約開發(fā)框架truffle為基礎(chǔ)來開發(fā)。

就像一般網(wǎng)站或App開發(fā)一樣,在提供公開服務(wù)之前,開發(fā)者會在自己用于寫程序的電腦(又稱作本機)或透過測試網(wǎng)絡(luò)來測試程序執(zhí)行的效果,測試完成后,才會部署到公開的網(wǎng)絡(luò)上提供服務(wù)。開發(fā)區(qū)塊鏈智能合約(程序)的過程也是如此。特別是公開鏈上所有寫入或讀取計算結(jié)果的操作都需要真金白銀(虛擬代幣),而且根據(jù)網(wǎng)絡(luò)狀況,每個公開鏈上的操作都需要要一小段反應(yīng)時間(15秒~數(shù)分鐘),這些等待頗浪費寶貴的開發(fā)時間。因此在開發(fā)的過程中,我將使用geth客戶端,啟動一個以太坊(開發(fā)者)網(wǎng)絡(luò)節(jié)點。

此外,開發(fā)前還需準備一個合手的編輯器。我目前是使用Remix -Solidity IDE來開發(fā)。


一、Solidity安裝

強烈建議新手使用Remix -Solidity IDE來進行開發(fā)。

Remix 是一個基于瀏覽器的Solidity,就可以不用安裝Solidity,本文的Hello World也將基于Remix Solidity IDE來進行。

二、geth 安裝

git clone https://github.com/ethereum/go-ethereum

sudo apt-get install -y build-essential golang

cd go-ethereum?

make geth

安裝完以后,就是把geth控制臺啟動。

三、啟動環(huán)境

geth --datadir testNet --dev console 2>> test.log

執(zhí)行命名后,會進入geth控制臺,這時光標停在一個向右的箭頭處,如下圖:


命令參數(shù)說明(更多命令詳解我會在接下來博文中介紹):

–dev?啟用開發(fā)者網(wǎng)絡(luò)(模式),開發(fā)者網(wǎng)絡(luò)會使用POA共識,默認預(yù)分配一個開發(fā)者賬戶并且會自動開啟挖礦。

–datadir?后面的參數(shù)是區(qū)塊數(shù)據(jù)及秘鑰存放目錄。

第一次輸入命令后,它會放在當前目錄下新建一個testNet目錄來存放數(shù)據(jù)。

console?進入控制臺

2>> test.log?表示把控制臺日志輸出到test.log文件

四、準備賬戶

部署智能合約需要一個外部賬戶,先來看看分配的開發(fā)者賬戶,在控制臺使用以下命令查看賬戶:


再來看一下賬戶里的余額,使用一下命令:

eth.getBalance(eth.accounts[0])


eth.accounts[0]表示賬戶列表第一個賬戶

開發(fā)者賬戶因余額太多,如果用這個賬戶來部署合約時會無法看到余額變化,為了更好的體驗完整的過程,這里選擇創(chuàng)建一個新的賬戶。

創(chuàng)建賬戶

使用以下命令創(chuàng)建賬戶:

personal.newAccount("xitou")? ? xitou為新賬戶的密碼,回車后,返回一個新賬戶。


現(xiàn)在查看下賬戶列表:


可以看到賬戶包含兩個賬戶,新賬戶在第二個(索引為1)位置。

現(xiàn)在看看賬戶的余額:


可以看到新賬戶的余額為0

給新賬戶轉(zhuǎn)賬

我們知道沒有余額的賬戶是沒法部署合約的,那就從默認賬戶轉(zhuǎn)1以太幣給新賬戶,使用以下命令(請使用你自己eth.accounts對應(yīng)輸出的賬戶):

eth.sendTransaction({from:'0xd39e4470d6cb34b1efdbc500ca08e6bccb7715ea', to:'0x2df65f4920e2f4d69c48e070bfc08f6cc5f67c66', value: web3.toWei(1, "ether")})

再次查看新賬戶余額,可以新賬戶有1個以太幣



解鎖賬戶

在部署合約前需要先解鎖賬戶(就像銀行轉(zhuǎn)賬要輸入密碼一樣),使用以下命令:

personal.unlockAccount(eth.accounts[1],"xitou")


解鎖成功后,賬戶就準備完畢,接下來就是編寫合約代碼。

五、編寫合約代碼

現(xiàn)在來開始編寫第一個智能合約代碼,solidity代碼如下:


在彈出的對話框中找到WEB3DEPLOY部分,點復(fù)制,粘貼到編輯器后,修改相應(yīng)信息即可。


六、部署合約

將修改后的代碼,復(fù)制回geth控制臺里,回車后,看到輸出:


說明合約已經(jīng)部署成功。

現(xiàn)在查看下新賬戶的余額:


是不是比之前轉(zhuǎ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)容