Knoten/Peers können nicht mit privatem Netzwerk verbunden werden

EINWAND gegen Duplikatproblem: Die vermeintliche Duplikatantwort funktioniert NICHT . Die Problemformulierung ist ähnlich, aber das Problem selbst erfordert eine andere Lösung.

Ich habe eine lokale private Kette wie unten erstellt

geth --genesis ...CustomGenesis.json --verbosity 6 --datadir ...customchain1\chain --identity SomeChain --blockchainversion 12 --networkid 123 --rpcport 8101 --maxpeers 15 console 

Beim Starten der Brieftasche muss ich die Peer-Suche überspringen, da sie nie beendet wird. Nach dem Öffnen kann ich sehen, dass ich im PRIVATE-NET bin, aber mit 0 Peers.

Mir ist aufgefallen, dass ich 12 Peers für die Validierung von Verträgen benötige, also habe ich versucht, 1-2 Knoten zu erstellen, um zu sehen, ob dies funktionieren würde. Ich habe das folgende Tutorial verwendet und einige andere, die ich vergessen habe.

https://github.com/ethereum/go-ethereum/wiki/Connecting-to-the-network

Zunächst habe ich einen anderen Ordner mit geth.exe darin erstellt. dann den folgenden Befehl auf einer separaten Konsole verwendet, während die Hauptdatei geth.exe bereits ausgeführt wurde.

geth --datadir="...\customchain1\node1\chain" --verbosity 6 --networkid 123 --ipcdisable --port 30302 --rpcport 8102 console

Ich habe admin.nodeInfo.enodeauf der Node-Geth-Konsole verwendet, um den Enode-Wert zu erhalten. Verwenden Sie dann den folgenden Befehl auf der primären Geth-Konsole, um ihn als Peer hinzuzufügen.

admin.addPeer("enode://7a68ad5995ed4fa02a20f582e0c41bd6afad609102edda3fe3b443b618e56b11282d78cbeddfd2b8fb846a36ed6230d446fb41dc5fd77ff97bf20502e7ce0568@[::]:30302")

BEARBEITEN Das Hinzufügen von " vor und nach enode kehrt zurück true, aber admin.peers gibt immer noch nichts zurück.

Dies kehrt zurück(anonymous): Line 1:20 Unexpected token :

Ich habe dann die Genesis-Datei kopiert, mit der ich die Blockchain erstellt habe, alles andere gelöscht und genau denselben Befehl im Knotenordner ausgeführt. Ich habe die Enode-Leitung abgerufen und es erneut versucht. Der Fehler war der gleiche.

Verstehe ich falsch, wie das funktionieren soll, oder übersehe ich noch etwas?

Vielen Dank.

BEARBEITEN Fast da Einige Protokolle, die ich erfasst habe. Scheint, dass sie fast eine Verbindung herstellen und dann aufgrund einer nicht übereinstimmenden Netzwerk-ID abbrechen, aber woher zum Teufel kommt diese Nummer? Ich habe nichts mit der Netzwerk-ID 1602902873 und ich gebe die Netzwerk-ID in allen Befehlen explizit anders an.

10:42:11.869273 p2p/server.go:428] new task: static dial 07837c0f7f31ad77 127.0.0.1:30301
10:42:11.869273 p2p/server.go:428] new task: static dial b708f0574d3b88af 127.0.0.1:30302
10:42:11.869273 p2p/server.go:428] new task: static dial 38754ca3bd38f3b7 127.0.0.1:30303
10:42:11.869273 p2p/server.go:428] new task: discovery lookup
10:42:11.869273 p2p/dial.go:263] dial tcp 127.0.0.1:30301 (07837c0f7f31)
10:42:11.870275 p2p/dial.go:263] dial tcp 127.0.0.1:30302 (b708f0574d3b)
10:42:11.870275 p2p/dial.go:263] dial tcp 127.0.0.1:30303 (38754ca3bd38) 
10:42:11.876277 p2p/server.go:477] <-posthandshake: static dial conn 07837c0f7f31ad77 127.0.0.1:30301 
10:42:11.877278 p2p/server.go:477] <-posthandshake: static dial conn b708f0574d3b88af 127.0.0.1:30302
10:42:11.878279 p2p/server.go:483] <-addpeer: static dial conn 07837c0f7f31ad77 127.0.0.1:30301
10:42:11.878279 p2p/server.go:672] Added Peer 07837c0f7f31ad77 127.0.0.1:30301
10:42:11.878279 p2p/server.go:467] <-taskdone: static dial 07837c0f7f31ad77 127.0.0.1:30301
10:42:11.878279 p2p/peer.go:301] Peer 07837c0f7f31ad77 127.0.0.1:30301: Starting protocol eth/63
10:42:11.879280 eth/handler.go:231] Peer 07837c0f7f31ad77 [eth/63]: peer connected [Geth/v1.4.4-stable/windows/go1.5.1/CustomChainPOCNode2]
10:42:11.879280 p2p/server.go:483] <-addpeer: static dial conn b708f0574d3b88af 127.0.0.1:30302
10:42:11.879280 p2p/server.go:672] Added Peer b708f0574d3b88af 127.0.0.1:30302
10:42:11.879280 eth/handler.go:236] Peer 07837c0f7f31ad77 [eth/63]: handshake failed: NetworkId mismatch - 1602902873 (!= 123)
10:42:11.879280 p2p/peer.go:308] Peer 07837c0f7f31ad77 127.0.0.1:30301: Protocol eth/63 error: NetworkId mismatch - 1602902873 (!= 123)
10:42:11.879280 p2p/peer.go:177] Peer 07837c0f7f31ad77 127.0.0.1:30301: protocol error: NetworkId mismatch - 1602902873 (!= 123) (Subprotocol error)
10:42:11.879280 p2p/server.go:477] <-posthandshake: static dial conn 38754ca3bd38f3b7 127.0.0.1:30303
10:42:11.880280 p2p/server.go:467] <-taskdone: static dial b708f0574d3b88af 127.0.0.1:30302
10:42:11.882281 p2p/peer.go:301] Peer b708f0574d3b88af 127.0.0.1:30302: Starting protocol eth/63
10:42:11.882281 eth/handler.go:231] Peer b708f0574d3b88af [eth/63]: peer connected [Geth/v1.4.4-stable/windows/go1.5.1/CustomChainPOCNode1]
10:42:11.882281 eth/handler.go:236] Peer b708f0574d3b88af [eth/63]: handshake failed: NetworkId mismatch - 1602902873 (!= 123)
10:42:11.884283 p2p/peer.go:308] Peer b708f0574d3b88af 127.0.0.1:30302: Protocol eth/63 error: NetworkId mismatch - 1602902873 (!= 123)
10:42:11.884283 p2p/peer.go:177] Peer b708f0574d3b88af 127.0.0.1:30302: protocol error: NetworkId mismatch - 1602902873 (!= 123) (Subprotocol error)
10:42:11.881281 p2p/server.go:626] static dial conn 38754ca3bd38f3b7 127.0.0.1:30303 failed checkpoint posthandshake: Connected to self
10:42:11.882281 p2p/server.go:499] <-delpeer: Peer 07837c0f7f31ad77 127.0.0.1:30301
10:42:11.888287 p2p/server.go:467] <-taskdone: static dial 38754ca3bd38f3b7 127.0.0.1:30303
10:42:11.888287 p2p/server.go:499] <-delpeer: Peer b708f0574d3b88af 127.0.0.1:30302
10:42:11.882281 p2p/server.go:688] Removed Peer 07837c0f7f31ad77 127.0.0.1:30301 (Subprotocol error)
10:42:11.890288 p2p/server.go:688] Removed Peer b708f0574d3b88af 127.0.0.1:30302 (Subprotocol error)

SHAME ... SHAME ... SHAME ... Glocke läutet Also, während ich versuche zu verstehen, wie eine zufällige magische Netzwerk-ID anstelle der von mir angegebenen erscheint. Mir ist aufgefallen, dass es sich um eine Ganzzahl handelt, wenn sie ohne Anführungszeichen geschrieben wird. Ich hatte eine Zahl, die über dem maximalen int-Wert liegt. Als ich es auf etwas Akzeptables korrigierte, funktionierte es sofort.

Antworten (2)

In der Funktion admin.addPeer() müssen Sie die IP-Adresse anstelle von [::] angeben. Es sieht so aus, als würden Sie an derselben Workstation arbeiten. Geben Sie in diesem Fall beim Hinzufügen eines Peers die localhost-Adresse an. Ihr Befehl sollte sein:

admin.addPeer("enode://7a68ad5995ed4fa02a20f582e0c41bd6afad609102edda3fe3b443b618e56b11282d78cbeddfd2b8fb846a36ed6230d446fb41dc5fd77ff97bf20502e7ce0568@127.0.0.1:30302")

Wenn Sie auf einer anderen Workstation im lokalen Netzwerk arbeiten, müssen Sie die private IP-Adresse verwenden.

Sie müssen für alle Knoten dieselbe Genesis-Datei und Netzwerk-ID verwenden. Jeder Knoten sollte eine andere Portnummer, eine andere RPC-Portnummer und ein anderes Datenverzeichnis haben (wenn er auf demselben System arbeitet).

Auf dieser Seite finden Sie weitere Informationen.

Ich habe Knotenkettendateien gelöscht und dann mit derselben Genese wie geth --genesis ...\customchain1\node1\CustomGenesis.json --datadir ...\customchain1\node1\chain --networkid 123 --ipcpath ~/Library/Ethereum/node1/geth.ipc --port 30302 --rpcport 8102 --maxpeers 15 consoleverschiedene Ports und IPC-Pfad für Knoten2 neu erstellt. Dann die enodes bekommen und addPeer mit IP verwendet. Ich habe es vom primären Knoten und neuen Knoten versucht. Alle haben true zurückgegeben, aber admin.peers ist in allen Knoten leer :(
Überprüfen Sie, ob net.listening true zurückgibt, bevor Sie die Peers hinzufügen. Überprüfen Sie mit net.peerCount, ob Sie die Peers tatsächlich verbunden haben. Bitte überprüfen Sie diesen Link und lassen Sie es mich wissen, wenn Sie weiterhin Probleme haben.
es ist wahr. peerCount ist immer 0. Ich habe genau die gleichen Geth-Befehle im Link ausgeführt. Aktualisierung des Fragetextes.
Bitte beachten Sie, dass sich die Enode-URL jedes Mal ändert, wenn Sie eine neue Instanz mit anderen Parametern erstellen. Sie müssen „enode://pubkey@ip:port“ nicht zur Datei „static.json“ hinzufügen. Ich empfehle Ihnen, alles zu löschen und den Prozess mit derselben Genesis-Datei und verschiedenen leeren Datenverzeichnissen neu zu beginnen .
Ich denke, wir sind jetzt wirklich nah dran. Ihr Vorschlag mit der statischen IP-Korrektur hat den ständig auftauchenden Brieffehler beseitigt und das wahre Problem endlich sichtbar gemacht. Vielen Dank für Ihre Zeit und Mühe.

Das erste Problem war die falsche Syntax in der Datei static-nodes.json, wie @galahad darauf hingewiesen hat. Unten ist das Richtige.

[
  "enode://abc13b392a70743a2c1226e84f0c1fbf00768d44854730db4745952d0c91efcba2fd8cc6b7df3ad68ecac99333560376b6888ac114e61c83c8d45b0a53b92223@10.222.6.87:30301",
  "enode://2520136e29c92473064edb44db63d7c4e2589bb3e0558524af8b0158e156d86e6c0e2ec8f4e372691626c44e184518c9b6a78557d613620d8939abab033c3a11@10.222.6.87:30302"
]

Zweitens war die falsche Netzwerk-ID, mit der Knoten versuchten, eine Verbindung herzustellen. Nach dem Beheben des obigen Fehlers networkID mismatchwurden beim Verbindungsversuch weiterhin Fehler ausgegeben. Es hat eine zufällige int-ID zugewiesen, wenn die, die ich habe, über dem Maximalwert lag. Das Erhalten der Netzwerk-ID unter dem maximalen int-Wert löste dieses Problem.