Wiki de ZooBC
Integraciones

Herramientas de línea de comandos

Las herramientas públicas de ZooBC permiten a cualquiera usar la cadena desde una terminal o desde su propio código. Están en github.com/zoobc/tools, publicadas por la ZooBC Foundation con licencia MIT, que permite a cualquiera incorporarlas a su propio software, comercial o no, sin pedir permiso. No son el nodo: hablan con un nodo o con una pasarela solo a través de su API HTTP pública, exactamente como cualquier otro cliente.

Diez lenguajes, un mismo comportamiento

Las mismas herramientas existen en diez lenguajes de programación: C++, TypeScript, JavaScript (un único archivo sin dependencias que una página web carga con una etiqueta script), Python, Go, Rust, Kotlin, Swift, PHP y Perl. Cada versión ofrece claves y direcciones, construcción y firma de transacciones, y zbc-cli, una sola orden para cada tipo de transacción. Las versiones de C++, Go y Rust incluyen además un pequeño programa por transacción. El paquete del propio nodo incluye las herramientas de C++, como zbc-account-gen, zbc-send, zbc-monitor y zbc-cli.

Lo que mantiene idénticas las diez versiones es una especificación compartida y un conjunto de vectores de prueba de referencia (spec/vectors). Cada versión ejecuta los mismos vectores en sus comprobaciones automáticas de compilación, y un solo byte distinto hace fallar la compilación. Por tanto, una transacción construida en Perl es byte a byte la misma transacción construida en Rust.

Diez etiquetas de lenguajes que alimentan una única especificación compartida con vectores de referencia, que da los mismos bytes en todos los lenguajes
Diez etiquetas de lenguajes que alimentan una única especificación compartida con vectores de referencia, que da los mismos bytes en todos los lenguajes

El contrato de zbc-cli

zbc-cli se comporta igual en todos los lenguajes, así que los scripts pueden contar con él:

  • Salida: un objeto JSON en la salida estándar, y un código de salida de 0 a 10.
  • Dónde conectarse: --api nombra el nodo o la pasarela. Sin él, la herramienta lee la variable de entorno ZBC_API y, sin ella, usa http://localhost:8080, un nodo en la misma máquina.
  • Tiempos de espera: --timeout, o la variable ZBC_TIMEOUT; 20 segundos por defecto.
  • La clave: la variable de entorno ZBC_KEY la proporciona, para que la clave no aparezca en la línea de comandos.
  • Campos: zbc-cli help <command> lista los campos exactos de una orden; --json-input los recibe como JSON, y --verbose muestra más detalle.
zbc-cli help send-zbc

Cada importe es un número entero de unidades atómicas (1 ZBC = 100 000 000 unidades, véase moneda ZBC y sus unidades). Valores como 1.5, 1e3 o 12abc se rechazan en lugar de interpretarse.

Qué más hacen las herramientas

Las herramientas también firman y verifican mensajes fuera de la cadena, por ejemplo para demostrar a un sitio web que controlas una dirección sin enviar una transacción (mensajes firmados y cifrados). Como todo firmante de ZooBC, firman las transacciones sobre un resumen que incluye el hash del génesis de la cadena, así que una transacción construida para una red nunca es válida en otra (firmas vinculadas a la cadena).

Lo que no son

  • No son el nodo, que tiene su propio repositorio y su propia licencia.
  • No producen bloques ni ganan monedas: los bloques solo los producen, por turnos, los nodos registrados (operar un nodo).
  • No son obligatorias. Una página web puede firmar transacciones con nada más que Ed25519, SHA3-256 y el hash del génesis de la cadena (crear una app como una sola página HTML); las herramientas ahorran ese trabajo.

Véase también