Sauvegarde de sa blockchain Chia

crypto 18/01/2023

La blockchain Chia utilise une base de données sqlite3 pour le stockage des données. La synchronisation est beaucoup plus rapide depuis le passage en v2 mais globalement cela représente tout de même ~100GB à ce jour (17/01/2023).

En cas de grosse dé-synchronisation, beaucoup vont télécharger une sauvegarde existante de la blockchain en provenance d'un site tier, qu'il soit de "confiance" ou pas (mais faut-il encore le savoir). De mon point de vue, ça reste une très mauvaise idée pour une blockchain dans le sens où personne ne peut me garantie qu'il n'y a pas de corruption ou d'altération, soit du site tier, soit durant le téléchargement.

Donc globalement, soit vous repartez de zéro, soit vous repartez d'une de vos sauvegardes mais en aucun cas d'une sauvegarde téléchargée sur internet.

Sauvegarde via sqlite3

Voici une petite commande vous permettant de faire une sauvegarde à chaud (sans coupure) de votre blockchain, avec l'utilitaire sqlite3 :

sqlite3 ~/.chia/mainnet/db/blockchainv2_mainnet.sqlite "vacuum into '/backup/blockchain_v2_mainnet.sqlite'"

Votre fichier blockchain de sauvegarde sera donc "/backup/blockchain.sqlite", que vous pouvez ensuite compresser dans le format que vous souhaitez (gzip, bzip2, ...). Comme dit plus haut, cela se fait entièrement à chaud, donc aucune raison de ne pas le faire.

Sauvegarde via chia cli

L'autre solution consiste à utiliser directement chia db tel que cela est défini dans cette documentation (à partir de la version 1.5.1). Pour ce faire, vous devrez utiliser la commande suivante :

chia db backup --backup_file /backup/blockchain_v2_mainnet.sqlite

Vous pouvez rajouter l'option --no_indexes (sans les index) pour faire un backup moins gros d'environ 10 ou 20GB. Par contre lors d'une restauration il faudra un peu de temps (environ 1 à 2h) pour la reconstruction des index.

Restauration

Dans le cas d'une restauration, la procédure est simplement la suivante :

  • Stopper votre farmer :
chia stop -d all
  • Supprimer votre db blockchain actuelle :
rm -vf ~/.chia/mainnet/db/blockchain_v2_mainnet.sqlite
  • Copier votre sauvegarde :
cp /backup/blockchain_v2_mainnet.sqlite ~/.chia/mainnet/db/blockchain_v2_mainnet.sqlite
  • Relancer votre farmer :
chia start farmer

Voilà c'est terminé ! Vous n'avez plus qu'à attendre la fin de la synchronisation 🎉 (qui sera plus ou moins long en fonction de la date de votre sauvegarde).

Avec sqlite3, vous pourriez également faire un backup de votre wallet, mais pour ma part, cela n'a pas trop de sens où depuis le passage en v2, c'est ultra rapide à re-synchroniser (je parle bien du wallet) !

Tags

🌱 DJΞRFY 🚀

👨🏻‍💻 Tech Lead SRE. Like #Linux, #Apple, #Kubernetes, #Docker, #Unraid, #Traefik, #Hacking, #Chia. Member of @OpenChia Team 🌱 ¯\_(ツ)_/¯