在本章中我們將實戰如何使用Geth,如何搭建以太坊的私人網路。
之前說過Geth是三種實現以太坊協議的工具之一,由於Geth是官方推崇的以及個人精力有限,對於另外兩種工具的搭建私人網路,請參考網上資料。
下面的Geth實戰,在MacBook上實現,對於Windows方面,比較類似。 Step 1: 建立目錄和genesis.json 在命令列模式建立一個目錄,例如tmpPrivate
建立檔案genesis.json, 並填入如下內容。
{ "nonce": "0x0000000000000042", "timestamp": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "extraData": "0x0", "gasLimit": "0x80000000", "difficulty": "0x1", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": { }}
建議修改:{ "config": { "chainId": 15, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "coinbase" : "0x0000000000000000000000000000000000000000", "difficulty" : "0x40000", "extraData" : "", "gasLimit" : "0xffffffff", "nonce" : "0x0000000000000042", "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp" : "0x00", "alloc": { }}
使用者可以vim,也可以用其他編輯器如sublime等,個人推薦使用Atom Atom 官網地址: https://atom.io/
Atom 是一個由Google支援發布的文字編輯器, 一個你可以自訂做任何事情的現代編輯器,後面涉及檔案和代碼示範會主要在Atom上執行。
建立完成後,在Atom中,本檔案夾下應該只有一個genesis.json
Step 2: 執行命令,建立創世區塊 切換回命令列,執行命令,製造創世區塊
geth --datadir "./" init genesis.json
執行結果如下:
這時候可以注意一下,此時目前的目錄下面會新增出兩個檔案夾geth和keystore geth中儲存的是區塊鏈的相關資料 keystore中儲存的是該鏈條中的使用者資訊
此時從Atom中看到的目錄結構是這樣的:
Step 3:建立自己的私人鏈條 執行一條最簡單的geth命令,來建立自己的私人鏈條
geth --datadir "./" --nodiscover console 2>>geth.log
geth的參數項目很多,有興趣的可以打geth –help 來獲得詳細資料,我們也會在之後的章節中對關鍵參數項進行說明。 此時的命令列應該是這樣的:
Step 4:在自己的私人鏈條上建立使用者 輸入命令eth.accounts, 我們會發現傳回值為[]
這是因為此時雖然以太坊的私人鏈已經被創造出來,但還沒有任何賬戶。 輸入命令personal.newAccount("xxx"), 該命令將創造一個新的使用者,該使用者的密碼是xxx. 當然使用者也可以將xxx改為123,或者123456,或者任意密碼 再次輸入命令 eth.accounts, 我們會發現一個新的使用者被建立了出來,這就代表我們已經建立了一個賬戶,重複personal.newAccount() ð.accounts 我們可以建立若干個賬戶出來
整個命令截圖如下:
Step 5: 輸出區塊鏈的Log 在Step 3中,我們執行的代碼
geth --datadir "./" --nodiscover console 2>>geth.log
其中的代碼 console 2>> geth.log 代表將控制台的一部分輸出,輸出到檔案geth.log上去。 開啟另一個終端,找到geth.log的所在目錄,執行命令 tail -f geth.log 從而持續的輸出以太坊的日誌
整個過程如下圖所示:
Step 6: 最重要的一步來了,開始挖礦。 在命令列中執行命令 miner.start(), 開始在我們的區塊鏈上進行挖礦
此時Geth.log的輸出應該是這樣的
一直等到100%。這個以太坊私人鏈就會正式啟動,並持續不斷的產生出以太坊來。 注意點: 1. 挖礦挖到的ether幣會預設保在第一個賬戶中,即eth.acccounts[0]中。 2. 挖礦是執行智能合約的基礎。如果停止挖礦的話,不僅以太幣會停止產生,所有智能合約的調用也會不起作用。 3. 如果真的要停止挖礦,可以執行命令miner.stop()來停止挖礦 4. 按上面的命令,應該是可以實現以太坊挖礦的。如果不行的話,有可能就是之前有存在的鏈,此時應該刪除之前的資料。在Mac下即刪除~/.ethash檔案夾和裡面的檔案即可 Step 7: 最終當挖礦啟動的時候的日誌是這樣的
Step 8: 挖礦啟動後,查看主賬戶的以太幣數量
acc0 = eth.accounts[0]eth.getBalance(acc0)
結果只要不為0,那就說明挖礦成功。
下一章,將講解geth中的若干概念,以及一些基本命令
原文連結:http://www.ethchinese.com/?p=659