Private-Blockchain
在託管在不同 VM 中的 docker 容器的專用網路中添加節點
我正在嘗試使用在不同虛擬機中託管的 docker 容器上執行的 go-ethereum 創建一個非本地專用網路。我很難讓節點相互辨識。我想知道既然 bootnode 不能正常工作,那麼添加對等點的最佳策略是什麼(打開問題 #3703)。我關注了Vertigobr 項目的許多方面。
知道
--nodiscover
應該啟用它以避免與專用網路外部的節點連接,這些是我的問題:
- 是不是
--nat extip:<VM_EXT_IP>
最方便的nat
配置?- 是否只有一個節點(主要節點)擁有該
static-nodes.json
文件,並且它會自動將自身連結到文件中的節點?- 根據乙太坊文件中的“連接到網路”
admin.addPeer("enodeURL")
僅臨時添加節點。這是否意味著我必須跟踪數據庫中的節點列表,例如,在static-nodes.json
創建新節點時重新生成,然後重新啟動我的“主”節點以重新載入此文件?有沒有更簡單的方法?
nodekey
提前為每個節點做好準備。它只是一個 512 位的隨機數。然後將它們與從那裡派生的公共 ECDSA 密鑰一起儲存在某個地方。公鑰是
enode
您使用命令選項建立連接所需的組件--bootnode
,以及admin.addPeer()
控制台中的功能。形成
enode
就像獲取公鑰、IP 和埠一樣簡單,例如enode://844c9c9e926a96e67fae7124bf6fcb6ecf37d121e2d3031db4b7d7bdd1388d9fc33c96c70535c65fcf34d8a4258fd40a9a7e2c24ac92bb152bd0261464b845d1@192.168.1.1:9915
這是一個(不安全,因為它不使用
/dev/random
)單線來讓你的nodekey
perl -e '@c=("a".."f",0..9);$p.=$c[rand(scalar @c)] for 1..64; print "$p\n"'
這是
go
使用該geth
庫獲取您的公鑰的快速實用程序https://gist.github.com/hermanjunge/8d0998f1fb2fd87870b57c63fe1f46c8