Ich versuche, mein RPi 2 mit der Blockchain zu synchronisieren.
geth import
läuft ziemlich langsam, sowie die Synchronisierung von Grund auf neu.
Was wäre das Problem, wenn man einfach den .ethereum/chaindata
Ordner von einem anderen vollständig synchronisierten Ethereum-Knoten kopiert?
geth speichert seine internen Zustände für das Hauptnetzwerk im Chaindata-Verzeichnis. Sie finden es im Verzeichnis:
Es verwendet die LevelDB-Datenbank. Sie können dieses Verzeichnis nur speichern, wenn geth gestoppt ist, um Beschädigungen zu vermeiden. Die Daten sind auf Linux , Windows und MacOS X portierbar (ich habe es überprüft). Aber Sie müssen bedenken, dass dies kein sicherer Weg ist. Verwenden Sie keine von anonym bereitgestellten Chaindata-Archive. Die Transaktionen werden nicht geprüft! Wenn geth startet, prüft es, ob alle Dateien vorhanden sind. Wenn eine .ldb-Datei fehlt, ist das Chaindata-Verzeichnis beschädigt und Sie müssen dieses Verzeichnis entfernen!
Der Import und Export von geth ist sicher, aber langsam, da alle Transaktionen überprüft werden und die Operation die gleiche ist wie bei geth ohne das Flag --fast. Auf meinem 3720qm werden dafür 5h und 19Go Plattenspeicher verwendet. Die einzige Einsparung ist der Netzwerk-Download (1.5Go). Es ist schneller, einen Geth zu machen – schnell!
Auf meinem Intel 3720qm Mac Mini (1 Gbit/s) erhalten einige Bänke 1.4:
__________________________________________________
| Operation | Disk Used | Time | Disk Written |
|-------------|-----------|------|---------------|
| geth | 19.Go | 5h00 | 1To |
| geth import | 19.Go | 4h50 | 1To |
| geth --fast | 3.7Go | 1h00 | 100Go |
--------------------------------------------------
Auf meinem Intel 3720qm Mac Mini (1 Gbit / s) erhalten einige Bänke 1.5 (in Entwicklung):
__________________________________________________
| Operation | Disk Used | Time | Disk Written |
|-------------|-----------|------|---------------|
| geth --fast | 3.8Go | 17m | 25Go |
| geth | 19Go | 2h | 100Go |
--------------------------------------------------
Fazit:
Das Kopieren des .ethereum/chaindata
Ordners ist eine gute Idee. Ich habe das auf meinem Rpi2 gemacht und alles hat gut funktioniert. Auch wenn es auf dem Originalcomputer nicht vollständig synchronisiert ist, beginnt der RPi2 einfach mit der Synchronisierung vom letzten Block im kopierten Chaindata-Ordner, wodurch viel Zeit gespart wird.
Beachten Sie, dass ich nie gelaufen bin geth import blockchain_db
. Es war nicht nötig. Das Kopieren des chaindata
Ordners war einfach und es funktioniert.
Ich habe die vollständige Blockchain auf 1.088.000 Blöcken in 13 min exportiert. (1.00 GB) Um es auf einem Ubuntu 14.04-Rechner und nicht schlechter Hardware zu importieren, dauerte es über 8 Stunden! Importieren oder vollständig von Grund auf synchronisieren ist also kein großer Zeitunterschied. Das Starten der Konsole nach dem Import der Blockchain dauert wieder ca. 20 min.
Es funktioniert, aber beim nächsten Mal würde ich auf jeden Fall versuchen, das einfach zu kopieren, chaindata
da es auch funktionieren und viel Zeit sparen sollte.
Führen Sie eine schnelle Synchronisierung durch, dafür wurde es entwickelt :) Löschen Sie Ihr vorhandenes chaindata
und führen Sie es mit --fast
aus. Versuchen Sie möglicherweise, den zugewiesenen Cache ein wenig zu erhöhen --cache 128
. Es sollte einen himmelweiten Unterschied machen.
Der Export des Blocks 9389279 dauert weniger als 1 Stunde.
Ich habe den Befehl verwendet:
docker run -d --rm -v $PWD/full-ethereum-node:/root/.ethereum ethereum/client-go export /root/.ethereum/geth/chaindata/9389270.backup 0 9389270
Aber das Importieren der gesamten 9389270.backup-Datei ist so langsam, dass es gleich ist, den Knoten vom Genesis-Block mit dem Netzwerk zu synchronisieren.
Die Testumgebung war: Intel I9 (10 Kerne), 64 GB RAM und SSD
Ich habe den Ethereum Geth-Knoten auf meinem Raspberry PI 4B 8 GB mit 2 TB SSD synchronisiert, das über USB 3.0 angeschlossen ist. Es hat mehr als 3 Monate gedauert! Danach habe ich eine Lösung erstellt , die jedem helfen kann, schnell einen Ethereum Geth-Knoten zu starten. Laden Sie einfach den Ordner geth chaindata über HTTP herunter und synchronisieren Sie weiterhin Ihren eigenen Knoten mit dem definierten Schlüssel mit--datadir
dem vorab heruntergeladenen Ordner.
Wenn Sie Ihre Ethereum-Installation auf einen anderen Computer verschieben oder beispielsweise eine Kopie auf einem anderen System für Solo-Mining haben möchten, möchten Sie neben einer Kopie der Wallet-Datei möglicherweise auch eine Kopie der Blockchain erstellen, damit die Der Geth-Client muss das Ganze nicht erneut aus dem Netzwerk herunterladen.
So können Sie die Ethereum-Blockchain auch exportieren und dann importieren, falls dies erforderlich sein sollte.
– Run: geth export blockchain_backup
– Copy the blockchain_backup file to the new system
– On the new system run: geth import blockchain_backup
Sie können die Blockchain-Daten auch aus einem Geth-Konsolenmodus exportieren und importieren, aber es scheint, dass es viel langsamer ist, wenn es innerhalb der Konsole ausgeführt wird als die obige Methode. Die Befehle für die Javascript-Konsole sind admin.exportChain('blockchain_backup')
und admin.importChain('blockchain_backup')
, Sie können es also auch damit versuchen, aber das erste Beispiel sollte schneller sein.
José Llausas