Ich möchte ein privates verteiltes Blockchain-Netzwerk aufbauen. Ich kann Knoten (die auf verschiedenen Computern laufen) nicht dazu bringen, sich gegenseitig zu erkennen.
Beide Knoten haben die gleiche Genesis-Datei und sind mit der gleichen networkId verbunden.
INFO Successfully wrote genesis state hash=X (hash equal on both nodes)
Der UDP-Port 30301 des Bootknotens ist offen
> netcat -u -z -v <PUB-IP> 30301
Connection to <PUB-IP> 30301 port [udp/*] succeeded!
Wenn ich die Bootnote starte, übergebe ich die folgenden Argumente:
--nodekey <FILE> —addr :30301 --nat extip:<PUB-IP> --verbosity 9
Die Protokolle bestätigen, dass es erfolgreich erstellt und überwacht wurde:
INFO Mapped network port proto=udp extport=30301 intport=30301 interface=ExtIP(<PUB-IP>)
DEBUG UDP listener up self=enode://<PUB-ID>@<PUB-IP>:30301
Wenn ich den Knoten starte, übergebe ich die folgenden Argumente:
--cache=512 --verbosity=6 --datadir <DIR> --nat extip:<PUB-IP> --networkid=<VAL*> --rpc --rpcaddr=0.0.0.0 --rpcapi=eth,net,web3,personal,db --rpccorsdomain '*' --ipcapi "admin,db,eth,debug,miner,net,shh,txpool,personal,web3" --bootnodes enode://<PUB-ID>@<PUB-IP>:30301 --identity node1
*(Ich verwende eine große Netzwerk-ID, aber sie liegt innerhalb des BigInteger-Bereichs)
Die Protokolle auf dem Knoten bestätigen, dass der Bootknoten gut identifiziert ist
INFO Starting P2P networking
# >> Info about the current node:
DEBUG UDP listener up self=enode://<PUB-ID>@<PUB-IP>:30303
INFO Mapped network port proto=udp extport=30303 intport=30303 interface=ExtIP(<PUB-IP>)
# >> Info about the bootnode:
TRACE Starting bonding ping/pong id=<PUB-ID-SHORT> known=false failcount=0 age=XmXs
Aber die Verbindung schlägt fehl und admin.peers
zeigt keine Peers an
TRACE >> PING/v4 addr=<PUB-IP>:30301 err=nil
TRACE Starting bonding ping/pong id=<PUB-ID-SHORT> known=false failcount=0 age=XmXs
TRACE >> PING/v4 addr=<PUB-IP>:30301 err=nil
Wenn ich versuche, den Bootnode manuell hinzuzufügen, wird admin.addPeer("enode://..")
true zurückgegeben, aber die Protokolle zeigen:
DEBUG Adding static node node=enode://<PUB-ID>@<PUB-IP>:30301
TRACE New dial task task="staticdial <PUB-ID-SHORT> <PUB-IP>:30301"
TRACE Dial error task="staticdial <PUB-ID-SHORT> <PUB-IP>:30301" err="dial tcp <PUB-IP>:30301: getsockopt: connection refused"
DEBUG Resolving node failed id=<PUB-ID-SHORT> newdelay=2m0s
TRACE Dial task done task="staticdial <PUB-ID-SHORT> <PUB-IP>:30301"
TRACE New dial task task="staticdial <PUB-ID-SHORT> <PUB-IP>:30301"
TRACE Dial error task="staticdial <PUB-ID-SHORT> <PUB-IP>:30301" err="dial tcp <PUB-IP>:30301: getsockopt: connection refused"
TRACE Dial task done task="staticdial <PUB-ID-SHORT> <PUB-IP>:30301"
Ich habe auch versucht, eine Verbindung über static-nodes.json
herzustellen, wobei ich die Adresse des Bootknotens in allen Knoten angebe; und auch ohne das --bootnodes
Flag, wo irgendwie auch meine Knoten nicht erkannt werden, aber es gibt einige zufällige externe Knoten, die sporadisch als Peers angezeigt werden . Ich habe auch versucht zu spezifizieren --maxpeers
( nach dem Rat von BokkyPooBah ) und scheint keinen Unterschied zu machen.
Bitte hilf mir.
Endlich hat es funktioniert. Ich weiß immer noch nicht wirklich, was es getan hat, aber ich werde hier einige der Änderungen auflisten, die es zum Laufen gebracht haben. Wenn ich herausfinde, was genau es getan hat, werde ich meine Antwort aktualisieren.
--v5disc
Flag für die Knotenerkennung.--v5
Flag zu starten, also habe ich statt eines Bootnode einen zufälligen Node als Bootnode gewählt. Ich habe meinen Knoten mit dem --bootnodes
Verweis auf diesen regulären Knoten gestartet, aber es schien nicht zu funktionieren, bis ich ihn manuell hinzugefügt habe. Wahrscheinlich static-nodes.json
hätte die Verwendung auch funktioniert.Protocol eth/63 failed id=X conn=inbound err="NetworkId mismatch - 3853220132 (!= 1245324517197969700)"
. Ich verwende jetzt eine 10-stellige Netzwerk-ID, und das scheint den Trick getan zu haben.personal.newAccount("pw")
, miner.setEtherbase(eth.accounts[0])
& miner.start()
)Ich neige eher zu der Annahme, dass die Netzwerk-ID ein Problem verursacht hat. Zumindest das Umschalten auf v5
machte es leichter zu erkennen.
Richard Horrocks
30303
und den lauschenden (UDP) Port nicht auf zu ändern30301
. (Es sieht so aus, als hätte einer Ihrer Knoten UDP30303
und der andere UDP30301
, was möglicherweise keine Rolle spielt, da Sie die Ports in den übergebenen Optionen angegeben haben. Persönlich hätte ich alles als Port30303
... )Betty Sánchez
Betty Sánchez
Kazuuu
Betty Sánchez