Go-Ethereum
使用 puppeth 建立一個私有 PoA Clique 網路
我想在 puppeth 的幫助下使用Clique作為協議建立一個新的專用網路。
在配置新的創世區塊時,會提出以下問題:
哪些賬戶可以蓋章?(必須至少一項)
我如何指定一個帳戶,因為它是一個新網路?
(換句話說,賬戶是獨立於網路的嗎?)
我的解決方案(獲取 1.6.0)
這類似於下面接受的答案,但允許我創建多個密封器/礦工(並編寫這些創建的腳本)
- 在任何現有網路(PoA 或 PoW)上,為“sealer”創建新帳戶或使用
geth --datadir=/wherever account new
(感謝 Péter)- 從
keystore
目錄中收集這些帳戶的密鑰。為了便於管理,可以將密鑰文件重命名為您想要的任何內容,例如帳戶的十六進制值在ACCOUNT_NUMBER.json
哪裡,例如ACCOUNT NUMBER``0x035e19356880f86804b5fbf7015192be271ab8e4
- 使用
puppeth
,創建genesis.json
文件,並輸入which accounts
,上面創建的密封帳戶列表- 對於每個 sealer 節點,假設私有網路的數據目錄是
MYNET
,創建一個目錄結構MYNET/keystore
並將該 sealer 的密鑰放到目錄中- 初始化節點一次:
geth --datadir "MYNET" init genesis.json
- 執行節點。解鎖帳戶並啟動礦工應該可以工作。
(注意:我不是
puppeth
用來創建節點,而是使用我自己的 docker 容器)重要的 !
在使用超過 3 個簽名者初始化網路時,我遇到了這個問題。我會不斷更新這個問題要從一開始就註冊超過 3 個簽名者,您必須使用最後一次送出 > 02fa3e3179011bcbdf9142f9efba8d3a52df898 的 1.6.1-unstable
查看送出
添加/刪除密封劑
請檢查這個 SE 問題
您可以從其他網路創建一個新帳戶,然後將 Keystore 文件導入您的專用網路。
我採取的步驟是
- 從 Puppeth 生成 PoW 私有網路的 Genesis.json 文件
- Geth 初始化
- Geth 附加
- 生成一個新帳戶
- 刪除datadir中的geth文件夾
- 使用 Puppeth 創建一個使用 Clique 的新 Genesis.json 並將您剛剛創建的地址放在那裡
- 解鎖帳戶
- miner.start() 並看到塊號上升:)
修改 genesis.json 中的 extradata 欄位如下: 0x00…(開頭 64 個零)帳戶卡住,沒有“0x”且沒有任何空格 00..(結尾有 130 個零)