Kann ich die schnelle Synchronisierung in Geth sicher unterbrechen und neu starten?

Ich bin neu bei Ethereum und versuche, einen neuen Knoten mit Geth einzurichten (unter Verwendung von 1.6.5-stable).

Ich laufe geth --fast --cache=1024und habe bisher ungefähr 3 Tage lang synchronisiert (Win 7, 6 GB RAM). Ich sehe viele Warnungen im Protokoll und einige Fehler, aber der Prozess scheint immer fortgesetzt zu werden.

Wenn sich die Dinge jedoch langsam zu bewegen scheinen, habe ich regelmäßig die Synchronisierung mit gestoppt Ctrl+C. Dies scheint zu einem sauberen Herunterfahren von Geth zu führen. Ich habe dann erneut mit neu gestartet geth --fast --cache=1024und die Synchronisierung scheint vom selben Punkt aus wieder aufzunehmen. Status bisher über eth.syncingin der Javascript-Konsole:

{
  currentBlock: 3294258,
  highestBlock: 3899534,
  knownStates: 47242,
  pulledStates: 3041,
  startingBlock: 3293182
}

Ist das ok? Konkret sind meine Fragen:

  1. Wird es funktionieren? Wird die Synchronisierung korrekt abgeschlossen und ergibt einen verwendbaren Knoten, wenn ich diese Vorgehensweise weiterhin befolge?
  2. Ist es sicher, --fastnach dem Unterbrechen mit der Flagge neu zu starten? Ich habe an anderer Stelle gelesen, dass das Flag nicht mit einem partiellen Download der Blockchain verwendet werden sollte, aber ich bin mir nicht sicher, ob sich dies auf eine historische „vollständige Synchronisierung“ oder auf irgendeine Art von partieller Synchronisierung bezieht.

Antworten (3)

Ja, Sie können die Kette mit dem --fastFlag so oft neu synchronisieren, wie Sie möchten, aber Sie müssen sicherstellen, dass es jedes Mal verwendet wird. Wenn Sie nur für ein paar Sekunden ohne das Fast-Flag synchronisiert haben, können Sie es nicht im Schnellmodus neu starten (naja, Sie können, aber es wird automatisch ausgeschaltet).

hm... irgendeine Ahnung, warum ich Blockchain not empty, fast sync disablednach einem Neustart bekomme? --fastwurde schon immer verwendet.

Wenn die schnelle Synchronisierung abgeschlossen ist, dh Sie mit dem Netzwerk synchronisiert sind und mindestens einer der vollständigen Blöcke aktualisiert wird, ist die schnelle Synchronisierung nicht mehr möglich (es sei denn, Sie starten sauber). So hat es zumindest meiner Erfahrung nach funktioniert.

Ich werde darauf hinweisen, dass beide Antworten früher etwas richtig sind:

geth --fast funktioniert nur, wenn chaindata leer ist, die einzige Zeit, in der sich geth im tatsächlichen schnellen Modus befindet, ist, wenn Sie es mit leeren chaindata ausführen. Neuere Versionen von Geths haben standardmäßig den Schnellmodus, aber das bedeutet nicht, dass Sie tatsächlich schneller sind als der Vollmodus. das hat mehrere implikationen:

  1. Wenn Sie es zum ersten Mal synchronisieren, funktioniert geth --fast, es lädt eine Momentaufnahme des Verlaufs herunter
  2. Wenn Sie nicht zum ersten Mal synchronisieren, führt geth --fast nicht zu Fehlern, aber Sie sehen eine Protokollmeldung mit der Aufschrift „Blockchain nicht leer, schnelle Synchronisierung deaktiviert“. Das bedeutet, obwohl Sie mit --fast laufen, weil chaindata nicht leer ist, synchronisieren Sie eigentlich nicht schnell.

    2.a Wenn die schnelle Synchronisierung zuvor abgeschlossen wurde, ist dies in Ordnung, sie hat ihre Aufgabe erfüllt und Sie können weiterhin synchronisiert werden

    2.b Wenn die schnelle Synchronisierung nicht abgeschlossen wurde, gibt es keine Möglichkeit, sie fortzusetzen. Sie müssen Kettendaten entfernen und die schnelle Synchronisierung von Grund auf neu starten