基於以太坊構建私有區塊鏈網路教程指南

bladestone發表於2017-07-02

0. 私有區塊鏈網路

在一般的應用場景下,除了大家取挖礦參與之外,還有一種應用場景就是自己建立私有的區塊鏈網路,滿足自己特有的業務需求和場景。

1. 下載Geth客戶端

官方站點: https://geth.ethereum.org
Github: https://github.com/ethereum/go-ethereum

由於某些未知原因,在嘗試官方站點下載geth客戶端的時候,下載頁面一直在loading狀態,基本無法下載相應的安裝包,如下圖所示:
 這裡寫圖片描述
一般建議大家參照wiki的資訊: https://github.com/ethereum/go-ethereum/wiki/Building-Ethereum
比如筆者所使用的是Ubuntu系統,可以直接參照wiki的內容進行安裝。

2. 在Ubuntu上安裝指南

安裝指南:

sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum

當然大家也可以選擇從原始碼中直接編譯安裝,具體資訊可以參照指南上的資訊。

3. 配置創世紀的配置檔案

大家可以參照以下配置檔案,genesis.json:

{
“nonce”: “0x0000000000000042”,
“timestamp”: “0x00”,
“parentHash”: “0x0000000000000000000000000000000000000000000000000000000000000000”,
“extraData”: “0x00”,
“gasLimit”: “0x80000000”,
“difficulty”: “0x400”,
“mixhash”: “0x0000000000000000000000000000000000000000000000000000000000000000”,
“coinbase”: “0x3333333333333333333333333333333333333333”,
“alloc”: { },
“config”:{
“chainId”:15,
“homesteadBlock”:0,
“eip155Block”:0,
“eip158Block”:0
}
}

然後,開啟命令列,初始化配置檔案.
這裡寫圖片描述

geth –datadir “/home/bladestone/codebase/blocks/chain” init genesis.json

這裡介紹一下上述各個引數的功能描述:
- mixhash
與nonce配合用於挖礦,由上一個區塊的一部分生成的hash
- nonce
nonce就是一個64位隨機數,用於挖礦
- difficulty
設定當前區塊的難度,如果難度過大,cpu挖礦就很難,這裡設定較小難度
- alloc
用來預置賬號以及賬號的以太幣數量,因為私有鏈挖礦比較容易,所以我們不需要預置有幣的賬號,需要的時候自己建立即可以。
- coinbase
礦工的賬號,隨便填, 說明: 偶數位,且0x開頭
- timestamp
設定創世塊的時間戳
- parentHash
上一個區塊的hash值,因為是創世塊,所以這個值是0
- extraData
附加資訊,隨便填,可以填你的個性資訊
- gasLimit
該值設定對GAS的消耗總量限制,用來限制區塊能包含的交易資訊總和,因為我們是私有鏈,所以填最大。

4. 建立私有網路

sudo geth –identity “myfirstblock” –rpc –rpcport “8078” –rpccorsdomain “*” –datadir=”/home/bladestone/codebase/blocks/chain” –port “30303” –nodiscover –rpcapi “db,eth,net, web3” –networkid 1006 init /home/bladestone/codebase/blocks/genesis.json

如下圖所示:
這裡寫圖片描述

  • identity
    區塊鏈的標示,隨便填寫,用於標示目前網路的名字
  • init
    指定創世塊檔案的位置,並建立初始塊
  • datadir
    設定當前區塊鏈網路資料存放的位置
  • port
    網路監聽埠
  • rpc
    啟動rpc通訊,可以進行智慧合約的部署和除錯
  • rpcapi
    設定允許連線的rpc的客戶端,一般為db,eth,net,web3
  • networkid
    設定當前區塊鏈的網路ID,用於區分不同的網路,是一個數字
  • console
    設定當前區塊鏈的網路ID,用於區分不同的網路,是一個數字

5. 啟動控制檯,建立使用者,並開始挖礦

geth –datadir “/home/bladestone/codebase/blocks/chain/” –nodiscover console 2>>geth.log
執行效果圖示:
這裡寫圖片描述

進入geth命令列,建立使用者,然後啟動mine挖礦
接下來,我們檢視日誌geth.log:
這裡寫圖片描述

從這裡可以看出, 建立的私有網路已經開始挖礦了….

6. 總結

 以太坊是目前業界比較成熟的一種基於區塊鏈技術的一種框架,允許開發者在其上二次開放,定製出紛繁精彩的區塊鏈應用,所以這就要求所有的從業者都要思考區塊鏈技術的本質以及應用場景。

7. 參考資料

相關文章