Wenn ein neuer Knoten dem Spacemesh-Netzwerk beitritt, muss er sich zunächst mit den übrigen Knoten vertraut machen. Dieser Vorgang wird als „Synchronisierung“ bezeichnet und ist eine Voraussetzung für die Ausführung eines vollständigen oder Smashing-Knotens. In der Vergangenheit war es für Smesher schwierig, ihre Knoten erfolgreich zu synchronisieren, da der Synchronisierungsprozess sehr zeitaufwändig war. Die Synchronisierung umfasst in erster Linie das Herunterladen und unabhängige Überprüfen aller Blöcke, Transaktionen, ATXs und einiger anderer Daten sowie die Rekonstruktion des aktuellen Status von Grund auf. Das kostete den durchschnittlichen Smesher natürlich viel Zeit. Als Reaktion auf die zunehmende Schwierigkeit, einen neuen Knoten zu synchronisieren, haben wir eine Möglichkeit vorbereitet, den Synchronisierungsprozess zu beschleunigen. Wir stellen vor: Quicksync.
Anstatt alle oben genannten Synchronisierungsaktionen durchzuführen und den Netzwerkstatus anhand der Genesis zu berechnen, muss man mit Quicksync lediglich den aktuellen Status von einem vertrauenswürdigen Peer wie dem Spacemesh-Entwicklerteam oder einem anderen Knoten herunterladen. Obwohl dies im Widerspruch zur Web3-Philosophie „Nicht vertrauen, sondern überprüfen“ steht, glauben wir, dass dies eine Option sein könnte, an der einige Smesher angesichts der hohen Synchronisierungsprobleme interessiert sein könnten. Darüber hinaus hindert einen Smesher nichts daran, diesen Status nach dem Herunterladen im Hintergrund zu überprüfen.
Der heruntergeladene Status (auch Archiv genannt) liegt in Form einer state.sql-Datei vor und kann entweder automatisch mit Smapp oder manuell mit dem Dienstprogramm quicksync-rs
heruntergeladen werden.
Anweisungen zur Verwendung von quicksync-rs
zum Herunterladen des neuesten Stands finden Sie unten. Beachten Sie, dass, wenn Sie die neueste Version von Smapp verwenden, automatisch angeboten wird, Quicksync zum Abrufen des neuesten Status zu verwenden.
quicksync-windows-vX.XXzip
aus dem GitHub-Release-Bereich herunter.quicksync.exe
aus der in Schritt 1 heruntergeladenen ZIP-Datei.quicksync.exe
in Ihren spacemesh
Ordner. Standardmäßig befindet sich dieser Ordner unter: C:Users{USERNAME}spacemesh
.state.sql
in Ihrem Node-Data-Ordner sehen (im spacemesh
-Verzeichnis und standardmäßig node-data
genannt), löschen Sie sie. Andernfalls fahren Sie mit Schritt 5 fort.spacemesh
-Verzeichnis, in dem sich die Datei quicksync.exe
befindet. Sie können dies tun, indem Sie die Umschalttaste gedrückt halten, mit der rechten Maustaste klicken und die Option „Powershell hier öffnen“ auswählen..quicksync.exe --help
ein und drücken Sie die Eingabetaste. Dadurch werden Ihnen die verfügbaren Optionen angezeigt..quicksync.exe download --node-data .node-data
ein. Hier ist .node-data
der Pfad zum Knotendatenordner.quicksync-rs
lädt herunter, entpackt es und überprüft den heruntergeladenen Status.state.sql
Datei enthalten. quicksync-linux-vX.XXzip
aus dem GitHub-Release-Bereich herunter.quicksync
Datei aus der in Schritt 1 heruntergeladenen ZIP-Datei.quicksync
Datei mit diesem CLI-Befehl ausführbar: chmod +x quicksync
. Jetzt haben Sie die ausführbare quicksync
Datei.quicksync
Datei in das spacemesh
-Verzeichnis (standardmäßig unter ~/spacemesh
).state.sql
in Ihrem Node-Data-Ordner sehen (im spacemesh
-Verzeichnis und standardmäßig node-data
genannt), löschen Sie sie. Andernfalls fahren Sie mit Schritt 6 fort.spacemesh
-Verzeichnis, in dem sich die ausführbare quicksync
Datei befindet, und führen Sie diesen Befehl aus: ./quicksync download --node-data ./node-data
. Hier ist ./node-data
der Pfad zum Knotendatenordner.quicksync-rs
lädt herunter, entpackt es und überprüft den heruntergeladenen Status.state.sql
Datei enthalten. quicksync-macos-vX.XXzip
(oder quicksync-macos-arm64-vX.XXzip
wenn Sie einen Mac der M-Serie haben) aus dem GitHub-Release-Bereich herunter.quicksync
Datei aus der in Schritt 1 heruntergeladenen ZIP-Datei.quicksync
Datei mit diesem CLI-Befehl ausführbar: chmod +x quicksync
. Jetzt haben Sie die ausführbare quicksync
Datei.quicksync
Datei in das spacemesh
-Verzeichnis. (standardmäßig unter ~/spacemesh
zu finden).state.sql
in Ihrem Node-Data-Ordner sehen (im spacemesh
-Verzeichnis und standardmäßig node-data
genannt), löschen Sie sie. Andernfalls fahren Sie mit Schritt 6 fort.spacemesh
-Verzeichnis, in dem sich die ausführbare quicksync
Datei befindet, und führen Sie diesen Befehl aus: ./quicksync download --node-data ./node-data
. Hier ist ./node-data
der Pfad zum Knotendatenordner.quicksync-rs
lädt herunter, entpackt es und überprüft den heruntergeladenen Status.state.sql
Datei enthalten. Nachfolgend sind die Exit-Codes und ihre Bedeutung aufgeführt:
0
– Alles gut.1
– Das Herunterladen des Archivs ist innerhalb der maximalen Wiederholungsversuche fehlgeschlagen (beliebiger Grund).2
– Archiv kann nicht entpackt werden: nicht genügend Speicherplatz.3
– Archiv kann nicht entpackt werden: aus einem anderen Grund.4
– Ungültige Prüfsumme der heruntergeladenen state.sql
.5
– Die Prüfsumme kann aus irgendeinem Grund nicht überprüft werden.6
– Es kann keine Sicherungsdatei erstellt werden.7
– Ungültige Prüfsumme des Archivs.8
– Die Prüfsumme des Archivs kann nicht validiert werden. Es ist auch möglich, Delta-basiertes Quicksync herunterzuladen und anzuwenden. Unter der Annahme, dass state.sql
bereits vorhanden ist, lohnt es sich darüber nachzudenken, darüber hinaus nur Deltas anzuwenden. Bitte beachten Sie, dass die Synchronisierung großer Teile mit vollständigem Quicksync schneller geht. Wenn Sie jedoch bereits synchronisiert sind und nur den neuesten Stand abrufen müssen, ist Incrementa Quicksync die richtige Wahl.
Beim inkrementellen Quicksync wird die neueste verifizierte Ebene in der Datenbank überprüft, dann kleine Dateien (normalerweise etwa 50 MB, aber bis zu 200 MB) heruntergeladen und auf die vorhandene state.sql
angewendet. Jede Charge kann unterbrochen werden.
Das zweimalige Wiederherstellen desselben Batches gilt als No-Op und hat keine Auswirkungen auf die Datenbank.
Die Liste der verfügbaren Befehle für das quicksync
Dienstprogramm ist unten aufgeführt. Beachten Sie, dass diese Befehle für Linux gelten. Ändern Sie einfach ./quicksync
in .quicksync.exe
für die Windows-Befehle.
./quicksync download
: Lädt die neueste state.sql
Datei herunter../quicksync check
: Überprüft, ob die aktuelle state.sql
aktuell ist../quicksync help
: Zeigt alle Vorgänge an, die quicksync
ausführen kann../quicksync incremental
: Ermöglicht die Arbeit mit Delta-basiertem Quicksync../quicksync --version
: Zeigt die Quicksync-Version an.cargo run -- help
: Zeigt hilfreiche Befehle zum Ausführen des Pakets an. Relevant für Entwickler.