Private-Blockchain

私有 PoA 網路不是我的

  • February 13, 2019

我在 DigitalOcean 上執行了 5 個 (8GB/4vCPU) 液滴(啟用了專用網路;下面的 IP 屬於這個專用網路)。我很吃驚,因為我在下面概述的工作流程在當地就像魅力一樣。

  • 你:4.4.0-116-generic #140-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux
  • 格思:1.7.3-stable-4bb3c89d

液滴已啟用 ufw,但是我打開了與 geth/ssh 相關的所有 tcp/udp 埠​​。

  1. 首先,我動態生成一個創世塊,授權 5 個節點作為密封器,並使用 Ether 預先分配它們(同時添加 100 個其他帳戶以供以後使用)。(我有extradatapuppeth 的其他屬性)
  2. 之後,我確保 geth 沒有執行並通過 SSH 終止所有 bootnode 或 geth 程序。
  3. 然後,我對所有節點進行SCPgenesis.json和。包含 5 個 coinbase 帳戶。identities.js``identities.js
  4. 我成功地init在所有節點上創建了創世塊,並在第一個 droplet 上啟動了 bootnode。
  5. 接下來,是時候geth在每個節點上使用以下命令了:
  • $1 使用 bash (1-5) 從identities.js
  • $2 是使用 bash 傳入的,是en1相應 droplet的內部 IP
geth --datadir=/home/node/ --identity=$1 --port=30300 --rpc --rpccorsdomain=* --rpcapi admin,net,clique,eth,web3,miner,personal --rpcport=8500 - -networkid = 187 --preload = /家庭/ identities.js --bootnodes e節點://a349b003327c3075b779715a733d5076b986aae0225c48a760cd2b0e768b9654c0179014353ebb34eb0b9e7654caf69ec56d80b1b32705277bad953fb7777585@10.135.29.232:30301 --nodiscover --verbosity = 6 --unlock 0 --password /home/password.sec - -nat "extip:$2">> /home/node/console.log 2>&1 &
  1. 因為我們有--nodiscover標誌,所以我使用 bash 腳本添加所有節點以首先admin.nodeInfo從每個節點收集,然後遞歸地使用admin.addPeerviasshgeth --execwhich succeeeds 返回true每個條目。
  2. 之後,我們開始在 5 個密封節點中的 3 個上進行探勘以達成共識。

然而,他們從不探勘任何塊,只是停留在下面的無限循環中,Recalculated downloader QoS values即使當我檢查admin.peersnet.peerCount. 此外,檢查clique.getSigners()成功返回一個數組,其中包含在液滴上執行和解鎖的預分配和授權節點。

所有節點上 geth 的日誌級別輸出如下所示:

TRACE[03-15|13:02:37] 註冊同步對等點 peer=6c8d5ad9f798ede5
調試[03-15|13:02:37] 寬鬆的下載器 QoS 值 rtt=20s 可信度=0.333 ttl=1m0s
DEBUG [03-15 | 13:02:38]添加靜態節點node =“?e節點://f26f9b43bae5ff8018a723f714f045f55d74a438abf7f043a71c7bf758ebd7fbfa2d31f9bd8f74e06e1d6b0744476013f0a7bf324e06235881a3c1f29fbdad91@10.135.75.26:30300 discport = 0”
TRACE[03-15|13:02:38] 新撥號任務 task="staticdial f26f9b43bae5ff80 10.135.75.26:30300"
DEBUG[03-15|13:02:38] 添加 p2p peer id=f26f9b43bae5ff80 name=Geth/sealer05/v1.7.3... addr=10.135.75.26:30300 peers=4
TRACE[03-15|13:02:38] 撥號任務完成 task="staticdial f26f9b43bae5ff80 10.135.75.26:30300"
TRACE[03-15|13:02:38] 啟動協議 eth/63 id=f26f9b43bae5ff80 conn=staticdial
調試[03-15|13:02:38] 乙太坊對等連接 id=f26f9b43bae5ff80 conn=staticdial name=Geth/sealer05/v1.7.3-stable-4bb3c89d/linux-amd64/go1.9.2
TRACE[03-15|13:02:38] 註冊同步對等 peer=f26f9b43bae5ff80
調試[03-15|13:02:38] 寬鬆的下載器 QoS 值 rtt=20s 可信度=0.250 ttl=1m0s
調試[03-15|13:02:48] 重新計算下載器 QoS 值 rtt=20s 可信度=0.625 ttl=1m0s
INFO [03-15|13:02:52] 交易池價格門檻值更新價格=18000000000
INFO [03-15|13:02:52] 開始挖礦
INFO [03-15|13:02:52] 送出新的挖礦工作數=1 txs=0 叔叔=0 已用=205.437µs
TRACE[03-15|13:02:52] 等待槽簽名和傳播延遲=-99.476ms
INFO [03-15|13:02:52] 成功密封新區塊號=1 hash=4c706b…3edb3c
調試 [03-15|13:02:52] 送出未命中 = 14 解除安裝 = 0 後嘗試記憶體統計資訊
INFO [03-15|13:02:52] 🔨 探勘的潛在區塊數=1 雜湊=4c706b…3edb3c
調試 [03-15|13:02:52] 重新註入陳舊事務計數 = 0
TRACE[03-15|13:02:52] 傳播的塊雜湊=4c706b…3edb3c 接收者=2 持續時間=2562047h47m16.854s
INFO [03-15|13:02:52] 送出新的挖礦工作數=2 txs=0 叔叔=0 已用=601.597µs
INFO [03-15|13:02:52] 最近簽了,要等別人
TRACE[03-15|13:02:52] 公佈的區塊雜湊=4c706b…3edb3c 收件人=2 持續時間=2562047h47m16.854s
調試[03-15|13:02:52] 排隊傳播的塊 peer=6c8d5ad9f798ede5 number=1 hash=b88988…21011c queued=1
DEBUG[03-15|13:02:52] 正在導入傳播塊 peer=6c8d5ad9f798ede5 number=1 hash=b88988…21011c
WARN [03-15|13:02:52] 丟棄的不良傳播塊號=1 雜湊=b88988…21011c
TRACE[03-15|13:02:52] 傳播的塊雜湊=b88988…21011c 接收者=1 持續時間=848.472µs
DEBUG[03-15|13:02:52] 排隊傳播塊 peer=3869118cfc562f9e number=1 hash=b88988…21011c queued=1
DEBUG[03-15|13:02:52] 導入傳播塊 peer=3869118cfc562f9e number=1 hash=b88988…21011c
WARN [03-15|13:02:52] 丟棄的不良傳播塊號=1 雜湊=b88988…21011c
TRACE[03-15|13:02:52] 傳播的塊雜湊=b88988…21011c 接收者=0 持續時間=370.18µs
DEBUG[03-15|13:02:53] 排隊傳播塊 peer=3869118cfc562f9e number=1 hash=dffae0…4fe644 queued=1
DEBUG[03-15|13:02:53] 導入傳播塊 peer=3869118cfc562f9e number=1 hash=dffae0…4fe644
WARN [03-15|13:02:54] 丟棄的不良傳播塊號=1 hash=dffae0…4fe644
TRACE[03-15|13:02:54] 傳播的塊雜湊=dffae0…4fe644 收件人=1 持續時間=1.629ms
DEBUG[03-15|13:02:54] 排隊傳播的塊 peer=05eb0ebc7dec7aa9 number=1 hash=dffae0…4fe644 queued=1
DEBUG[03-15|13:02:54] 導入傳播區塊 peer=05eb0ebc7dec7aa9 number=1 hash=dffae0…4fe644
WARN [03-15|13:02:54] 丟棄的不良傳播塊號=1 hash=dffae0…4fe644
TRACE[03-15|13:02:54] 傳播的塊雜湊=dffae0…4fe644 接收者=1 持續時間=739.317µs
TRACE[03-15|13:03:05] 撥號任務完成 task="等待撥號歷史過期 (29.999994993s)"
TRACE[03-15|13:03:05] 新撥號任務任務="等待撥號歷史過期 (660.45357ms)"
TRACE[03-15|13:03:06] 撥號任務完成 task="等待撥號歷史過期 (660.45357ms)"
TRACE[03-15|13:03:06] 新撥號任務任務="等待撥號歷史過期 (702.908968ms)"
TRACE[03-15|13:03:07] 撥號任務完成任務="等待撥號歷史過期 (702.908968ms)"
TRACE[03-15|13:03:07] 新撥號任務任務="等待撥號歷史過期 (700.379857ms)"
TRACE[03-15|13:03:08] 撥號任務完成 task="等待撥號歷史過期 (700.379857ms)"
調試[03-15|13:03:08] 重新計算下載器 QoS 值 rtt=20s 可信度=0.812 ttl=1m0s
調試[03-15|13:03:28] 重新計算下載器 QoS 值 rtt=20s 可信度=0.906 ttl=1m0s
調試[03-15|13:03:48] 重新計算下載器 QoS 值 rtt=20s 可信度=0.953 ttl=1m0s
調試[03-15|13:04:08] 重新計算下載器 QoS 值 rtt=20s 可信度=0.977 ttl=1m0s
調試[03-15|13:04:28] 重新計算下載器 QoS 值 rtt=20s 可信度=0.988 ttl=1m0s
調試[03-15|13:04:48] 重新計算下載器 QoS 值 rtt=20s 可信度=0.994 ttl=1m0s
調試[03-15|13:05:08] 重新計算下載器 QoS 值 rtt=20s 可信度=0.997 ttl=1m0s
調試[03-15|13:05:28] 重新計算下載器 QoS 值 rtt=20s 可信度=0.999 ttl=1m0s
調試[03-15|13:05:48] 重新計算下載器 QoS 值 rtt=20s 可信度=0.999 ttl=1m0s
調試[03-15|13:06:08] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:06:28] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:06:48] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:07:08] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:07:28] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:07:48] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:08:08] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:08:28] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:08:48] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:09:08] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:09:28] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:09:48] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:10:08] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:10:28] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:10:48] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:11:08] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:11:28] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:11:48] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:12:08] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:12:28] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:12:48] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:13:08] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:13:28] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:13:48] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:14:08] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:14:28] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:14:48] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:15:08] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:15:28] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:15:48] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:16:08] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:16:28] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:16:48] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
調試[03-15|13:17:08] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s
TRACE[03-15|13:17:28]刷新埠映射proto=tcp extport=30300 intport=30300 interface=ExtIP(10.135.29.232)
調試[03-15|13:17:28] 重新計算下載器 QoS 值 rtt=20s 可信度=1.000 ttl=1m0s

這種方法本質上是錯誤的嗎?我真的不能再進一步了。任何提示都非常感謝,因為我真的花了幾天時間試圖找出一種方法來啟動和執行它。

該問題可以通過在 genesis.json 中僅定義 5 個授權密封器中的兩個(使用 puppeth)並僅使用它們啟動它們,--mine而其他 3 個節點不使用它來解決。我們還在不同 geth 實例的啟動之間添加了一些睡眠計時器,也許這也有幫助。

如果您遇到類似的問題,但沒有解決任何網路問題,您最好參考github 上的EIP 225 。

喲應該--mine像shellcoder所說的那​​樣作為參數傳遞。您還可以從附加的 geth 客戶端發送訂單給我:

- geth attach node_directory/geth.ipc
> miner.start()

請記住,帳戶應在 genesis json 的 extradata 欄位中設置為密封器。

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