Wiki di ZooBC
Integrazioni

Strumenti da riga di comando

Gli strumenti pubblici di ZooBC permettono a chiunque di usare la catena da un terminale o dal proprio codice. Si trovano su github.com/zoobc/tools, pubblicati dalla ZooBC Foundation con licenza MIT, che permette a chiunque di integrarli nel proprio software, commerciale o no, senza chiedere il permesso. Non sono il nodo: dialogano con un nodo o con un gateway solo tramite la sua API HTTP pubblica, esattamente come qualsiasi altro client.

Dieci linguaggi, un solo comportamento

Gli stessi strumenti esistono in dieci linguaggi di programmazione: C++, TypeScript, JavaScript (un unico file senza dipendenze che una pagina web carica con un solo tag script), Python, Go, Rust, Kotlin, Swift, PHP e Perl. Ogni versione offre chiavi e indirizzi, costruzione e firma delle transazioni, e zbc-cli, un unico comando per ogni tipo di transazione. Le versioni C++, Go e Rust includono anche un piccolo programma per ogni transazione. Il pacchetto del nodo comprende gli strumenti C++, come zbc-account-gen, zbc-send, zbc-monitor e zbc-cli.

Ciò che mantiene identiche dieci versioni è un'unica specifica condivisa e un unico insieme di vettori di test di riferimento (spec/vectors). Ogni versione esegue gli stessi vettori nelle sue verifiche automatiche di compilazione, e un solo byte diverso fa fallire la compilazione. Una transazione costruita in Perl è quindi, byte per byte, la stessa transazione costruita in Rust.

Dieci etichette di linguaggi che confluiscono in un'unica specifica condivisa con vettori di riferimento, producendo gli stessi byte in ogni linguaggio
Dieci etichette di linguaggi che confluiscono in un'unica specifica condivisa con vettori di riferimento, producendo gli stessi byte in ogni linguaggio

Il contratto di zbc-cli

zbc-cli si comporta allo stesso modo in ogni linguaggio, quindi gli script possono contarci:

  • Output: un unico oggetto JSON sullo standard output, e un codice di uscita da 0 a 10.
  • Dove connettersi: --api indica il nodo o il gateway. In sua assenza, lo strumento legge la variabile d'ambiente ZBC_API e, in assenza anche di questa, usa http://localhost:8080, un nodo sulla stessa macchina.
  • Timeout: --timeout, o la variabile ZBC_TIMEOUT; 20 secondi per impostazione predefinita.
  • La chiave: la fornisce la variabile d'ambiente ZBC_KEY, così la chiave resta fuori dalla riga di comando.
  • Campi: zbc-cli help <command> elenca i campi esatti di un comando; --json-input li accetta come JSON, e --verbose stampa più dettagli.
zbc-cli help send-zbc

Ogni importo è un numero intero di unità atomiche (1 ZBC = 100.000.000 di unità, vedi moneta ZBC e le sue unità). Valori come 1.5, 1e3 o 12abc vengono rifiutati invece che interpretati.

Che cos'altro fanno gli strumenti

Gli strumenti firmano e verificano anche messaggi off-chain, per esempio per dimostrare a un sito web che controlli un indirizzo senza inviare una transazione (messaggi firmati e cifrati). Come ogni firmatario ZooBC, firmano le transazioni su un digest che include l'hash genesi della catena, quindi una transazione costruita per una rete non è mai valida su un'altra (firme legate alla catena).

Che cosa non sono

  • Non sono il nodo, che ha un proprio repository e una propria licenza.
  • Non producono blocchi e non guadagnano monete: i blocchi arrivano solo dai nodi registrati che si alternano (gestire un nodo).
  • Non sono obbligatori. Una pagina web può firmare transazioni con nient'altro che Ed25519, SHA3-256 e l'hash genesi della catena (costruire un'app come singola pagina HTML); gli strumenti risparmiano quel lavoro.

Vedi anche