Holen Sie sich Sync und beenden Sie

Normalerweise lasse ich meine Geth-Instanz nicht laufen, aber ich möchte meine Ethereum-Blockchain synchronisiert halten, damit das Starten von Geth nicht langsam ist. Ich begründe, dass ich dafür einen Cronjob erstellen kann.

Meine Frage ist also: Wie kann ich sagen, gethdass ich starten, synchronisieren und dann sofort beenden soll?

Neue Blöcke werden im Durchschnitt alle 15 Sekunden hinzugefügt. Wollen Sie diesen Cronjob also alle 15 Sekunden ausführen?
Nein. Ich erwarte nicht, dass es perfekt synchronisiert ist; gerade genug synchronisiert, dass beim Start nicht viele Tage lang Blöcke heruntergeladen werden müssen.
Ich dachte, einmal pro Woche, um ehrlich zu sein.

Antworten (3)

Verwenden Sie den Schlüssel:

--exitwhensynced(Beendet nach Abschluss der Blocksynchronisierung)

Bezüglich https://github.com/ethereum/go-ethereum/wiki/command-line-options

Noch eine Antwort, nach der Sie nicht gesucht haben:parity --mode passive

Ich weiß, parityist es nicht geth, aber das --mode passivetut genau das, wonach Sie gefragt haben.

--mode MODE            Set the operating mode. MODE can be one of:
                       last - Uses the last-used mode, active if none.
                       active - Parity continuously syncs the chain.
                       passive - Parity syncs initially, then sleeps and
                       wakes regularly to resync.
                       dark - Parity syncs only when the RPC is active.
                       offline - Parity doesn't sync. (default: last).

Ich verwende den passiveModus auf allen meinen Geräten, da er nach der Synchronisierung für etwa eine Stunde in den Ruhemodus geht und dann erneut nach neuen Blöcken sucht. Das spart auf meinen Rechnern meistens eine Menge Ressourcen.

Siehe auch:

--mode-timeout SECS    Specify the number of seconds before inactivity
                       timeout occurs when mode is dark or passive
                       (default: 300).
--mode-alarm SECS      Specify the number of seconds before auto sleep
                       reawake timeout occurs when mode is passive
                       (default: 3600).

Ich weiß nicht, warum Sie speziell Geth benötigen, aber es ist möglich, dass Parity die Lösung ist, nach der Sie suchen.

Insbesondere ermöglicht Parity die Synchronisierung, sodass der Inhalt von Blöcken nicht überprüft wird und Ihr Client einfach die aktuellste Version des Status herunterlädt. Dies kann mit ausgeführt werden parity --warpund entfernt die lange Synchronisierungszeit, die Sie mit GETH erleben.

Selbst mit --warpwird der gesamte Satz von Blockchain-Daten irgendwann heruntergeladen, es wird nur ein Großteil der Daten im Hintergrund synchronisiert. Wenn das OP einen vollständigen Satz von Kettendaten möchte, --warpbeschleunigt dies die Dinge nicht wirklich.
Es scheint mir, als ob das Problem von OP darin besteht, dass es jedes Mal, wenn er seinen Knoten hochdreht, lange dauert. Anstatt zu versuchen, eine aktuellere Version der Blockchain konsistent zu halten (mit einem Cronjob), können Sie einfach jedes Mal mit synchronisieren, wodurch Sie --warpdie gleiche Zeitersparnis erhalten, ohne dies überhaupt konsistent ausführen zu müssen. Letztendlich kommt es darauf an, darauf zu vertrauen, dass die Bestätigungen, die während Ihrer Abwesenheit erfolgt sind, echt und nicht betrügerisch sind.
Soweit ich das beurteilen kann, --warpwird die Menge der heruntergeladenen Blockchain-Daten nicht verringert. Es synchronisiert zunächst eine Teilmenge der Daten in einem ersten Durchgang und füllt später im Hintergrund die Lücken mit den restlichen Daten. Es ist der erste Durchgang, der einige Minuten dauert und auf dem die Überschrift „Synchronisierung innerhalb von 10 Minuten“ basiert. Ich glaube nicht, dass es eine Möglichkeit gibt, die Synchronisierung nach nur diesem ersten Durchgang zu stoppen - wenn ja, müsste das OP dieser Teilmenge von Daten vertrauen. So müsste er auch die zweite Phase der Hintergrundsynchronisierung in seinem Cron-Skript berücksichtigen.