Ausführen von zwei Instanzen von geth unter Windows - Protokollstapel: listen udp :30303

Ich versuche, den Anweisungen in diesem Blog zu folgen, um ein privates Ethereum-Netzwerk auf meinem Windows-Computer zum Laufen zu bringen. https://btcblockchain.wordpress.com/2017/09/27/how-to-run-private-ethereum-blockchain-on-windows/ Vielleicht probiere ich später mal Docker aus, aber jetzt will ich es einfach Folge diesem Blog. Dieses Beispiel erfordert zwei Ketten in zwei verschiedenen Ordnern; Ich habe den Befehl zum Einrichten von genesis.json auf jedem ausgeführt, und das lief gut.

Fehler:

Schwerwiegend: Fehler beim Starten des Protokollstapels: listen udp :30303: bind: Normalerweise ist nur eine Verwendung jeder Socket-Adresse (Protokoll/Netzwerkadresse/Port) erlaubt.

Ich habe Variationen dieses Problems auf dieser Seite gesehen, aber normalerweise mit Mist Wallet.

Meine Verzeichnisse unterscheiden sich geringfügig von diesem Blog, also sind dies die beiden Befehle, die ich ausgeführt habe.

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

Dies läuft immer noch in einem Befehlsfenster, wenn ich das zweite unten versuche.

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

Ich verstehe nicht, warum es sich über Port 30303 beschwert, wenn ich 30302 angegeben habe. Ich habe auch andere Beispiele gesehen, in denen Leute --port verwenden, also bin ich mir nicht sicher, warum dieses Beispiel nur einen Bindestrich vor dem Wort "Port" hatte.

In keinem der node1-Unterverzeichnisse befindet sich eine IPC-Datei.

Hinweis: Ich habe Parity Wallet gleichzeitig auf dem Produktionsknoten ausgeführt. Ich habe diese Prozesse beendet und denselben Fehler erhalten.

Update 1: Hinzufügen eines Screenshots aus dem Ressourcenmonitor mit Ports:Geben Sie hier die Bildbeschreibung ein

Ich habe Windows 7 mit geth v1.7.3 ausprobiert und es funktioniert wie erwartet. Ich würde vorschlagen, den Prozess-Explorer oder ähnliches zu verwenden und nach Port 30303 zu suchen, vielleicht hat ein anderer Prozess ihn geöffnet.
Aber warum 30303, wenn ich 30301 und 30302 angegeben habe?
Das Geth auf Node1 ist das Problem. Ich habe Resource Monitor verwendet, um die ProcessID anzuzeigen, und dann sah ich, dass die ProcessID Geth war. Als ich Cntl-Break gemacht habe, um geth.exe zu stoppen, ist die ProcessID verschwunden. Ich könnte dann Knoten 2 starten, würde aber den gleichen Fehler bekommen, wenn ich Knoten 1 starte. Ich verstehe also immer noch nicht, wie ich das korrigieren soll.
Screenshot von Process Monitor am Ende der ursprünglichen Frage hinzugefügt. Braucht node überhaupt einen Listener? Ist es das, was -ipcdisable tun soll, keinen Listener ausführen?

Antworten (1)

Gelöst. Ich glaube, es gab ein Problem mit der Webformatierung/Kopieren und Einfügen mit den doppelten Bindestrichen. Die beiden Bindestriche wurden als etwas anderes Zeichen behandelt. Ich habe es durch doppelte Bindestriche ersetzt und jetzt laufen beide Knoten.

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

Anscheinend funktioniert datadir gut mit dem einen Bindestrich oder dem anderen Zeichen. Ich verwende auch ein Tool namens "cmdr". Als ich den Strich zum Kopieren/Einfügen geändert und einen echten Strich eingegeben habe, habe ich gesehen, dass die Zeichenform tatsächlich anders war, wie hier gezeigt: Geben Sie hier die Bildbeschreibung ein. Also wurden meine Port-Overrides höchstwahrscheinlich völlig ignoriert. Und jetzt sehe ich im Ressourcen-Manager, dass geth.exe 30301 und 30302 verwendet.