通過各方資料瞭解學習之後,決定自己開始搭建基於以太坊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,以開發模式啓動。
看到一下輸出說明啓動成功,並且是使用的私有鏈:
隨後就是相關的命令操作,在下一篇博客中進一步說明。