Ich habe 5 (8 GB/4 vCPU) Tröpfchen (privates Netzwerk aktiviert; die IPs unten sind von diesem privaten Netzwerk), die auf DigitalOcean ausgeführt werden. Ich bin erschrocken, weil der Workflow, den ich unten skizziere, lokal wie ein Zauber funktionierte.
4.4.0-116-generic #140-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux
1.7.3-stable-4bb3c89d
Die Droplets haben ufw aktiviert, aber ich habe alle tcp/udp-Ports geöffnet, die für geth/ssh relevant sind.
extradata
und andere Attribute von Puppeth)genesis.json
und identities.js
an alle Knoten. identities.js
enthält die 5 Coinbase-Konten.init
den Genesis-Block auf allen Knoten und starte den Bootnode auf dem ersten Droplet.geth
mit dem folgenden Befehl auf jedem Knoten zu beginnen:
identities.js
en1
jeweiligen Dropletsgeth --datadir=/home/node/ --identity=$1 --port=30300 --rpc --rpccorsdomain=* --rpcapi admin,net,clique,eth,web3,miner,personal --rpcport=8500 - -networkid=187 --preload=/home/identities.js --bootnodes enode://a349b003327c3075b779715a733d5076b986aae0225c48a760cd2b0e768b9654c0179014353ebb34eb0b9e7654caf69ec56d80b1b32705277bad953fb7777585@10.135.29.232:30301 --nodiscover --verbosity=6 --unlock 0 --password /home/password.sec - -nat "extip:$2">> /home/node/console.log 2>&1 &
Da wir das --nodiscover
Flag haben, füge ich alle Knoten mit einem Bash-Skript hinzu, um zuerst von jedem Knoten zu sammeln admin.nodeInfo
, und verwende dann rekursiv admin.addPeer
via ssh
und was erfolgreich für jeden Eintrag geth --exec
zurückkehrt .true
Danach beginnen wir mit dem Mining an 3 von 5 Sealer-Knoten, um einen Konsens zu erzielen.
Allerdings schürfen sie nie irgendwelche Blöcke und bleiben einfach in der folgenden Endlosschleife von stecken, Recalculated downloader QoS values
obwohl sie sich immer noch als Peers haben, wenn ich admin.peers
und überprüfe net.peerCount
. Außerdem gibt eine erfolgreiche Überprüfung clique.getSigners()
ein Array zurück, das die vorab zugewiesenen und autorisierten Knoten enthält, die auf den Droplets ausgeführt und entsperrt werden.
Die Ausgabe auf Protokollebene von geth mit auf allen Knoten sieht folgendermaßen aus:
TRACE[03-15|13:02:37] Registrierung des Sync-Peers peer=6c8d5ad9f798ede5 DEBUG[03-15|13:02:37] Entspannte Downloader-QoS-Werte rtt=20s Vertrauen=0,333 ttl=1m0s DEBUG[03-15|13:02:38] Adding static node node="enode://f26f9b43bae5ff8018a723f714f045f55d74a438abf7f043a71c7bf758ebd7fbfa2d31f9bd8f74e06e1d6b0744476013f0a7bf324e06235881a3c1f29fbdad91@10.135.75.26:30300?discport=0" TRACE[03-15|13:02:38] Neue Wählaufgabe task="staticdial f26f9b43bae5ff80 10.135.75.26:30300" DEBUG[03-15|13:02:38] Hinzufügen von p2p-Peer-ID=f26f9b43bae5ff80 name=Geth/sealer05/v1.7.3... addr=10.135.75.26:30300 peers=4 TRACE[03-15|13:02:38] Wählaufgabe erledigt task="staticdial f26f9b43bae5ff80 10.135.75.26:30300" TRACE[03-15|13:02:38] Startprotokoll eth/63 id=f26f9b43bae5ff80 conn=staticdial DEBUG[03-15|13:02:38] Ethereum-Peer verbunden id=f26f9b43bae5ff80 conn=staticdial name=Geth/sealer05/v1.7.3-stable-4bb3c89d/linux-amd64/go1.9.2 TRACE[03-15|13:02:38] Registrierung des Sync-Peers peer=f26f9b43bae5ff80 DEBUG[03-15|13:02:38] Entspannte Downloader-QoS-Werte rtt=20s Vertrauen=0,250 ttl=1m0s DEBUG[03-15|13:02:48] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=0,625 ttl=1m0s INFO [03-15|13:02:52] Aktualisierter Preis der Transaktionspool-Preisschwelle = 18000000000 INFO [03-15|13:02:52] Minenbetrieb gestartet INFO [03-15 | 13:02:52] Neue Mining-Arbeitsnummer festschreiben = 1 txs = 0 Uncles = 0 verstrichen = 205,437 µs TRACE[03-15|13:02:52] Warten auf Slot zum Signieren und Weiterleiten Verzögerung = -99,476 ms INFO [03-15|13:02:52] Neue Blocknummer erfolgreich versiegelt=1 Hash=4c706b…3edb3c DEBUG[03-15|13:02:52] Versuche Cache-Statistiken nach Commit-Mißerfolgen=14 Entladen=0 INFO [03-15|13:02:52] 🔨 abgebaute potenzielle Blocknummer=1 Hash=4c706b…3edb3c DEBUG[03-15|13:02:52] Zähler für veraltete Transaktionen neu einfügen=0 TRACE[03-15|13:02:52] Propagierter Block-Hash=4c706b…3edb3c Empfänger=2 Dauer=2562047h47m16.854s INFO [03-15 | 13:02:52] Neue Mining-Arbeitsnummer festschreiben = 2 txs = 0 Uncles = 0 verstrichen = 601,597 µs INFO [03-15|13:02:52] Kürzlich unterschrieben, muss auf andere warten TRACE[03-15|13:02:52] Angekündigter Block-Hash=4c706b…3edb3c Empfänger=2 Dauer=2562047h47m16.854s DEBUG[03-15|13:02:52] In die Warteschlange übertragener Blockpeer = 6c8d5ad9f798ede5 Nummer = 1 Hash = b88988…21011c in die Warteschlange gestellt = 1 DEBUG[03-15|13:02:52] Propagierter Block wird importiert Peer=6c8d5ad9f798ede5 Nummer=1 Hash=b88988…21011c WARN [03-15|13:02:52] Verworfene schlecht propagierte Blocknummer = 1 Hash = b88988…21011c TRACE[03-15|13:02:52] Propagierter Block-Hash=b88988…21011c Empfänger=1 Dauer=848,472µs DEBUG[03-15|13:02:52] In die Warteschlange übertragener Blockpeer = 3869118cfc562f9e Nummer = 1 Hash = b88988…21011c in die Warteschlange gestellt = 1 DEBUG[03-15|13:02:52] Propagierter Block wird importiert Peer=3869118cfc562f9e Nummer=1 Hash=b88988…21011c WARN [03-15|13:02:52] Verworfene schlecht propagierte Blocknummer = 1 Hash = b88988…21011c TRACE[03-15|13:02:52] Propagierter Block-Hash=b88988…21011c Empfänger=0 Dauer=370,18µs DEBUG[03-15|13:02:53] In die Warteschlange übertragener Blockpeer = 3869118cfc562f9e Nummer = 1 Hash = dffae0…4fe644 in die Warteschlange gestellt = 1 DEBUG[03-15|13:02:53] Propagierter Block wird importiert peer=3869118cfc562f9e number=1 hash=dffae0…4fe644 WARN [03-15|13:02:54] Fehlerhafte propagierte Blocknummer verworfen=1 Hash=dffae0…4fe644 TRACE[03-15|13:02:54] Propagierter Block-Hash=dffae0…4fe644 Empfänger=1 Dauer=1,629ms DEBUG[03-15|13:02:54] In die Warteschlange übertragener Blockpeer = 05eb0ebc7dec7aa9 Nummer = 1 Hash = dffae0…4fe644 in die Warteschlange gestellt = 1 DEBUG[03-15|13:02:54] Propagierter Block wird importiert peer=05eb0ebc7dec7aa9 number=1 hash=dffae0…4fe644 WARN [03-15|13:02:54] Fehlerhafte propagierte Blocknummer verworfen=1 Hash=dffae0…4fe644 TRACE[03-15|13:02:54] Propagierter Block-Hash=dffae0…4fe644 Empfänger=1 Dauer=739,317µs TRACE[03-15|13:03:05] Wählaufgabe erledigt task="Warten auf Ablauf der Wählhistorie (29.999994993s)" TRACE[03-15|13:03:05] Neue Wählaufgabe task="auf Wählverlauf warten (660.45357ms)" TRACE[03-15|13:03:06] Wählaufgabe erledigt task="Warten auf Ablauf der Wählhistorie (660,45357ms)" TRACE[03-15|13:03:06] Neue Wählaufgabe task="auf Wählverlauf warten (702.908968ms)" TRACE[03-15|13:03:07] Wählaufgabe erledigt task="Warten auf Ablauf der Wählhistorie (702.908968ms)" TRACE[03-15|13:03:07] Neue Wählaufgabe task="auf Wählverlauf warten (700.379857ms)" TRACE[03-15|13:03:08] Wählaufgabe erledigt task="Warten auf Ablauf der Wählhistorie (700.379857ms)" DEBUG[03-15|13:03:08] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=0,812 ttl=1m0s DEBUG[03-15|13:03:28] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=0,906 ttl=1m0s DEBUG[03-15|13:03:48] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=0,953 ttl=1m0s DEBUG[03-15|13:04:08] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=0,977 ttl=1m0s DEBUG[03-15|13:04:28] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=0,988 ttl=1m0s DEBUG[03-15|13:04:48] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=0,994 ttl=1m0s DEBUG[03-15|13:05:08] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=0,997 ttl=1m0s DEBUG[03-15|13:05:28] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=0,999 ttl=1m0s DEBUG[03-15|13:05:48] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=0,999 ttl=1m0s DEBUG[03-15|13:06:08] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:06:28] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:06:48] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:07:08] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:07:28] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:07:48] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:08:08] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:08:28] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:08:48] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:09:08] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:09:28] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:09:48] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:10:08] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:10:28] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:10:48] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:11:08] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:11:28] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:11:48] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:12:08] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:12:28] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:12:48] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:13:08] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:13:28] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:13:48] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:14:08] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:14:28] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:14:48] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:15:08] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:15:28] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:15:48] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:16:08] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:16:28] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:16:48] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s DEBUG[03-15|13:17:08] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s TRACE[03-15|13:17:28] Aktualisieren der Portzuordnung proto=tcp extport=30300 intport=30300 interface=ExtIP(10.135.29.232) DEBUG[03-15|13:17:28] Neuberechnete Downloader-QoS-Werte rtt=20s Vertrauen=1.000 ttl=1m0s
Ist an diesem Ansatz etwas grundsätzlich falsch? Ich komme wirklich nicht weiter. Jeder Hinweis ist sehr willkommen, da ich wirklich Tage damit verbracht habe, einen Weg zu finden, dies zum Laufen zu bringen.
Das Problem konnte gelöst werden, indem nur zwei von 5 autorisierten Versiegelungen in der genesis.json (unter Verwendung von Puppeth) definiert und nur mit --mine
und die anderen 3 Knoten ohne gestartet wurden. Wir haben auch einige Sleep-Timer zwischen dem Start der verschiedenen Geth-Instanzen hinzugefügt, vielleicht hat das auch geholfen.
Wenn Sie jemals auf ein ähnliches Problem stoßen, das keine Netzwerkprobleme abschließt, beziehen Sie sich am besten auf EIP 225 auf Github.
Yo sollte --mine
als Parameter übergeben werden, wie Shellcoder sagte. Sie können die Bestellung auch über den beigefügten Geth-Client an Mine senden:
- geth attach node_directory/geth.ipc
> miner.start()
Denken Sie daran, dass das Konto im Feld extradata in genesis json als Sealer festgelegt werden sollte.