Estoy tratando de crear una red privada no local con go-ethereum ejecutándose en contenedores docker alojados en diferentes máquinas virtuales. Estoy teniendo dificultades para hacer que los nodos se reconozcan entre sí. Me pregunto cuál es la mejor estrategia para agregar pares ahora que bootnode no funciona correctamente ( Problema abierto # 3703 ). He seguido muchos aspectos del proyecto Vertigobr .
Sabiendo que --nodiscover
debe estar habilitado para evitar conectarse con nodos externos a la red privada, estas son mis dudas:
--nat extip:<VM_EXT_IP>
más conveniente ?nat
static-nodes.json
archivo y se vincula automáticamente a los nodos del archivo?admin.addPeer("enodeURL")
solo agrega nodos temporalmente. ¿Eso significa que tengo que realizar un seguimiento de mi lista de nodos en una base de datos, por ejemplo, regenerar static-nodes.json
cuando se crea un nuevo nodo y reiniciar mi nodo "principal" para recargar este archivo? hay una manera mas facil?Prepare su nodekey
para cada nodo por adelantado. Es solo un número aleatorio de 512 bits. Luego guárdelos en algún lugar, junto con las claves ECDSA públicas derivadas de allí.
Las claves públicas son los componentes enode
que necesita para establecer conexiones usando la --bootnode
opción de comando, así como la admin.addPeer()
función en la consola.
Formar el enode
es tan fácil como obtener claves públicas, IP y puerto, por ejemplo
enode://844c9c9e926a96e67fae7124bf6fcb6ecf37d121e2d3031db4b7d7bdd1388d9fc33c96c70535c65fcf34d8a4258fd40a9a7e2c24ac92bb152bd0261464b845d1@192.168.1.1:9915
Aquí hay una sola línea (no segura ya que no usa /dev/random
) para obtener sunodekey
perl -e '@c=("a".."f",0..9);$p.=$c[rand(scalar @c)] for 1..64; print "$p\n"'
Y aquí hay una utilidad rápida para go
usar la geth
biblioteca para obtener su clave pública
https://gist.github.com/hermanjunge/8d0998f1fb2fd87870b57c63fe1f46c8
betty sanchez
246592eacb950b1a61805dddbd1faa92161befa98d04de52b45f78a8b4f6c0db
y311feee911639c757c305e07675793eb2d5cb3c6011764ad50d1e9c9b5a07ff9e6f4a594f3938552314434be45560a8a3e36850224c288fd8c8a6201103df05c
la larga es la clave pública de enodo, ¿verdad? ¿La corta es la clave de nodo (clave ECDSA)?herman junge
--nodekeyhex 246592eacb950b1a61805dddbd1faa92161befa98d04de52b45f78a8b4f6
, se asegura de tener siempre el mismoenode
valor.betty sanchez
go get github.com/ethereum/go-ethereum/cmd/bootnode
y luego ejecutargo run main.go --genkey "/some/dir/bootnode.key"
wheremain.go
is the main go file de la carpeta bootnode descargada.