Exporter la blockchain au format JSON avec dex

Je viens de coder dans dex une fonctionnalité d’export de l’intégralité de la blockchain au format JSON :smiley:

Cette fonctionnalité va permettre à tout programme tiers de récupérer le contenu de la blockchain et de construire les données qu’il souhaite à partir de celle-ci.

Voici la commande :

dex export-bc path/to/out/dir

Pour installer dex (vous devez avoir la toolchain rust stable) :

git clone https://git.duniter.org/nodes/typescript/duniter
cargo bdex

Options de dex export-bc

Par défaut le JSON écrit est sans «whitespace», c’est à dire sans saut de ligne, sans tabulations et sans espaces. Cela permet d’avoir des fichiers plus compacts, mais difficilement lisibles par un humain.
Pour générer un JSON «aérér», utilisez l’option --pretty

Il est également possible de choisir la taille des chunk avec l’option --chunk-size (1000 par défaut).

Ce post n’est pas exhaustif et pas forcément à jour, pour connaître toutes les options actuelles, consultez l’aide via la commande dex export-bc --help :slight_smile:

Mais il y a déjà des archives de la blockchain au format JSON dans le dossier g1 ?

Oui, sauf que Duniter n’en a pas besoin, et que donc les prochaines versions de Duniter ne généreront plus ces archives. Si vous en dépendez, merci de passer par dex export-bc désormais.

De plus, ces archives ne contiennent pas les blocs reçus après la sync :wink:

Le format de sortie de dex export-bc va t’il changer dans le futur ?

Oui légèrement, les champs suivant n’existeront plus :

  • fork
  • UDTime
  • writtenOn
  • written_on
  • wrong

De plus, les champs suivant vaudront null au lieu de "" :

  • parameters
10 Likes

Super je vais regarder ça à l’occaz!

Je ne savais même pas que ça existait ^^

C’est exactement ma réaction quand j’ai lu le billet ! Merci pour les précisions à ce sujet. :sweat_smile:

1 Like

Que signifie dex ? De quoi s’agit-il ?

1 Like

Est-ce qu’une âme charitable qui a un nœud Duniter sous la main pourrait mettre à disposition une archive de la blockchain au format JSON ? C’est pour travailler sur la toile de confiance animée ^^

1 Like

Je te l’ai envoyée par mail :slight_smile:

2 Likes

Je viens de modifier le format d’export JSON pour qu’il soit compatible avec les chunk qu’attend duniter pour une synchro locale (à condition d’activer les options --chunk-size 250 et --pretty).

Les changements effectués :

  • Changement de la structure JSON: ce n’est plus un tableau mais un objet avec un champ "blocks" qui contient le tableau.
  • Suppression des champs fork et UDTime
  • Suppression du champ transactions.hash
  • Le dernier chunk indique le même nombre de blocks que les autres même s’il en contient moins
2 Likes