Wie lange soll die erste Synchronisierung dauern?

Ich verwende Geth (neueste Version) seit ungefähr 12 Stunden und es ist immer noch nicht fertig.

Die Eingabeaufforderung zeigt dies:

INFO [05-21|12:05:00] Imported new chain segment               blocks=1  txs=9   mgas=0.748 elapsed=40.047ms   mgasps=18.687 number=3742904 hash=f8fd6e…fce9f8

INFO [05-21|12:05:29] Imported new chain segment               blocks=1  txs=2   mgas=0.044 elapsed=16.018ms   mgasps=2.741  number=3742905 hash=04b0be…3d64cd

INFO [05-21|12:05:38] Imported new chain segment               blocks=1  txs=66  mgas=2.851 elapsed=95.126ms   mgasps=29.971 number=3742906 hash=157014…c50cc5

Übrigens, meine Internetgeschwindigkeit ist gar nicht so schlecht, schau mal

Internetgeschwindigkeit

Ist das normal ? Sollte ich versuchen, einen anderen Client wie Parity zu verwenden?

PS: Ich habe Geth mit dieser Befehlszeile ausgeführt:geth --fast --cache=1024

Beim letzten Versuch hat es 2-3 Tage gedauert.
Wissen Sie, welche Nummer ich erreichen soll? Im Moment bin ich bei "number=3743185"
Dann sind Sie fertig. Prüfen Sie mit etherscan.io
An einem anderen Tag habe ich die Synchronisierung mit dem Befehl ausgeführt , der geth attachheute nicht funktioniert. Also, ich habe es versucht geth --fast --cache=1024und das funktioniert.
Zu Ihrer Information habe ich in diesem Moment (2018-11-29) versucht --syncmode=full --gcmode=archive. Nach etwa 18 Stunden erreichte ich Block 2702327. Der höchste Block ist 6799556.

Antworten (6)

Führen Sie die folgenden Schritte aus, um den Synchronisierungsstatus zu überprüfen:

1.) Öffnen Sie eine neue Geth-Instanz und geben Sie sie ein. geth attach2.) Geben Sie jetzt eineth.syncing

Dies zeigt Ihnen den "aktuellen Block" und den "höchsten Block".

Was bedeutet das überhaupt? Sollten sie gleich oder nahe beieinander sein?
Sie sollten nahe beieinander liegen. Mit anderen Worten, führen Sie aus 100 * eth.syncing.currentBlock / eth.syncing.highestBlock, um den abgeschlossenen Prozentsatz zu erhalten. Wenn es fast 100 ist, sind Sie synchronisiert.
Wenn eth.syncing falsch ist, ist es bereits synchronisiert und Sie können es eth.blockNumbermit einem Block-Explorer überprüfen, wenn Sie es noch einmal überprüfen möchten. Quelle
Es sollte also NAHE oder GENAU die gleiche Anzahl von Blöcken sein? Es ist entscheidend, weil ich zu 99,99335 % synchronisiert bin und immer noch stundenlang auf denselben Block warte. Ich frage mich, ob ich synchronisiert bin oder noch nicht.
Fun Fact: geth attachist eigentlich eine komplette JavaScript-Umgebung! Wenn Sie den Prozentsatz wiederholt in einer zeitgesteuerten Schleife ausdrucken möchten, können Sie einfach laufen(function percentage() { console.log(100* eth.syncing.currentBlock / eth.syncing.highestBlock); setTimeout(percentage, 10000); } ());

Angenommen, Sie verwenden ein Linux-Betriebssystem, können Sie auch den Synchronisierungsstatus überprüfen (führen Sie dies als der Benutzer aus, unter dem Geth ausgeführt wird):

$ geth --exec eth.syncing.currentBlock attach
3991639

Wenn es nicht synchronisiert, wird nur „false“ angezeigt.

Oder, wenn Sie ein wenig ausgefallener werden und sehen möchten, wie viele Blöcke / Sekunde synchronisiert werden, ist hier eine Idee:

A=$(geth --exec eth.syncing.currentBlock attach)
while true; do
  echo "Currently at block ${A}"
  sleep 1
  B=$(geth --exec eth.syncing.currentBlock attach);
  echo "Reached block ${B}"
  echo "$B-$A"|bc; A=$B
done

Ich denke, Sie sollten die Frage so bearbeiten, dass sie lautet: "Woher weiß ich, wann Geth mit der Synchronisierung fertig ist?"

Die Frage, die Sie gestellt haben, war vage, aber ich glaube, das ist die Antwort, die Sie gesucht haben:

Geth wird für immer weiterlaufen. Sobald es "fertig" ist, sitzt es einfach da und wartet auf den nächsten Block. Die "Zahlen", auf die Sie sich beziehen, sind Blocknummern, und sie werden in alle Ewigkeit hochgezählt. Sobald Ihr aktueller Block den höchsten Block erreicht, sind Sie alle synchronisiert. Wie von 5chdn erwähnt, kann der höchste Block durch Überprüfen an einem Ort wie etherscan.io bestimmt werden.

Ich ließ Geth stundenlang laufen und dachte, ich würde darauf warten, dass es "fertig" wird, obwohl es eigentlich schon lange fertig war. Zum jetzigen Zeitpunkt ist der höchste Block 3854270

Danke an den Kommentar von 5chdn, der wirklich der Schlüssel zur Antwort war.

Stoppen wir es also einfach, sobald es synchron ist? Würde es dadurch nicht asynchron werden, weil es nicht die neuesten Blöcke hätte?
Es wird synchron sein, bis der nächste Block freigegeben wird. Sie können es stoppen, aber ja, das bedeutet, dass Sie irgendwann nicht mehr synchron sind. Wenn Sie immer auf dem Laufenden bleiben möchten, können Sie es laufen lassen. Der Punkt ist, dass die App per se nie "fertig" ist. Aber es kommt zu einem Punkt, an dem vorerst alles "eingeholt" wird.

Wenn Sie geth mit "--verbosity 5" starten, wird es eine Reihe von Debug-Informationen ausgeben. Es wird die Dinge nicht beschleunigen, aber es wird Sie wissen lassen, dass Geth nicht aufgehängt ist.

Ich denke, die Leute laufen Geth. Es fängt an, etwas zu brummen. Sie warten und warten. Und dann töten sie Geth, weil es erhängt zu sein scheint. Wenn Sie das tun, muss Geth diesen langen Prozess nur noch einmal von vorne beginnen, was die Synchronisierung noch viel länger dauert.

Ausführlichkeit 5 lässt Sie die Geduld haben, es laufen zu lassen, bis es fertig ist, weil Sie sehen können, dass es nicht aufgehängt ist.

Nun, die Zahlen steigen weiter, im Moment bin ich bei "number=3744194". Also ich denke nicht, dass es klemmt. Danke, ich werde mich an diese Option erinnern, wenn ich das nächste Mal Geth starte :)
Ausführlichkeitsstufe 5 verlangsamt Ihren Importvorgang erheblich. Ändern Sie es nicht, überprüfen Sie einfach den Importstatus mit der Javascript-Konsole
Sie können die Ausführlichkeit ein- und ausschalten. Ich schlage vor, Sie schalten es während des DDos-Angriffs ein, damit Sie wissen, dass der Knoten nicht hängen bleibt. Wenn Sie den Knoten ständig beenden, weil Sie glauben, dass er hängen geblieben ist, wird er mit derselben Transaktion neu gestartet, die er zuvor verarbeitet hat, und so viel länger dauern.
INFO [05-22|08:14:16] Imported new chain segment               blocks=1   txs=2    mgas=0.067  elapsed=11.000ms  mgasps=6.104   number=3745188 hash=9b8973…920c7e

Läuft seit ca 32 Stunden. Ran Geth mitgeth --rpc --fast -cache=1024

Größe des Ethereum-Ordners: 17,9 GB

Beachten Sie, dass fast veraltet und jetzt auch Standard ist. --syncmodeist der neue Schalter für das Sync-Verhalten.
Vielen Dank! Ich werde mich daran erinnern. Und mir ist auch aufgefallen, dass ich -cache statt --cache hatte. Gestern Abend die Synchronisierung neu gestartet und bis zu Nummer = 3753194 .. Viel besser.
Ich könnte mich hier irren, aber ich glaube, meine Blockchain ist auf dem neuesten Stand und ich habe es nicht bemerkt, bis ich verglichen habe, wo sich mein Geth-Client im Vergleich zum Netzwerkstatus für Eth befindet. Also bin ich bis hier: INFO [05-29 | 23:07:27] Neue Kettensegmentblöcke importiert = 1 txs = 8 mgas = 0,168 verstrichen = 19,999 ms mgasps = 8,400 Nummer = 3786778 Und ich kann ethstats.net überprüfen siehe da ich habe das neuste und bin sogar einen block voraus. Also bin ich im Grunde bereit, jetzt mit dem Mining zu beginnen. Ich glaube, ich war vor ein paar Tagen tatsächlich auf dem Laufenden, wusste aber nicht, dass ich neu bin.

Ich persönlich bevorzuge die Verwendung von Parity wegen der Snapshot-Funktion, die sie haben. Mit einer GCE-Cloud-Instanz konnte ich die gesamte Kette in 30 Minuten synchronisieren.

Hier ist eine Erklärung, wie es funktioniert: https://github.com/paritytech/parity/wiki/Warp-Sync-Snapshot-Format