So überprüfen Sie meinen Synchronisierungsstatus auf Geth 1.5.5, Raspberry Pi 3

Lassen Sie einen Geth 1.5.5-Knoten auf einem Himbeer-Pi 3 laufen. Wenn ich eintippe

sudo systemctl status geth

Ich erhalte ständig wechselnde Zeit- und Sperrinformationen. Schön, aber woher weiß ich, wann ich synchronisiert bin? Gibt es einen anderen sudo-Befehl, den ich ausführen sollte?

Antworten (6)

Wenn Sie weiter forschen, müssen Sie die Konsole des Geth-Knotens aufrufen, um spezielle Befehle einzugeben. Folgende Arbeiten:

geth attach

Sendet den Benutzer an die Konsole des Geth-Knotens.

eth.syncing

Erzeugt ein Ergebnis wie aktueller Block: 82.100; höchster Block 2.910.032.

exit

Um zur Pi-Eingabeaufforderung zurückzukehren.

wenn ich tippe eth.syncing, wird gerade falsegedruckt
Warten Sie ein paar Sekunden und es wird ein Ergebnis angezeigt
@Coren du kannst ewig warten
Heutzutage braucht man so ziemlich einen Supercomputer, um Ethereum zu betreiben.
geth-Syntax für Windows:geth attach ipc:\\.\pipe\geth.ipc
@sreginogemoh falsebedeutet, dass Sie bereits vollständig synchronisiert sind (technisch bedeutet dies nur, dass es tatsächlich nicht synchronisiert wird, also nehme ich an, es könnte auch bedeuten, dass Sie aus irgendeinem anderen Grund nicht synchronisieren, als vollständig synchronisiert zu sein ... hmmmm)
@sreginogemoh falsch ist gut. Dies bedeutet, dass Sie mit dem neuesten Block auf dem neuesten Stand und vollständig synchronisiert sind. Es ist als Benutzernachricht dumm kontraintuitiv, aber buchstäblich wahr: Sie synchronisieren nicht, Sie werden synchronisiert.

Nachdem Sie Ihren normalen Befehl geth --fast ausgeführt haben, können Sie ein neues Fenster öffnen und den Befehl "geth Attach" ausführen, da Sie dadurch mit der Javascript-Schnittstelle verbunden werden

$ geth attach

Dann können Sie dieses Skript verwenden, um eine schöne Ausgabe dessen zu erhalten, was passiert. Es ist sehr rudimentär, funktioniert aber sehr gut, um Ihnen eine Vorstellung davon zu geben, wie lange Sie noch warten müssen. Warten Sie zunächst 10 Sekunden (da die erste voraussichtliche Ankunftszeit falsch ist), dann sehen Sie nach der zweiten Anzeige der Schätzungen die tatsächlichen Zahlen.

var lastPercentage = 0;var lastBlocksToGo = 0;var timeInterval = 10000;
setInterval(function(){
    var percentage = eth.syncing.currentBlock/eth.syncing.highestBlock*100;
    var percentagePerTime = percentage - lastPercentage;
    var blocksToGo = eth.syncing.highestBlock - eth.syncing.currentBlock;
    var bps = (lastBlocksToGo - blocksToGo) / (timeInterval / 1000)
    var etas = 100 / percentagePerTime * (timeInterval / 1000)

    var etaM = parseInt(etas/60,10);
    console.log(parseInt(percentage,10)+'% ETA: '+etaM+' minutes @ '+bps+'bps');

    lastPercentage = percentage;lastBlocksToGo = blocksToGo;
},timeInterval);

Dadurch erhalten Sie eine Ausgabe ähnlich der folgenden:

85% ETA: 573 minutes @ 134.4bps
86% ETA: 533 minutes @ 144.3bps
86% ETA: 442 minutes @ 173.9bps
Hallo, das hilft mir sehr zu sehen, dass die ETAs kontinuierlich im Terminal gedruckt werden. Ich würde dies als Antwort wählen, wenn ich die Frage stellen würde.
Oder so: 99 % ETA: 399672 Minuten bei 0,2 bps 99 % ETA: 399672 Minuten bei 0,2 bps 99 % ETA: 399672 Minuten bei 0,2 bps 99 % ETA: 399672 Minuten bei 0,2 bps 99 % ETA: 399672 Minuten bei 0,2 bps Ethereum ist für mich tot.
@Dagelf Sie "hängen" wahrscheinlich beim Synchronisieren von Statusversuchen fest. lesen Sie mehr über in dieser Ausgabe github.com/ethereum/go-ethereum/issues/… (Kommentare von Maintainer karalabe finden )
Das funktioniert gut, aber ich habe festgestellt, dass die Blocksynchronisierungszeiten sehr unterschiedlich sind . Ich habe mehrmals in Parität synchronisiert und lange Zeit lagen die Blockzeiten mehrere Stunden lang bei etwa 1-2 Blöcken pro Sekunde (ETA von 100 Tagen), aber dann wurde es trotzdem über Nacht beendet
es gibt mir ein leeres Set{}
@Dagelf RIP, mein Freund.

Zunächst müssen Sie sich von einem zweiten Terminal aus mit dem laufenden Geth-Prozess verbinden

$ geth attach

Wie die anderen Antworten angegeben haben, ist die Struktur, die Sie interessiert, eth.syncing

Um die verbleibenden Blöcke zu sehen, könnten Sie tun

> eth.syncing.highestBlock - eth.syncing.currentBlock

Und für die restlichen Staaten

> eth.syncing.knownStates - eth.syncing.pulledStates

Während der Ausführung des Geth-Synchronisierungsprozesses habe ich verwendet geth attachund dann eth.syncingauf der Geth-Konsole verwendet.

eth.syncing auf der „geth Attach“-Konsole.

Ich könnte Blockinformationen bekommen. Und wenn Sie gerade den gethBefehl selbst ausführen, müssen Sie warten, bis geth den "echten" Synchronisierungsprozess startet. Sonst sieht man false.

geth versionErgebnis

Geth
Version: 1.7.2-stable
Git Commit: 1db4ecdc0b9e828ff65777fb466fc7c1d04e0de9
Architecture: amd64
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.9.1
Operating System: darwin
GOPATH=
GOROOT=/usr/local/Cellar/go/1.9.1/libexec

Sie können web3.eth.syncing verwenden , dh:

server:~# geth attach
> web3.eth.syncing
{
  currentBlock: 4504031,
  highestBlock: 4660759,
  knownStates: 31357681,
  pulledStates: 31357680,
  startingBlock: 4504031
}

Oder das gleiche wie oben, aber asyncmit getSyncing :

web3.eth.getSyncing(callback(error, result){ ... })

Eth-Synchronisierungsprozentsatz:

eth.syncing.currentBlock * 100 / eth.syncing.highestBlock
Diese Formel funktioniert, wenn Sie im Vollmodus synchronisieren. Im Schnellmodus werden zu einem großen Teil Zustände heruntergeladen, und die Formel berücksichtigt dies nicht.