簡單環(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)賬的余額少了。
七、運行合約
