Lorsqu'un nouveau nœud rejoint le réseau Spacemesh, il doit d'abord se mettre au niveau du reste de ses pairs. Ce processus est appelé « synchronisation » et constitue une condition préalable à l'exécution d'un nœud complet ou de maillage. Historiquement, il a été difficile pour les smeshers de synchroniser avec succès leurs nœuds en raison de la lenteur du processus de synchronisation. Principalement, la synchronisation comprend le téléchargement et la vérification indépendante de tous les blocs, transactions, ATX, ainsi que d'autres données, et la reconstruction de l'état actuel à partir de zéro. Naturellement, cela prenait beaucoup de temps au broyeur moyen. Ainsi, en réponse à la difficulté croissante de synchroniser un nouveau nœud, nous avons préparé un moyen d’accélérer le processus de synchronisation. Présentation de Quicksync.
Avec Quicksync, au lieu d'effectuer toutes les actions de synchronisation comme indiqué ci-dessus et de calculer l'état du réseau à partir de Genesis, il suffit de télécharger l'état actuel à partir d'un homologue de confiance comme l'équipe de développement Spacemesh ou un autre nœud. Bien que cela soit contraire à la philosophie Web3 « Ne faites pas confiance, vérifiez », nous pensons que cela pourrait être un choix qui pourrait intéresser certains smeshers étant donné le taux élevé de problèmes de synchronisation. De plus, rien n’empêche un smesher de vérifier cet état en arrière-plan une fois téléchargé.
L'état (également appelé archive) téléchargé se présente sous la forme d'un fichier state.sql et peut être téléchargé automatiquement à l'aide de Smapp ou manuellement à l'aide de l'utilitaire quicksync-rs
.
Les instructions d'utilisation quicksync-rs
pour télécharger le dernier état sont données ci-dessous. Notez que si vous utilisez la dernière version de Smapp, il vous proposera automatiquement d'utiliser quicksync pour récupérer le dernier état.
quicksync-windows-vX.XXzip
à partir de la section des versions de GitHub.quicksync.exe
du fichier zip téléchargé à l’étape 1.quicksync.exe
vers votre dossier spacemesh
. Par défaut, ce dossier se trouve dans : C:Users{USERNAME}spacemesh
.state.sql
dans votre dossier de données de nœud (situé dans le répertoire spacemesh
et nommé node-data
par défaut), supprimez-le. Sinon, passez à l'étape 5.spacemesh
où se trouve le fichier quicksync.exe
. Vous pouvez le faire en maintenant la touche « Shift », en cliquant avec le bouton droit et en sélectionnant l'option « Ouvrir Powershell ici »..quicksync.exe --help
et appuyez sur Entrée. Cela vous montrera les options disponibles..quicksync.exe download --node-data .node-data
. Ici, .node-data
est le chemin d'accès au dossier de données du nœud.quicksync-rs
téléchargera, décompressera et vérifiera l'état téléchargé.state.sql
. quicksync-linux-vX.XXzip
à partir de la section des versions de GitHub.quicksync
du fichier zip téléchargé à l'étape 1.quicksync
exécutable à l'aide de cette commande CLI : chmod +x quicksync
. Vous avez maintenant l’exécutable quicksync
.quicksync
vers le répertoire spacemesh
(situé dans ~/spacemesh
par défaut).state.sql
dans votre dossier de données de nœud (situé dans le répertoire spacemesh
et nommé node-data
par défaut), supprimez-le. Sinon, passez à l'étape 6.spacemesh
où se trouve l'exécutable quicksync
et exécutez cette commande : ./quicksync download --node-data ./node-data
. Ici, ./node-data
est le chemin d'accès au dossier de données du nœud.quicksync-rs
téléchargera, décompressera et vérifiera l'état téléchargé.state.sql
. quicksync-macos-vX.XXzip
(ou quicksync-macos-arm64-vX.XXzip
si vous possédez un Mac de la série M) à partir de la section des versions de GitHub.quicksync
du fichier zip téléchargé à l'étape 1.quicksync
exécutable à l'aide de cette commande CLI : chmod +x quicksync
. Vous avez maintenant l’exécutable quicksync
.quicksync
vers le répertoire spacemesh
. (situé dans ~/spacemesh
par défaut).state.sql
dans votre dossier de données de nœud (situé dans le répertoire spacemesh
et nommé node-data
par défaut), supprimez-le. Sinon, passez à l'étape 6.spacemesh
où se trouve l'exécutable quicksync
et exécutez cette commande : ./quicksync download --node-data ./node-data
. Ici, ./node-data
est le chemin d'accès au dossier de données du nœud.quicksync-rs
téléchargera, décompressera et vérifiera l'état téléchargé.state.sql
. Vous trouverez ci-dessous les codes de sortie et leur signification :
0
- Tout va bien.1
- Échec du téléchargement de l'archive dans le nombre maximal de tentatives (pour quelque raison que ce soit).2
- Impossible de décompresser l'archive : espace disque insuffisant.3
- Impossible de décompresser l'archive : toute autre raison.4
- Somme de contrôle invalide du state.sql
téléchargé.5
- Impossible de vérifier la somme de contrôle pour une raison quelconque.6
- Impossible de créer un fichier de sauvegarde.7
- Somme de contrôle de l'archive invalide.8
- Impossible de valider la somme de contrôle de l'archive. Il est également possible de télécharger et d'appliquer une synchronisation rapide basée sur delta. En supposant que le state.sql
soit déjà présent, il vaut la peine d'envisager d'appliquer uniquement des deltas en plus de cela. Veuillez noter que la synchronisation de grandes portions sera plus rapide avec une synchronisation rapide complète, mais si vous êtes déjà synchronisé et que vous avez juste besoin de rattraper le dernier état, incrémenter une synchronisation rapide est la voie à suivre.
La synchronisation rapide incrémentielle fonctionne en vérifiant la dernière couche vérifiée dans la base de données, puis en téléchargeant de petits fichiers (généralement environ 50 Mo mais jusqu'à 200 Mo) et en les appliquant par-dessus le state.sql
existant. Chaque lot peut être interrompu.
La restauration du même lot deux fois est considérée comme une opération inutile et n'affectera pas la base de données.
La liste des commandes disponibles pour l'utilitaire quicksync
est présentée ci-dessous. Notez que ces commandes sont pour Linux. Remplacez simplement ./quicksync
par .quicksync.exe
pour les commandes Windows.
./quicksync download
: Télécharge le dernier fichier state.sql
../quicksync check
: Vérifie si le state.sql
actuel est à jour../quicksync help
: affiche toutes les opérations que quicksync
peut effectuer../quicksync incremental
: Permet de travailler avec une synchronisation rapide basée sur delta../quicksync --version
: Affiche la version de quicksync.cargo run -- help
: affiche les commandes utiles pour exécuter le package. Pertinent pour les développeurs.