Wiki ZooBC
Intégrations

Les outils en ligne de commande

Les outils publics de ZooBC permettent à n’importe qui d’utiliser la chaîne depuis un terminal ou depuis son propre code. Ils se trouvent sur github.com/zoobc/tools et sont publiés par la ZooBC Foundation sous licence MIT, qui permet à chacun de les intégrer à ses propres logiciels, commerciaux ou non, sans demander d’autorisation. Ils ne sont pas le nœud : ils communiquent avec un nœud ou une passerelle uniquement par son API HTTP publique, exactement comme n’importe quel autre client.

Dix langages, un seul comportement

Les mêmes outils existent en dix langages de programmation : C++, TypeScript, JavaScript (un fichier unique sans dépendance qu’une page web charge avec une seule balise script), Python, Go, Rust, Kotlin, Swift, PHP et Perl. Chaque portage offre les clés et les adresses, la construction et la signature des transactions, et zbc-cli, une commande pour chaque type de transaction. Les portages C++, Go et Rust fournissent en plus un petit programme par transaction. Le paquet du nœud lui-même inclut les outils C++, comme zbc-account-gen, zbc-send, zbc-monitor et zbc-cli.

Ce qui maintient les dix portages identiques, c’est une spécification partagée et un seul jeu de vecteurs de test de référence (spec/vectors). Chaque portage exécute les mêmes vecteurs dans ses contrôles de compilation automatiques, et un seul octet différent fait échouer la compilation. Une transaction construite en Perl est donc, octet pour octet, la même que celle construite en Rust.

Dix étiquettes de langages convergent vers une spécification partagée avec des vecteurs de référence, ce qui donne les mêmes octets dans chaque langage
Dix étiquettes de langages convergent vers une spécification partagée avec des vecteurs de référence, ce qui donne les mêmes octets dans chaque langage

Le contrat de zbc-cli

zbc-cli se comporte de la même manière dans chaque langage, si bien que les scripts peuvent s’y fier :

  • Sortie : un objet JSON sur la sortie standard, et un code de sortie de 0 à 10.
  • Où se connecter : --api désigne le nœud ou la passerelle. Sans cette option, l’outil lit la variable d’environnement ZBC_API, et sans celle-ci, il utilise http://localhost:8080, un nœud sur la même machine.
  • Délais d’attente : --timeout, ou la variable ZBC_TIMEOUT ; 20 secondes par défaut.
  • La clé : la variable d’environnement ZBC_KEY la fournit, si bien que la clé reste hors de la ligne de commande.
  • Champs : zbc-cli help <command> liste les champs exacts d’une commande ; --json-input les accepte en JSON, et --verbose affiche plus de détails.
zbc-cli help send-zbc

Chaque montant est un nombre entier d’unités atomiques (1 ZBC = 100 000 000 unités, voir le ZBC et ses unités). Des valeurs telles que 1.5, 1e3 ou 12abc sont refusées plutôt qu’interprétées.

Ce que font aussi les outils

Les outils signent et vérifient aussi des messages hors chaîne, par exemple pour prouver à un site web que vous contrôlez une adresse sans envoyer de transaction (messages signés et chiffrés). Comme tout signataire ZooBC, ils signent les transactions sur un condensé qui inclut le hachage de genèse de la chaîne, si bien qu’une transaction construite pour un réseau n’est jamais valide sur un autre (signatures liées à la chaîne).

Ce qu’ils ne sont pas

  • Ils ne sont pas le nœud, qui a son propre dépôt et sa propre licence.
  • Ils ne produisent pas de blocs et ne font pas gagner de pièces : les blocs proviennent uniquement de nœuds enregistrés qui se relaient (faire tourner un nœud).
  • Ils ne sont pas indispensables. Une page web peut signer des transactions avec seulement Ed25519, SHA3-256 et le hachage de genèse de la chaîne (construire une appli en une seule page HTML) ; les outils vous épargnent ce travail.

Voir aussi