Estoy tratando de ejecutar una red privada y lo hago al proporcionar un nodo de arranque para todos mis nodos. De vez en cuando noto en mis nodos que recibiré compañeros de fuera de la red. Tras una inspección más detallada admin.peers
, me doy cuenta de que son apretones de manos con piscinas públicas. No entiendo cómo ocurre esto, ya que anulé los nodos de arranque predeterminados al proporcionar el --bootnode
indicador para que mis nodos no puedan encontrar otros nodos fuera de mi red con los que comunicarse.
Tengo un problema similar. No estoy anulando el nodo de arranque y, por lo tanto, no estoy usando la --nodiscover
bandera. Sin embargo, tengo 2 nodos: comparten el mismo archivo de génesis y la identificación de red, se ejecutan en 2 máquinas virtuales diferentes, pero no se reconocen entre sí como pares. El protocols
nodo de admin.nodeInfo
la consola geth es el mismo en ambos nodos:
protocols: {
eth: {
difficulty: X,
genesis: "0xX",
head: "0xX",
network: X
}
}
Sin embargo, aunque no se reconocen entre sí, dependiendo de cuándo corro admin.peers
normalmente obtengo
> admin.peers
[]
pero a veces aparece un nuevo nodo aleatorio:
[{
caps: ["eth/62", "eth/63", "par/1", "par/2"],
id: "X",
name: "Parity/v1.5.11-stable-f067f12-20170314/x86_64-linux-gnu/rustc1.15.1",
network: {
localAddress: "172.17.0.2:55516",
remoteAddress: "X"
},
protocols: {
eth: "handshake"
}
}]
He estado ejecutando nodos en ID de red elegidos al azar para encontrar uno en el que no haya pares desconocidos, pero no importa cuán grande sea el número, siempre parece haber un nodo aleatorio que aparece en algún momento y no siempre con la misma configuración.
--bootnodes
comando. ¿No estoy usando la no-discover
bandera como mis nodos para descubrir los otros nodos en la red desde el nodo de arranque? Los míos también son todos los apretones de manos que son rechazados.--nodiscover
y se supone que su nodo de arranque debe realizar el descubrimiento. Se supone que agregar la bandera aísla su cadena de bloques y la hace privada. Asegúrese de agregar el indicador cuando inicie un nodo y de que cada nodo haga referencia al nodo de arranque con --bootnode
o con un static-nodes.json
archivo en los nodos. Pruebe esta configuración y vea si sus nodos están siendo descubiertos. Déjame saber si funcionó--nodiscover
antes, pero esto hace que mis nodos y el nodo de arranque no se conecten entre sí, aunque defino explícitamente un nodo de arranque al que conectarse.--nodiscover
bandera no es muy útil para esto. En su lugar, intente usar una identificación de red más pequeña y consulte esta publicación para ver si ayuda.El uso de la opción --nodiscover al iniciar la consola geth evitará los apretones de manos con nodos externos. He probado esto y funciona. Desafortunadamente para mí, todavía no puedo establecer un protocolo de enlace entre los dos nodos de mi cadena de bloques privada en AWS.
Si se conectó recientemente a la red principal o redes de prueba, es posible que los nodos de arranque y los pares de esas redes aún tengan su dirección IP en sus bases de datos. Intentarán conectarse automáticamente. Un cortafuegos debería detener eso. Cambiar el puerto de escucha de su red privada puede ayudar. Además, si alguno de sus nodos privados de Geth se inicia sin un nodo de arranque privado en ejecución y la opción bootnode y la opción nodiscover, el nodo se conectará automáticamente a los nodos de arranque públicos codificados y comenzará a probar pares de la red principal y las redes de prueba. Guardará estas direcciones IP en su directorio de datos, las compartirá con otros nodos privados en su red e intentará conectarse a ellos continuamente incluso después de reiniciar y luego usar un nodo de arranque privado. Debe eliminar la carpeta de nodos datadir en cada nodo para solucionarlo. Sin embargo, la opción nodiscover es más importante, o puede agregar pares manualmente en lugar de usar un nodo de arranque privado. También edité el archivo params bootnode.go antes de compilar el binario geth. Cambie todos los nodos de arranque en ese archivo a la dirección de enodo de su nodo de arranque privado. Eso resolvió el problema para mí.
Richard Horrocks
John
betty sanchez
protocols: {eth: "handshake"}
protocolo es "apretón de manos" y normalmente no duran mucho. Mientras que los pares reales tienen más detalles en élprotocols: { eth: { difficulty: X, genesis: "0xX", head: "0xX", network: X } }