以太坊私有鏈環境搭建
本文先以Windows為例,後面上線到Ubuntu,再補充Ubuntu的搭建方法。
Windows必須64位系統,從官方網站下載編譯好的win64客戶端,解壓縮即可執行,下載地址如下:
http://upyun-assets.ethfans.org/geth/1-7-3/geth-windows-amd64-1.7.3-4bb3c89d.exe
下載後,只有一個Geth.exe的檔案。
安裝影象化客戶端Ethereum-Wallet,依然是從官方地址下載編譯好的客戶端即可,下載地址:
http://upyun-assets.ethfans.org/wallets/0-9-3/Ethereum-Wallet-installer-0-9-3.exe
下載解壓縮後,Ethereum-Wallet即為以太坊圖形化介面。
配置自己的創世塊是為了區分公有鏈,同一個網路中,創世塊必須是一樣的,否則無法聯通,此方法在windows和Ubuntu下通用。
在Geth安裝目錄 新建檔案genesis.json,輸入如下內容並儲存
{"config": {
"chainId": 10,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x02000000",
"extraData" : "",
"gasLimit" : "0x2fefd8",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
解釋一下各個引數的作用:
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的消耗總量限制,用來限制區塊能包含的交易資訊總和,因為我們是私有鏈,所以填最大。 |
四、 啟動私有鏈節點
啟動Geth即可以啟動以太坊的區塊鏈,為了構建私有鏈 ,需要在Geth啟動時加入一些引數,Geth引數含義如下:
identity |
區塊鏈的標示,隨便填寫,用於標示目前網路的名字 |
init |
指定創世塊檔案的位置,並建立初始塊 |
datadir |
設定當前區塊鏈網路資料存放的位置 |
port |
網路監聽埠 |
rpc |
啟動rpc通訊,可以進行智慧合約的部署和除錯 |
rpcapi |
設定允許連線的rpc的客戶端,一般為db,eth,net,web3 |
networkid |
設定當前區塊鏈的網路ID,用於區分不同的網路,是一個數字 |
console |
啟動命令列模式,可以在Geth中執行命令 |
cmd 進入到Geth目錄,輸入命令
geth –datadir “%cd%\chain” init genesis.json 將創世塊資訊初始化
鍵入 geth –datadir “%cd%\chain” console 開啟geth的控制檯
在控制檯鍵入 personal.newAccount(‘123.abc’) 建立使用者 123.abc 為使用者的密碼,自定義即可(該使用者用來啟動私有鏈時的礦工)
鍵入 exit 退出geth控制檯
鍵入 geth –targetgaslimit 4294967295 –rpc –rpcaddr “192.168.0.108” –rpcport “8101” –port “30301” –rpcapi “eth,web3,personal” –networkid 2016 –identity 2016 -nodiscover -maxpeers 5 –datadir “%cd%\chain” -unlock 0 -rpccorsdomain “*” –mine console 啟動私有鏈節點
註釋
targetgaslimit –每個塊的gas上限,這裡可以暫時理解為容量 rpc –啟動rpc通訊,可以進行智慧合約的部署和除錯 rpcaddr –rpc介面的地址 rpcport –rpc介面的埠號 port –網路監聽埠,用於節點之間通訊 rpcapi –設定rpc的範圍,暫時開啟eth,web3,personal足夠 networkid –設定當前區塊鏈的網路ID,是一個數字,可以隨便寫 identity –區塊鏈的標示,隨便填寫,用於標示目前網路的名字 nodiscover 禁止被網路中其它節點發現,需要手動新增該節點到網路 maxpeers 最大節點數量 datadir –設定當前區塊鏈網路資料存放的位置 unlock –解鎖某使用者(此處用使用者座標來控制,解鎖後的使用者呼叫介面發起交易時,不要需要提供密碼) rpccorsdomain 限制rpc訪問源的ip,代表不限制 mine 允許挖礦 console –啟動命令列模式,可以在Geth中執行命令*
鍵入回車
命令列中出現Passphrase:
鍵入 剛才建立使用者是定義的密碼
然後等待出現類似如下資訊時:
I1208 17:49:49.023354 ethash.Go:291] Generating DAG: 0%
I1208 17:49:55.636941 ethash.go:291] Generating DAG: 1%
I1208 17:50:01.952089 ethash.go:291] Generating DAG: 2%
I1208 17:50:08.887566 ethash.go:291] Generating DAG: 3%
I1208 17:50:15.176846 ethash.go:291] Generating DAG: 4%
I1208 17:50:21.314108 ethash.go:291] Generating DAG: 5%
I1208 17:50:27.396949 ethash.go:291] Generating DAG: 6%
則證明開始建立創世塊,等待進度至100%後,便會開始挖礦了。
這時,解壓以太坊錢包到任意目錄(本文以d盤ethwallet為例)
開啟ethwallet資料夾,執行Ethereum-Wallet.exe
出現如下畫面
關閉該視窗
出現如下視窗
如果右上角出現“PRIVATE-NET”則證明錢包客戶端已經連線到了我們的私有節點。