Ich führe 3 Knoten mit dem folgenden Befehl aus:
geth --verbosity 4 --autodag --nat any --genesis /opt/blockchain/genesis.json \
--datadir /opt/blockchain/data --networkid 4828 --port 30303 --rpc \
--rpcaddr 10.48.247.25 --rpcport 8545 --rpcapi db,eth,net,web3,admin \
--rpccorsdomain '*' --fast --mine --ipcdisable
Das genesis.json file
ist für jeden Knoten gleich (ich habe sie sicherheitshalber mit einer Prüfsumme versehen).
Was passiert, ist, dass sich die Knoten nicht alleine finden können, ich muss sie manuell verbinden throw admin.addPeer
.
Um es zu testen, habe ich eine Intervallschleife in der Konsole erstellt, um admin.peers
alle 1 Sekunde zu drucken:
var interval = setInterval(function(){console.log(admin.peers)}, 1000);
Wenn Sie Knoten 1
mit Knoten verbinden 2
( 1--2
), verbinden sie sich weiterhin und trennen sich voneinander. Aber der Knoten 3
kann sich mit keinem von ihnen verbinden.
Warum passiert das?
Jede der Geth-Instanzen muss mindestens eine andere Instanz mit einer Verbindung zum Rest Ihres privaten Netzwerks erkennen.
Sie könnten eine (oder mehrere) Ihrer Geth-Instanzen als Bootnode benennen , mit dem sich alle anderen Instanzen zuerst verbinden, um andere Peers in Ihrem privaten Netzwerk zu finden. Um den Bootnode anzugeben, mit dem sich die Nicht-Bootnode-Instanzen anfänglich verbinden sollen, verwenden Sie den folgenden Befehlszeilenparameter (von https://github.com/ethereum/go-ethereum/wiki/Connecting-to-the-network#connecting-to -das-netzwerk ) :
geth --bootnodes "enode://pubkey1@ip1:port1 [enode://pubkey2@ip2:port2 [enode://pubkey3@ip3:port3]]"
Sie können alternativ einen (oder mehrere) der Knoten als statischen Knoten benennen, mit dem sich andere Peers immer verbinden (von https://github.com/ethereum/go-ethereum/wiki/Connecting-to-the-network#static -nodes ), indem Sie die Datei /static-nodes.jsonfür jede Geth-Instanz mit folgendem Inhalt hinzufügen:
[
"enode://f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0@33.4.2.1:30303",
"enode://pubkey@ip:port"
]
Denken Sie daran, das Komma ',' zu entfernen, wenn Sie nur eine Geth-Instanz in Ihrer Datei static-nodes.json haben ( Kann jemand helfen, zwei Geth-Clients auf derselben Box und demselben Netzwerk auszuführen? ).
Henrique Barcelona
Datenschutz ist ein Menschenrecht.eth