基於以太坊的多節點私鏈系統搭建
基於以太坊的多節點私鏈系統
一、環境
Golang https://golang.org/
Geth https://ethereum.github.io/go-ethereum/downloads/ (make all 編譯goeth)
二、節點部署(包含接入、共識、全量記錄節點)
建立賬號
geth --datadir node0 account new
目錄下會增加keystore資料夾,keystore是儲存賬戶金鑰的檔案
創世區塊檔案genesis.json
genesis檔案定義了私鏈的第一個塊,可以使用puppeth工具來生成,可以自定義出塊時間共識演算法等

image.png
初始化
geth --datadir node0 init genesis.json(步驟2生成)
node0目錄下會增加geth ,geth儲存區塊相關的資料
啟動第一個節點
建立創世塊:
geth --datadir node0 init genesis.json
啟動:
geth --datadir node0 --port 30000 --nodiscover --unlock '賬戶地址' console
加入新的節點
建立賬號:
geth --datadir node1 account new
建立創世塊:
geth --datadir node1 init genesis.json(步驟2生成的)
啟動節點:
geth --datadir node1 --port 30000 --nodiscover --unlock '地址' console
在node1控制檯通過admin.nodeInfo.enode 獲取enode資訊
在node0控制檯通過admin.addPeer("enode資訊") 新增節點
當增加第三個節點時,由於超過3個,節點啟動miner會報unauthorized 錯誤,這是因為新節點的加入需要一半以上的節點提名,控制檯中執行:
clique.propose(ldquo;賬戶地址rdquo;,true)
開啟rpc服務(接入節點和全量交易記錄節點啟用)
admin.startRPC("127.0.0.1",8545,"*","eth,net,web3,admin,personal")
開啟挖礦(共識節點啟用)
miner.start()
三、使用

image.png
客戶端通過相應的SDK呼叫接入節點,完成合約部署,合約呼叫、資料查詢等功能。