簡(jiǎn)單環(huán)境搭建---實(shí)現(xiàn)簡(jiǎn)單Hello World合約
我這里將使用當(dāng)前最活躍的智能合約開(kāi)發(fā)框架truffle為基礎(chǔ)來(lái)開(kāi)發(fā)帘睦。
就像一般網(wǎng)站或App開(kāi)發(fā)一樣钞翔,在提供公開(kāi)服務(wù)之前彼绷,開(kāi)發(fā)者會(huì)在自己用于寫(xiě)程序的電腦(又稱(chēng)作本機(jī))或透過(guò)測(cè)試網(wǎng)絡(luò)來(lái)測(cè)試程序執(zhí)行的效果离陶,測(cè)試完成后戴差,才會(huì)部署到公開(kāi)的網(wǎng)絡(luò)上提供服務(wù)乱投。開(kāi)發(fā)區(qū)塊鏈智能合約(程序)的過(guò)程也是如此咽笼。特別是公開(kāi)鏈上所有寫(xiě)入或讀取計(jì)算結(jié)果的操作都需要真金白銀(虛擬代幣),而且根據(jù)網(wǎng)絡(luò)狀況戚炫,每個(gè)公開(kāi)鏈上的操作都需要要一小段反應(yīng)時(shí)間(15秒~數(shù)分鐘)剑刑,這些等待頗浪費(fèi)寶貴的開(kāi)發(fā)時(shí)間。因此在開(kāi)發(fā)的過(guò)程中,我將使用geth客戶(hù)端施掏,啟動(dòng)一個(gè)以太坊(開(kāi)發(fā)者)網(wǎng)絡(luò)節(jié)點(diǎn)钮惠。
此外,開(kāi)發(fā)前還需準(zhǔn)備一個(gè)合手的編輯器七芭。我目前是使用Remix -Solidity IDE來(lái)開(kāi)發(fā)素挽。
一、Solidity安裝
強(qiáng)烈建議新手使用Remix -Solidity IDE來(lái)進(jìn)行開(kāi)發(fā)狸驳。
Remix 是一個(gè)基于瀏覽器的Solidity预明,就可以不用安裝Solidity,本文的Hello World也將基于Remix Solidity IDE來(lái)進(jìn)行耙箍。
二撰糠、geth 安裝
git clone https://github.com/ethereum/go-ethereum
sudo apt-get install -y build-essential golang
cd go-ethereum?
make geth
安裝完以后,就是把geth控制臺(tái)啟動(dòng)究西。
三、啟動(dòng)環(huán)境
geth --datadir testNet --dev console 2>> test.log
執(zhí)行命名后物喷,會(huì)進(jìn)入geth控制臺(tái)卤材,這時(shí)光標(biāo)停在一個(gè)向右的箭頭處,如下圖:
命令參數(shù)說(shuō)明(更多命令詳解我會(huì)在接下來(lái)博文中介紹):
–dev?啟用開(kāi)發(fā)者網(wǎng)絡(luò)(模式)峦失,開(kāi)發(fā)者網(wǎng)絡(luò)會(huì)使用POA共識(shí)扇丛,默認(rèn)預(yù)分配一個(gè)開(kāi)發(fā)者賬戶(hù)并且會(huì)自動(dòng)開(kāi)啟挖礦。
–datadir?后面的參數(shù)是區(qū)塊數(shù)據(jù)及秘鑰存放目錄尉辑。
第一次輸入命令后帆精,它會(huì)放在當(dāng)前目錄下新建一個(gè)testNet目錄來(lái)存放數(shù)據(jù)。
console?進(jìn)入控制臺(tái)
2>> test.log?表示把控制臺(tái)日志輸出到test.log文件
四隧魄、準(zhǔn)備賬戶(hù)
部署智能合約需要一個(gè)外部賬戶(hù)卓练,先來(lái)看看分配的開(kāi)發(fā)者賬戶(hù),在控制臺(tái)使用以下命令查看賬戶(hù):
再來(lái)看一下賬戶(hù)里的余額购啄,使用一下命令:
eth.getBalance(eth.accounts[0])
eth.accounts[0]表示賬戶(hù)列表第一個(gè)賬戶(hù)
開(kāi)發(fā)者賬戶(hù)因余額太多襟企,如果用這個(gè)賬戶(hù)來(lái)部署合約時(shí)會(huì)無(wú)法看到余額變化,為了更好的體驗(yàn)完整的過(guò)程狮含,這里選擇創(chuàng)建一個(gè)新的賬戶(hù)顽悼。
創(chuàng)建賬戶(hù)
使用以下命令創(chuàng)建賬戶(hù):
personal.newAccount("xitou")? ? xitou為新賬戶(hù)的密碼,回車(chē)后几迄,返回一個(gè)新賬戶(hù)蔚龙。
現(xiàn)在查看下賬戶(hù)列表:
可以看到賬戶(hù)包含兩個(gè)賬戶(hù),新賬戶(hù)在第二個(gè)(索引為1)位置映胁。
現(xiàn)在看看賬戶(hù)的余額:
可以看到新賬戶(hù)的余額為0
給新賬戶(hù)轉(zhuǎn)賬
我們知道沒(méi)有余額的賬戶(hù)是沒(méi)法部署合約的木羹,那就從默認(rèn)賬戶(hù)轉(zhuǎn)1以太幣給新賬戶(hù),使用以下命令(請(qǐng)使用你自己eth.accounts對(duì)應(yīng)輸出的賬戶(hù)):
eth.sendTransaction({from:'0xd39e4470d6cb34b1efdbc500ca08e6bccb7715ea', to:'0x2df65f4920e2f4d69c48e070bfc08f6cc5f67c66', value: web3.toWei(1, "ether")})
再次查看新賬戶(hù)余額解孙,可以新賬戶(hù)有1個(gè)以太幣
解鎖賬戶(hù)
在部署合約前需要先解鎖賬戶(hù)(就像銀行轉(zhuǎn)賬要輸入密碼一樣)汇跨,使用以下命令:
personal.unlockAccount(eth.accounts[1],"xitou")
解鎖成功后务荆,賬戶(hù)就準(zhǔn)備完畢,接下來(lái)就是編寫(xiě)合約代碼穷遂。
五函匕、編寫(xiě)合約代碼
現(xiàn)在來(lái)開(kāi)始編寫(xiě)第一個(gè)智能合約代碼,solidity代碼如下:
在彈出的對(duì)話框中找到WEB3DEPLOY部分蚪黑,點(diǎn)復(fù)制盅惜,粘貼到編輯器后,修改相應(yīng)信息即可忌穿。
六抒寂、部署合約
將修改后的代碼,復(fù)制回geth控制臺(tái)里掠剑,回車(chē)后屈芜,看到輸出:
說(shuō)明合約已經(jīng)部署成功。
現(xiàn)在查看下新賬戶(hù)的余額:
是不是比之前轉(zhuǎn)賬的余額少了朴译。