Private-Blockchain

在託管在不同 VM 中的 docker 容器的專用網路中添加節點

  • February 23, 2017

我正在嘗試使用在不同虛擬機中託管的 docker 容器上執行的 go-ethereum 創建一個非本地專用網路。我很難讓節點相互辨識。我想知道既然 bootnode 不能正常工作,那麼添加對等點的最佳策略是什麼(打開問題 #3703)。我關注了Vertigobr 項目的許多方面。

知道--nodiscover應該啟用它以避免與專用網路外部的節點連接,這些是我的問題:

  1. 是不是--nat extip:<VM_EXT_IP>最方便的nat配置?
  2. 是否只有一個節點(主要節點)擁有該static-nodes.json文件,並且它會自動將自身連結到文件中的節點?
  3. 根據乙太坊文件中的“連接到網路”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

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