二、區塊鏈搭建環境 go-ethereum

通過各方資料瞭解學習之後,決定自己開始搭建基於以太坊go-ethereum的私有鏈環境。由於本人的電腦系統爲win8,爲避免window環境出現過多莫名其妙的問題,特意通過vm搭建了一臺ubuntu16.04版本的虛擬系統。以下內容均基於ubuntu16.04系統。

go-ethereum客戶端

下載地址&參考手冊

首先,可以查看一下go-ethereum項目在git上的地址:
https://github.com/ethereum/Go-ethereum

可以在點擊項目上的wiki標籤,也可以通過一下地址訪問wiki:
https://github.com/ethereum/Go-ethereum/wiki/Building-Ethereum

在wiki頁面選擇ubuntu系統的安裝說明,也可以直接訪問下面鏈接:
https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Ubuntu

ubuntu下安裝命令

打開命令行窗口,或通過快捷鍵CTL+ALT+T,依次輸入以下命令,即可安裝成功:

sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo add-apt-repository -y ppa:ethereum/ethereum-dev
sudo apt-get update
sudo apt-get install ethereum
  • 1
  • 2
  • 3
  • 4
  • 5

PS:如果安裝過程中需要依賴其他組件,則先安裝其他組件。另外,在ubuntu16.04版本,sudo apt-get install命令可精簡爲sudo apt install。

安裝測試

安裝完成之後在命令行輸入:

geth --help
  • 1

如果現實出命令行各種參數提示信息,則說明安裝成功。

創世塊

在以上安裝成功之後,直接啓動,即可連接公有鏈。現在通過配置創世塊來創建私有鏈。同一個網絡中,創世塊必須是一樣的,否則無法聯通。

創建一個eth的根目錄,在根目錄下新建創世塊json文件piccgenesis.json。內容如下:

{
 "nonce":"0x0000000000000042",
 "mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
 "difficulty": "0x4000",
 "alloc": {},
 "coinbase":"0x0000000000000000000000000000000000000000",
 "timestamp": "0x00",
 "parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
 "extraData": "SecBroBlock",
 "gasLimit":"0x0000ffff"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

參數解釋:

參數名稱 參數描述
mixhash 與nonce配合用於挖礦,由上一個區塊的一部分生成的hash。注意他和nonce的設置需要滿足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章節所描述的條件。
nonce nonce就是一個64位隨機數,用於挖礦,注意他和mixhash的設置需要滿足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章節所描述的條件。
difficulty 設置當前區塊的難度,如果難度過大,cpu挖礦就很難,這裏設置較小難度
alloc 用來預置賬號以及賬號的以太幣數量,因爲私有鏈挖礦比較容易,所以我們不需要預置有幣的賬號,需要的時候自己創建即可以。
coinbase 礦工的賬號,隨便填
timestamp 設置創世塊的時間戳
parentHash 上一個區塊的hash值,因爲是創世塊,所以這個值是0
extraData 附加信息,隨便填,可以填你的個性信息
gasLimit 該值設置對GAS的消耗總量限制,用來限制區塊能包含的交易信息總和,因爲我們是私有鏈,所以填最大。

啓動私有鏈節點

啓動私有節點所需參數

參數名稱 參數描述
identity 區塊鏈的標示,隨便填寫,用於標示目前網絡的名字
init 指定創世塊文件的位置,並創建初始塊
datadir 設置當前區塊鏈網絡數據存放的位置
port 網絡監聽端口
rpc 啓動rpc通信,可以進行智能合約的部署和調試
rpcapi 設置允許連接的rpc的客戶端,一般爲db,eth,net,web3
networkid 設置當前區塊鏈的網絡ID,用於區分不同的網絡,是一個數字
console 啓動命令行模式,可以在Geth中執行命令

初始化&啓動

本人啓動eth所在目錄爲:

/home/zhuzs/eth
  • 1

此目錄下放置剛纔配置好的創世塊json文件:piccgenesis.json

初始化

初始化創世塊有兩種方法:
方法一:執行命令先進行初始化(注意需要在你準備防止eth的根目錄下執行)

$ geth init /path/to/genesis.json
  • 1

方法二:在執行啓動命令的參數中添加以下參數

--genesis /path/to/genesis.json
  • 1

以上兩種方案注意path路徑進行對應的替換;

啓動

因此直接執行如下命令:

geth --identity "secbro etherum" --rpc --rpccorsdomain "*" --datadir "/home/zhuzs/eth/chain" --port "30303" --rpcapi "db,eth,net,web3" -- networkid 95518 console --dev 
  • 1

PS:根據自己的環境進行對應的替換。注意,最後添加了–dev,以開發模式啓動。

看到一下輸出說明啓動成功,並且是使用的私有鏈:
這裏寫圖片描述

隨後就是相關的命令操作,在下一篇博客中進一步說明。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章