Ejecutando dos instancias de geth en Windows - pila de protocolo: escucha udp: 30303

Estoy tratando de seguir las instrucciones de este blog para ejecutar una red Ethereum privada en mi máquina con Windows. https://btcblockchain.wordpress.com/2017/09/27/how-to-run-private-ethereum-blockchain-on-windows/ Tal vez más tarde pruebe Docker en el futuro, pero por ahora solo quiero sigue este blog Este ejemplo requiere tener dos cadenas en dos carpetas diferentes; Ejecuté el comando para configurar genesis.json en cada uno, y funcionó bien.

Error:

Fatal: error al iniciar la pila de protocolos: escuchar udp: 30303: enlazar: normalmente solo se permite un uso de cada dirección de socket (protocolo/dirección de red/puerto).

He visto variaciones de este problema en este sitio, pero generalmente con la billetera Mist.

Mis directorios son ligeramente diferentes a los de ese blog, así que estos son los dos comandos que ejecuté.

 geth -datadir="e:\Ethereum\ParityWinDev\node1" -verbosity 3 –port 30301 –rpcport 8101 –rpc –rpcapi eth,web3,personal,net –identity “MyNode” –networkid 2001 console

Esto todavía se está ejecutando en una ventana de comando cuando pruebo el segundo a continuación.

 geth -datadir="e:\Ethereum\ParityWinDev\node2" -verbosity 3 –port 30302 –rpcport 8102 –rpc -rpcaddr "0.0.0.0" -ipcdisable -networkid 2001 console

No entiendo por qué se queja del puerto 30303 cuando especifiqué 30302. He visto otras muestras en las que la gente también usa --port, así que no estoy seguro de por qué esta muestra tenía solo un guión delante de la palabra "puerto".

No hay ningún archivo ipc en ninguno de los subdirectorios del nodo1.

Nota: estaba ejecutando Parity Wallet en el nodo de producción al mismo tiempo. Eliminé esos procesos y obtuve el mismo error.

Actualización 1: Agregar captura de pantalla del Monitor de recursos que muestra los puertos:ingrese la descripción de la imagen aquí

Probé en Windows 7 con geth v1.7.3 y funciona como se esperaba. Sugeriría usar el explorador de procesos o similar y buscar el puerto 30303, tal vez otro proceso lo tenga abierto.
Pero, ¿por qué 30303 cuando especifiqué 30301 y 30302?
El geth en Node1 es el problema. Usé Resource Monitor para ver el ProcessID y luego vi que el ProcessID era Geth. Cuando hice Cntl-Break para detener geth.exe, el ProcessID desapareció. Luego podría iniciar el Nodo 2, pero obtendría el mismo error cuando inicio el Nodo 1. Así que todavía no entiendo cómo corregir esto.
Se agregó una captura de pantalla de Process Monitor al final de la pregunta original. ¿El nodo incluso necesita un oyente? ¿Es eso lo que se supone que debe hacer -ipcdisable, no ejecutar un oyente?

Respuestas (1)

Resuelto. Creo que hubo un problema de formato web/copiar y pegar con los guiones dobles. Los dos guiones estaban siendo tratados como un personaje ligeramente diferente. Reemplacé con guiones dobles y ahora ambos nodos se están ejecutando.

geth --datadir="e:\Ethereum\ParityWinDev\node1" --verbosity 3 --port 30301 --rpcport 8101 --rpc –rrpcapi eth,web3,personal,net --identity “MyNode” --networkid 2001 console

  geth --datadir="e:\Ethereum\ParityWinDev\node2" --verbosity 3 --port
 30302 --rpcport 8102 --rpc --rpcaddr "0.0.0.0" --ipcdisable
 --networkid 2001 console

Aparentemente, datadir funciona bien con un guión u otro carácter. También estoy usando una herramienta llamada "cmdr". Al cambiar el guión de copiar/pegar y escribir un guión real, vi que la forma del carácter era realmente diferente, como se muestra aquí: ingrese la descripción de la imagen aquí. Entonces, lo más probable es que mis anulaciones de puertos se hayan ignorado por completo. Y ahora en Resource Manager veo geth.exe usando 30301 y 30302.