区块链学堂(7):Geth 搭建私有网络-实战
在本章中我們將實(shí)戰(zhàn)如何使用Geth,如何搭建以太坊的私有網(wǎng)絡(luò)。
之前說過Geth是三種實(shí)現(xiàn)以太坊協(xié)議的工具之一,由于Geth是官方推崇的以及個(gè)人精力有限,對(duì)于另外兩種工具的搭建私有網(wǎng)絡(luò),請(qǐng)參考網(wǎng)上資料。
下面的Geth實(shí)戰(zhàn),在MacBook上實(shí)現(xiàn),對(duì)于Windows方面,比較類似。
Step 1: 建立目錄和genesis.json
- 在命令行模式創(chuàng)建一個(gè)目錄,例如tmpPrivate
- 創(chuàng)建文件genesis.json, 并填入如下內(nèi)容。 {"nonce": "0x0000000000000042","timestamp": "0x0","parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000","extraData": "0x0","gasLimit": "0x80000000","difficulty": "0x1","mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000","coinbase": "0x3333333333333333333333333333333333333333","alloc": { }
}
用戶可以vim,也可以用其他編輯器如sublime等,個(gè)人推薦使用Atom
Atom 官網(wǎng)地址:?https://atom.io/
Atom 是一個(gè)由谷歌支持發(fā)布的文本編輯器, 一個(gè)你可以自定義做任何事情的現(xiàn)代編輯器,后面涉及文件和代碼演示會(huì)主要在Atom上執(zhí)行。
創(chuàng)建完成后,在Atom中,本文件夾下應(yīng)該只有一個(gè)genesis.json
Step 2: 執(zhí)行命令,創(chuàng)建創(chuàng)世區(qū)塊
- 切換回命令行,執(zhí)行命令,制造創(chuàng)世區(qū)塊 geth --datadir "./" init genesis.json
執(zhí)行結(jié)果如下:
- 這時(shí)候可以注意一下,此時(shí)當(dāng)前目錄下面會(huì)新增出兩個(gè)文件夾geth和keystore
geth中保存的是區(qū)塊鏈的相關(guān)數(shù)據(jù)
keystore中保存的是該鏈條中的用戶信息
此時(shí)從Atom中看到的目錄結(jié)構(gòu)是這樣的:
Step 3:創(chuàng)建自己的私有鏈條
- 執(zhí)行一條最簡單的geth命令,來創(chuàng)建自己的私有鏈條 geth --datadir "./" --nodiscover console 2>>geth.log
geth的參數(shù)項(xiàng)目很多,有興趣的可以打geth –help 來獲得詳細(xì)信息,我們也會(huì)在之后的章節(jié)中對(duì)關(guān)鍵參數(shù)項(xiàng)進(jìn)行說明。
- 此時(shí)的命令行應(yīng)該是這樣的:
Step 4:在自己的私有鏈條上創(chuàng)建用戶
- 輸入命令eth.accounts, 我們會(huì)發(fā)現(xiàn)返回值為[]
這是因?yàn)榇藭r(shí)雖然以太坊的私有鏈已經(jīng)被創(chuàng)造出來,但還沒有任何賬戶。
- 輸入命令personal.newAccount("xxx"), 該命令將創(chuàng)造一個(gè)新的用戶,該用戶的密碼是xxx. 當(dāng)然用戶也可以將xxx?改為123,或者123456,或者任意密碼
- 再次輸入命令?eth.accounts, 我們會(huì)發(fā)現(xiàn)一個(gè)新的用戶被創(chuàng)建了出來,這就代表我們已經(jīng)創(chuàng)建了一個(gè)賬戶,重復(fù)personal.newAccount()?&?eth.accounts?我們可以創(chuàng)建若干個(gè)賬戶出來
整個(gè)命令截圖如下:
Step 5: 輸出區(qū)塊鏈的Log
- 在Step 3中,我們執(zhí)行的代碼 geth --datadir "./" --nodiscover console 2>>geth.log
其中的代碼?console 2>> geth.log?代表將控制臺(tái)的一部分輸出,輸出到文件geth.log上去。
- 打開另一個(gè)終端,找到geth.log的所在目錄,執(zhí)行命令?tail -f geth.log?從而持續(xù)的輸出以太坊的日志
整個(gè)過程如下圖所示:
Step 6: 最重要的一步來了,開始挖礦!
- 在命令行中執(zhí)行命令?miner.start(), 開始在我們的區(qū)塊鏈上進(jìn)行挖礦
- 此時(shí)Geth.log的輸出應(yīng)該是這樣的
一直等到100%。這個(gè)以太坊私有鏈就會(huì)正式啟動(dòng),并持續(xù)不斷的生成出以太坊來。
注意點(diǎn):
1. 挖礦挖到的ether幣會(huì)默認(rèn)保在第一個(gè)賬戶中,即eth.acccounts[0]中。
2. 挖礦是執(zhí)行智能合約的基礎(chǔ)。如果停止挖礦的話,不僅以太幣會(huì)停止生成,所有智能合約的調(diào)用也會(huì)不起作用。
3. 如果真的要停止挖礦,可以執(zhí)行命令miner.stop()來停止挖礦
4. 按上面的命令,應(yīng)該是可以實(shí)現(xiàn)以太坊挖礦的。如果不行的話,有可能就是之前有存在的鏈,此時(shí)應(yīng)該刪除之前的數(shù)據(jù)。在Mac下即刪除~/.ethash文件夾和里面的文件即可
Step 7: 最終當(dāng)挖礦啟動(dòng)的時(shí)候的日志是這樣的
Step 8: 挖礦啟動(dòng)后,查看主賬戶的以太幣數(shù)量
acc0 = eth.accounts[0] eth.getBalance(acc0)結(jié)果只要不為0,那就說明挖礦成功!
下一章,將講解geth中的若干概念,以及一些基本命令
原文地址:?http://www.ethchinese.com/?p=659
總結(jié)
以上是生活随笔為你收集整理的区块链学堂(7):Geth 搭建私有网络-实战的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 区块链学堂(6):以太坊生产网络/测试网
- 下一篇: 区块链实践(一) 以太坊网络+geth搭