Go-Ethereum

使用 puppeth 建立一個私有 PoA Clique 網路

  • September 20, 2021

我想在 puppeth 的幫助下使用Clique作為協議建立一個新的專用網路。

在配置新的創世區塊時,會提出以下問題:

哪些賬戶可以蓋章?(必須至少一項)

我如何指定一個帳戶,因為它是一個新網路?

(換句話說,賬戶是獨立於網路的嗎?)

我的解決方案(獲取 1.6.0)

這類似於下面接受的答案,但允許我創建多個密封器/礦工(並編寫這些創建的腳本)

  1. 任何現有網路(PoA 或 PoW)上,為“sealer”創建新帳戶或使用geth --datadir=/wherever account new(感謝 Péter)
  2. keystore目錄中收集這些帳戶的密鑰。為了便於管理,可以將密鑰文件重命名為您想要的任何內容,例如帳戶的十六進制值在ACCOUNT_NUMBER.json哪裡,例如ACCOUNT NUMBER``0x035e19356880f86804b5fbf7015192be271ab8e4
  3. 使用puppeth,創建genesis.json文件,並輸入which accounts,上面創建的密封帳戶列表
  4. 對於每個 sealer 節點,假設私有網路的數據目錄是MYNET,創建一個目錄結構MYNET/keystore並將該 sealer 的密鑰放到目錄中
  5. 初始化節點一次geth --datadir "MYNET" init genesis.json
  6. 執行節點。解鎖帳戶並啟動礦工應該可以工作。

(注意:我不是puppeth用來創建節點,而是使用我自己的 docker 容器)

重要的 !

在使用超過 3 個簽名者初始化網路時,我遇到了這個問題。我會不斷更新這個問題

要從一開始就註冊超過 3 個簽名者,您必須使用最後一次送出 > 02fa3e3179011bcbdf9142f9efba8d3a52df898 的 1.6.1-unstable

查看送出

添加/刪除密封劑

請檢查這個 SE 問題

您可以從其他網路創建一個新帳戶,然後將 Keystore 文件導入您的專用網路。

我採取的步驟是

  1. 從 Puppeth 生成 PoW 私有網路的 Genesis.json 文件
  2. Geth 初始化
  3. Geth 附加
  4. 生成一個新帳戶
  5. 刪除datadir中的geth文件夾
  6. 使用 Puppeth 創建一個使用 Clique 的新 Genesis.json 並將您剛剛創建的地址放在那裡
  7. 解鎖帳戶
  8. miner.start() 並看到塊號上升:)

修改 genesis.json 中的 extradata 欄位如下: 0x00…(開頭 64 個零)帳戶卡住,沒有“0x”且沒有任何空格 00..(結尾有 130 個零)

引用自:https://ethereum.stackexchange.com/questions/15644