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?
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.
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
{}
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 attach
und dann eth.syncing
auf der Geth-Konsole verwendet.
Ich könnte Blockinformationen bekommen. Und wenn Sie gerade den geth
Befehl selbst ausführen, müssen Sie warten, bis geth den "echten" Synchronisierungsprozess startet. Sonst sieht man false
.
geth version
Ergebnis
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 async
mit getSyncing :
web3.eth.getSyncing(callback(error, result){ ... })
Eth-Synchronisierungsprozentsatz:
eth.syncing.currentBlock * 100 / eth.syncing.highestBlock
sreginogemoh
eth.syncing
, wird geradefalse
gedrucktCoren
Neun Catto-Regeln
Dagelf
naXa steht zur Ukraine
geth attach ipc:\\.\pipe\geth.ipc
Albert Renshaw
false
bedeutet, 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)brianfit