Wiki de ZooBC
Transacciones

El sobre de la transacción

Toda transacción de ZooBC, sea cual sea su tipo, es una única cadena de bytes con la misma estructura, llamada el sobre. Los datos propios del tipo van en un solo campo, el cuerpo; todo lo demás (quién envía, quién recibe, la comisión, la hora, un mensaje opcional) lo comparten los 73 tipos. Conocer el sobre basta para leer, poner precio y comprobar cualquier transacción.

Los campos en orden

El sobre dibujado como una tira de campos en orden, desde el tipo hasta la firma, con un límite de gas y un id de cadena tachados encima
El sobre dibujado como una tira de campos en orden, desde el tipo hasta la firma, con un límite de gas y un id de cadena tachados encima
CampoTamañoNotas
tipo4 bytes, little-endianel número de [[transactionstipo de transacción]]
versión1 byte1, 2 o 3
marca de tiempo8 bytessegundos Unix
remitenteuna dirección
destinatariouna direccióno el marcador vacío de 4 bytes 02 00 00 00
comisión8 bytesen unidades atómicas
supervivencia8 bytesversiones 2 y 3
caducidad4 bytesversión 3
cuerpolongitud de 4 bytes y luego el cuerpocomo máximo 65 536 bytes
parte de escrowvariableo el marcador vacío de 4 bytes
mensajelongitud de 4 bytes y luego el mensajeopcional
firmavariablesiempre al final

Una dirección es un número de tipo de 4 bytes seguido de una carga: 36 bytes en total para una cuenta ZBC_ nativa, 24 para una cuenta de Ethereum (véase cuentas y direcciones). Cada cantidad es un número entero de unidades atómicas, y 1 ZBC son 100 000 000 de ellas.

Lo que no está

No hay límite de gas, porque no hay ninguna máquina virtual que medir: cada tipo es una regla fija, y su precio se conoce antes de firmar. No hay campo de id de cadena: en su lugar, la firma cubre el hash del bloque génesis de la cadena (véase firmar una transacción). Y no hay campo de nonce: la cadena guarda el nonce de cada remitente en su propio estado.

Versiones

  • La versión 1 no tiene campo de supervivencia.
  • La versión 2 añade el campo de supervivencia.
  • La versión 3 añade además el campo de caducidad, que fija cuánto tiempo sigue siendo válida la transacción (véase caducidad y marcas de tiempo).

Una transacción de versión 1 que indica un depósito de supervivencia se rechaza, y también una de versión 1 o 2 que indica una caducidad: sus bytes no tienen sitio para ello.

Supervivencia, cuerpo, parte de escrow y mensaje

  • La supervivencia es 0 o al menos 10 000 000 unidades atómicas (0.1 ZBC). Abre un registro de longevidad que mantiene la transacción almacenada después de la poda normal, y nunca se reembolsa (véase pagar por conservar datos (longevidad)). Una transacción que lleva en su mensaje una transacción firmada de otra cadena no puede pagarla.
  • El cuerpo contiene como máximo 65 536 bytes, organizados según define su tipo.
  • La parte de escrow solo pueden llevarla SendZBC y TransferToken; convierte el pago en un escrow.
  • El mensaje contiene como máximo 256 bytes cuando va en claro, sin ningún byte cero; como máximo 320 bytes cuando va cifrado (un mensaje cifrado empieza por "ZBE1"); y como máximo 4096 bytes cuando lleva una transacción nativa de otra cadena, de Ethereum, Solana o Bitcoin.

El campo de la comisión

La comisión se declara en unidades atómicas y debe ser al menos el suelo de la transacción: una comisión base por acción de 0.025 ZBC multiplicada por la escala de comisiones que votan los nodos registrados, más un cargo por los bytes del cuerpo y del mensaje que guarda cada nodo registrado. Como el suelo solo depende de la transacción y de los parámetros de la cadena, una billetera puede pedírselo a cualquier nodo antes de firmar, con GET /api/v1/blockchain/estimate-fee.

Una comisión por debajo del suelo se rechaza, y un bloque que lleve una es inválido. Lo que se declare por encima del suelo vuelve al pagador en el mismo bloque, así que pagar de más por error no cuesta nada. El tipo Empty, que no mueve nada, debe pagar igualmente una comisión mayor que cero, mientras que unos pocos deberes que los nodos registrados cumplen para la red, como las pruebas de almacenamiento y las atestaciones de eventos, deben declarar una comisión de exactamente 0. Comisiones explica la fórmula, el reembolso y adónde van las comisiones.

Véase también