Ich betreibe einen Geth-Knoten auf langsamer Hardware. Bei der derzeitigen Fortschrittsrate könnte es mehrere Tage dauern, bis ich die gesamte Blockchain herunterladen kann. Gibt es eine Möglichkeit, es schneller zu synchronisieren?
Wenn Sie dazu in der Lage sind, ist die Verwendung einer NVMe-SSD noch besser.
Wenn Sie nur begrenzten Speicherplatz auf der SSD haben, siehe Können Kettendaten auf zwei (oder mehr) Standorte aufgeteilt werden?
Allerdings ist der Ethereum-Staat groß und wird immer größer. Seien Sie geduldig und es wird sich lohnen.
Vorherige Antwort
--cache
Jeder erwähnt --fast
, aber Sie brauchen wahrscheinlich auch--cache=1024
. Ohne es laufen Sie mit dem Standard, der --cache=128
(Geth 1.6.7) ist.
Eine Geschwindigkeitssteigerung von 50 % ist nur durch Erhöhen des Caches möglich.
Wenn Sie von vorne beginnen, verwenden Sie:geth --fast --cache=1024
Wenn Sie bereits einen Teil der Blockchain haben, verwenden Sie:geth --cache=1024
Abhängig von Ihrem Arbeitsspeicher können Sie es auch mit höheren Werten versuchen, z --cache=2048
.
Wenn Sie den Geth-Client verwenden, können Sie einige Dinge tun, um die Zeit zu verkürzen, die zum Herunterladen der Ethereum-Blockchain benötigt wird. Wenn Sie sich dafür entscheiden, das Flag --fast zu verwenden, um eine schnelle Ethereum-Synchronisierung durchzuführen, werden Sie keine vergangenen Transaktionsdaten behalten.
Notiz
Sie können dieses Flag nicht verwenden, nachdem Sie einen normalen Synchronisierungsvorgang ganz oder teilweise durchgeführt haben, was bedeutet, dass Sie keinen Teil der Ethereum-Blockchain heruntergeladen haben sollten, bevor Sie diesen Befehl verwenden. Weitere Informationen finden Sie in dieser Ethereum Stack.Exchange-Antwort.
Nachfolgend finden Sie einige Flags, die Sie verwenden können, wenn Sie Ihren Client schneller synchronisieren möchten.
--schnell
Dieses Flag ermöglicht eine schnelle Synchronisierung durch Zustandsdownloads, anstatt die vollständigen Blockdaten herunterzuladen. Dadurch wird auch die Größe Ihrer Blockchain drastisch reduziert. HINWEIS: --fast kann aus Sicherheitsgründen nur ausgeführt werden, wenn Sie Ihre Blockchain von Grund auf neu synchronisieren und nur beim ersten Herunterladen der Blockchain. Weitere Informationen finden Sie in diesem Reddit-Beitrag.
--cache=1024
Megabyte Speicher, der dem internen Caching zugewiesen ist (mindestens 16 MB / Datenbank erzwungen). Der Standardwert ist 16 MB, also sollte die Erhöhung auf 256, 512, 1024 (1 GB) oder 2048 (2 GB) je nachdem, wie viel RAM Ihr Computer hat, einen Unterschied machen.
Die --fast
Befehlszeilenoption wird schneller synchronisiert. Sie müssen es jedoch von Grund auf neu verwenden, Sie können es nicht verwenden, wenn die Blockchain bereits heruntergeladen wurde. Wenn Sie einen Knoten haben, der bereits synchronisiert ist, können Sie die Javascript-Schnittstelle und die Befehle exportChain und importChain verwenden, um Ihren Knoten zu synchronisieren.
--fast
es muss getan werden, bevor irgendetwas synchronisiert wurde.Es gibt 2 Möglichkeiten mit geth
, die mir bekannt sind
1. Synchronisieren mit dem--fast
geth --fast
Sie beginnen können . Ermöglicht schnelles Synchronisieren durch Status-Downloads
2. Verwenden Sie dazu den import
Befehl in Geth , Sie benötigen eine bereits synchronisierte Blockchain von Geth und sie muss mit exportiert werden geth export filename
, die importiert werden kanngeth import filename
Um Geth am schnellsten zu synchronisieren , empfehle ich die Verwendung von Geth 1.4.6. Ältere Versionen sind viel langsamer.
Spoiler : HDD-Synchronisation ist sehr langsam.
Es gibt zwei Modi für die Synchronisation:
Tipp 1 : Wenn Sie bereits ein Geth auf einem Computer synchronisiert haben, können Sie das Chaindata-Verzeichnis sichern und für einen anderen Computer kopieren. Ich überprüfe OS X, Linux und Windows (alle in der 64-Bit-Version).
Tipp 2 : Die Export/Import-Methode funktioniert. Die Importdauer ist sehr lang, da alle Transaktionen geprüft werden.
Tipp 3 : Wenn Sie genug RAM und keine SSD haben, verwenden Sie Ihren RAM als Ramdisk und wählen Sie Ihre Ramdisk mit der Option --datadir aus. Sie benötigen 4,2 GB für eine schnelle Synchronisierung. Wenn die Synchronisierung abgeschlossen ist, kopieren Sie das Verzeichnis chaindata an seinen ursprünglichen Platz:
Ich habe viele Benchmarks mit verschiedenen Versionen für diese Frage gemacht: Wie viel schneller ist es, mit --jitvm zu synchronisieren?
Hinweis 1: Wenn Sie eine Festplatte verwenden, scheint die Synchronisierung langsamer zu sein. Die schnelle Methode war 4h auf meinem System.
Hinweis 2: RAMDiskCreator unter OS X ist eine Freeware zum Erstellen einer RAM-Disk.
Jitvm- und Cache-Optionen haben einen geringen Einfluss auf meine Bank
--fast
ist veraltet und --jitvm
wird entfernt. Brauchen wir alternative Flaggen?--fast
wird durch ersetzt --syncmode fast
, daher ist es nicht wirklich veraltet, es zu verwenden, es muss nur in den neuen Parameter konvertiert werden.3. Synchronisieren Sie auf einem schnellen Rechner und kopieren Sie das Chaindata-Verzeichnis auf Ihren langsamen Rechner . Chaindata ist über Architekturen hinweg portierbar. Also, synchronisieren Sie, stoppen Sie den Knoten sauber, übertragen Sie das Chaindata-Verzeichnis (ersetzen Sie Ihr altes) und starten Sie den Knoten auf einem anderen Computer. Um das Risiko zu minimieren, verwenden Sie auf beiden Rechnern identische Versionen von geth. (Ich habe dies für x86_64 -> armv7h erfolgreich mit Geth 1.4.5 gemacht, andere auch .)
Barney Kammern
eth
Justin
fast
, und der Standardwertcache
ist 1024.