搭建以太坊POA聯盟鏈


本文擬使用Ethereum搭建一個三個節點的聯盟鏈,並采用POA共識方法進行共識。閑話不多說,馬上開始:

首先購置三台服務器,我這邊選擇了阿里雲服務器,鏡像選擇的是Ubuntu16.04。服務器配置與帶寬請根據經濟條件購置,一般來說1核2G已經夠用。

首先安裝go-ethereum:

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

安裝完成后可以用

geth version

來查看是否安裝成功以及版本。

接着進入機器1的工作目錄:

創建簽名賬戶:

geth --datatdir node account new

創建金錢賬戶:

geth --datadir node account new

下面在機器2和3中同樣創建簽名賬戶(POA network需要至少兩個簽名賬戶),方法同上。

利用pupeth構建創世區塊,執行命令:

puppeth

對應部分的問詢分別是:網絡名稱、共識引擎、出塊間隔、簽名賬戶、金錢賬戶與網絡ID。最后導出文件genesis.json,將genesis.json分別拷貝至其他兩台機器對應目錄中。

分別初始化創世區塊:

geth --datadir node init genesis.json

接着利用geth啟動區塊鏈網絡,對應項請參考geth的命令選項。機器1啟動命令為:

geth --datadir node --maxpeers 3 --networkid '9585' --nodiscover --port '30300' --unlock 'd5c8c57d65146ebd3f200d013503409d81a6331e' --password 'node/password.txt' --mine --minerthreads=1 --etherbase=d5c8c57d65146ebd3f200d013503409d81a6331e

機器2和3的啟動命令為:

geth --datadir node --maxpeers 3 --networkid '9585' --nodiscover --port '30300' --unlock 'ebed1888b8d4cdba4c13ae56166d7a26c8118a13' --password 'node/password.txt' --mine --minerthreads=1 --etherbase=ebed1888b8d4cdba4c13ae56166d7a26c8118a13 --rpc --rpcaddr '0.0.0.0' --rpcport '8500' --rpccorsdomain '*' --rpcapi 'personal,eth,net,web3'

賬戶名稱自行替換。出於安全性考慮,金錢賬戶放在機器1中,不開放rpc port。

啟動后進入console控制台:

geth attach ipc://root/testnode/node/geth.ipc

查看此節點的enode信息並記錄。

使用以上方法對分別啟動三台機器后配置static-nodes.json文件用於添加節點,配置完成后如下所示:

[
"enode://9d72cf660257bd9037e1b4c15e614e130a371e41554dac6706be5bccec7496cad43472ae2f1f8ada527a284ad017771b63c739f2ccf34eebd23216df2fd7b6b3@[172.31.118.88]:30300?discport=0",
"enode://d88372a5ee836c32194586bdb2cc902e9fffc104b4125c6d2f5c93abadd6f8befccfd9ded87ee7a00d1bbd4e74c1d36bcddd0360274052404afc9e28afc03397@[172.31.118.89]:30300?discport=0",
"enode://af2e355a232d7fe1a769fb7a2d4275257a4a87f8de4d8b7bf829ea3523edeabeda196d4c520402dd5e8deacc41ef52c45b26fd3dfa5c9382cd4f77b7b4c9d3d7@[172.31.118.90]:30300?discport=0"
]
View Code

將此文件分別放入三台機器的node/文件夾中。然后重新使用geth命令分別啟動三個節點。

最后發現三台機器完美的運行了POA共識的聯盟鏈網絡,接下來我們可以使用各種方式使用區塊鏈來構建自己的DAPP。

最后推薦一種方法使geth后台運行,利用nodejs的pm2工具,將geth命令放在shell中(如start-geth.sh),使用如下方式來快速啟動后台運行的geth:

pm2 start start-geth.sh

並利用pm2的命令對進程進行有效的管理。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM