Formato Binario#

Formato Binario de Dirección#

Obtenga más información sobre las direcciones.

Formato Binario de Dirección#

Número de orden de campo

Campo

Tipo de campo

Tamaño del campo en bytes

Comentarios

\(1\)

Tipo de entidad

Byte

\(1\)

El valor debe ser \(1\).

\(2\)

ID de cadena

Byte

\(1\)

\(87\) — para Mainnet. \(84\) — para Testnet. \(83\) — para Stagenet.

\(3\)

Hash de llave pública de cuenta

Matriz de bytes

\(20\)

Primeros \(20\) bytes del resultado de la función hash Keccak256 (Blake2b256 (publicKey)). Aquí publicKey es la matriz de bytes de la clave pública de la cuenta.

\(4\)

Suma de Verificación

Matriz de bytes

\(4\)

Primero \(4\) bytes del resultado de la función hash Keccak256 (Blake2b256 (datos)). Aquí data es la matriz de bytes de tres campos juntos: 1) Tipo de entidad. 2) Identificación de la cadena. 3) Hash de clave pública de la cuenta.

Formato Binario del Alias#

Obtenga más información sobre los alias.

Formato Binario del Alias#

Número de orden de campo

Campo

Tipo de campo

Tamaño del campo en bytes

Comentarios

\(1\)

Tipo de entidad

Byte

\(1\)

El valor debe ser \(2\).

\(2\)

ID de cadena

Byte

\(1\)

\(87\) — para Mainnet. \(84\) — para Testnet. \(83\) — para Stagenet.

\(3\)

Número de caracteres en el alias

Short

\(2\)

\(4\)

Alias

Matriz de bytes

De \(4\) a \(30\).

Formato Binario del Bloque#

Obtenga más información sobre los bloques.

Los bloques se almacenan en la cadena de bloques en formato binario (representación de bytes). Las extensiones de nodo como servidor gRPC pueden trabajar directamente con datos en formato binario.

Versión 5

message Block {
  message Header {
    int32 chain_id = 1;
    bytes reference = 2;
    int64 base_target = 3;
    bytes generation_signature = 4;
    repeated uint32 feature_votes = 5;
    int64 timestamp = 6;
    int32 version = 7;
    bytes generator = 8;
    int64 reward_vote = 9;
    bytes transactions_root = 10;
  }

  Header header = 1;
  bytes signature = 2;
  repeated SignedTransaction transactions = 3;
}
Formato Binario del Bloque Versión 5#

Campo

Descripción

chain_id

ID de cadena

reference

BLAKE2b-256 hash del encabezado del bloque anterior.

base_target

Objetivo base: una variable que se utiliza en el algoritmo de generación de bloques.

generation_signature

«Generation signature: una variable que se utiliza en el algoritmo de generación de bloques (\(32\) bytes).»

feature_votes

Lista de funciones por las que vota el generador de bloques. Consulte las características.

timestamp

Marca de tiempo del bloque: Tiempo Unix en milisegundos.

version

Versión de bloque: \(5\).

generator

Block generator’s account public key (\(32\) bytes).

reward_vote

Recompensa de generación de bloques por la que vota el generador de bloques. \(-1\) significa que el generador de bloques vota por el tamaño de recompensa actual.

transactions_root

Hash raíz de transacciones (\(32\) bytes).

signature

Firma del encabezado del bloque (\(64\) bytes).

transactions

Para cada transacción: 1) Bytes del cuerpo: hasta \(165,487\) bytes. 2) Pruebas: hasta \(531\) bytes. Consulte el artículo sobre el formato binario de transacción para obtener más detalles.

Versión 4

Formato Binario del Bloque Versión 4#

#

Campo

Tipo de campo

Tamaño del campo en bytes

Comentarios

\(1\)

Versión de bloque

Byte

\(1\)

El valor debe ser \(4\).

\(2\)

Marca de tiempo del bloque

Long

\(8\)

Tiempo Unix en milisegundos.

\(3\)

Firma del bloque anterior

Array[Byte]

\(64\)

\(4\)

Objetivo base

Long

\(8\)

\(5\)

Firma de generación

Array[Byte]

\(32\)

\(6\)

Número de transacciones en el bloque

Integer

\(4\)

\(7.1\)

Transacción 1

Array[Byte]

Bytes del cuerpo: hasta \(165,996\) bytes. Pruebas: hasta \(531\) bytes.

Bytes de la primera transacción en formato binario.

\(7.2\)

Transacción 2

Array[Byte]

Bytes del cuerpo: hasta \(165,996\) bytes. Pruebas: hasta \(531\) bytes.

Bytes de la 2da transacción en formato binario.

\(7.[N]\)

Transacción N

Array[Byte]

Bytes del cuerpo: hasta \(165,996\) bytes. Pruebas: hasta \(531\) bytes.

Bytes de la N-ésima transacción en formato binario.

\(8\)

Número de funciones por las que vota el generador de bloques

\(4\)

Integer

\(9.1\)

Característica 1

\(2\)

Short

\(9.[M]\)

Característica M

\(2\)

Short

\(10\)

Recompensa de generación de bloques por la que vota el generador de bloques

\(8\)

Long

\(-1\) significa que el generador de bloques vota por el tamaño de recompensa actual.

\(11\)

Llave pública de la cuenta del generador de bloques

\(32\)

Array[Byte]

\(12\)

Firma de Bloque

\(64\)

Array[Byte]

Versión 3

Formato Binario del Bloque Versión 3#

#

Campo

Tipo de campo

Tamaño del campo en bytes

Comentarios

\(1\)

Versión de bloque

Byte

\(1\)

El valor debe ser \(4\).

\(2\)

Marca de tiempo del bloque

Long

\(8\)

Tiempo Unix en milisegundos.

\(3\)

Firma del bloque anterior

Array[Byte]

\(64\)

\(4\)

Objetivo base

Long

\(8\)

\(5\)

Firma de generación

Array[Byte]

\(32\)

\(6\)

Número de transacciones en el bloque

Integer

\(4\)

\(7.1\)

Transacción 1

Array[Byte]

Bytes del cuerpo: hasta \(165,996\) bytes. Pruebas: hasta \(531\) bytes.

Bytes de la primera transacción en formato binario.

\(7.2\)

Transacción 2

Array[Byte]

Bytes del cuerpo: hasta \(165,996\) bytes. Pruebas: hasta \(531\) bytes.

Bytes de la 2da transacción en formato binario.

\(7.[N]\)

Transacción N

Array[Byte]

Bytes del cuerpo: hasta \(165,996\) bytes. Pruebas: hasta \(531\) bytes.

Bytes de la N-ésima transacción en formato binario.

\(8\)

Llave pública de la cuenta del generador de bloques

Array[Byte]

\(32\)

\(9\)

Firma de Bloque

Array[Byte]

\(64\)

Formato Binario del Mensaje de Red#

Formato Binario del Mensaje del Bloque#

El mensaje del bloque es una respuesta al mensaje de GetBlock.

Formato Binario del Mensaje del Bloque#

#

Nombre del campo

Tipo

Longitud en bytes

\(1\)

Longitud del paquete (BigEndian)

Int

\(4\)

\(2\)

Bytes Mágicos

Bytes

\(4\)

\(3\)

ID de contenido (0x17)

Byte

\(1\)

\(4\)

Longitud de la carga útil

Int

\(4\)

\(5\)

Suma de comprobación de carga útil

Bytes

\(4\)

\(6\)

Bytes de bloque (N)

Bytes

N

Formato Binario del Mensaje del Checkpoint#

Formato Binario del Mensaje del Checkpoint#

#

Nombre del campo

Tipo

Longitud en bytes

\(1\)

Longitud del paquete (BigEndian)

Int

\(4\)

\(2\)

Bytes Mágicos

Bytes

\(4\)

\(3\)

ID de contenido (0x64)

Byte

\(1\)

\(4\)

Longitud de la carga útil

Int

\(4\)

\(5\)

Suma de comprobación de carga útil

Bytes

\(4\)

\(6\)

Checkpoint contador de items (N)

Int

\(4\)

\(7\)

Checkpoint #1 altura

Long

\(8\)

\(8\)

Checkpoint #1 firma

Bytes

\(64\)

\(6 + 2 * N - 1\)

Checkpoint #N altura

Long

\(8\)

\(6 + 2 * N\)

Checkpoint #N firma

Bytes

\(64\)

Formato Binario del Mensaje al Obtener Bloque#

Formato Binario del Mensaje al Obtener Bloque#

#

Nombre del campo

Tipo

Longitud en bytes

\(1\)

Longitud del paquete (BigEndian)

Int

\(4\)

\(2\)

Bytes Mágicos

Bytes

\(4\)

\(3\)

ID de contenido (0x16)

Byte

\(1\)

\(4\)

Longitud de la carga útil

Int

\(4\)

\(5\)

Suma de comprobación de carga útil

Bytes

\(4\)

\(6\)

ID de Bloque

Bytes

\(64\)

Formato Binario del Mensaje al Obtener Pares#

Obtener mensaje de pares se envía cuando un nodo emisor quiere saber acerca de otros nodos en la red.

Formato Binario del Mensaje al Obtener Pares#

#

Nombre del campo

Tipo

Longitud en bytes

\(1\)

Longitud del paquete (BigEndian)

Int

\(4\)

\(2\)

Bytes Mágicos

Bytes

\(4\)

\(3\)

ID de contenido (0x01)

Byte

\(1\)

\(4\)

Longitud de la carga útil

Int

\(4\)

\(5\)

Suma de comprobación de carga útil

Bytes

\(4\)

Formato Binario del Mensaje al Obtener Firma#

Formato Binario del Mensaje al Obtener Firma#

#

Nombre del campo

Tipo

Longitud en bytes

\(1\)

Longitud del paquete (BigEndian)

Int

\(4\)

\(2\)

Bytes Mágicos

Bytes

\(4\)

\(3\)

ID de contenido (0x14)

Byte

\(1\)

\(4\)

Longitud de la carga útil

Int

\(4\)

\(5\)

Suma de comprobación de carga útil

Bytes

\(4\)

\(6\)

Recuento de ID de bloque (N)

Int

\(4\)

\(7\)

Bloque #1 ID

Long

\(64\)

\(6 + N\)

Bloque #N ID

Bytes

\(64\)

Formato Binario del Mensaje de Enlace#

El protocolo de enlace se utiliza para iniciar la comunicación entre dos nodos.

Formato Binario del Mensaje de Enlace#

#

Nombre del campo

Tipo

Longitud en bytes

\(1\)

Longitud del nombre de la aplicación (N)

Byte

\(1\)

\(2\)

Nombre de la aplicación (bytes codificados en UTF-8)

Bytes

N

\(3\)

Versión principal de la aplicación

Int

\(4\)

\(4\)

Versión menor de la aplicación

Int

\(4\)

\(1\)

Parche de versión de la aplicación

Int

\(4\)

\(6\)

Longitud del nombre del nodo (M)

Byte

\(1\)

\(7\)

Nombre de nodo (bytes codificados en UTF-8)

Bytes

M

\(8\)

Nonce de nodo

Long

\(8\)

\(9\)

Longitud de la dirección declarada (K) o \(0\) si no se configuró ninguna dirección declarada

Int

\(4\)

\(10\)

Bytes de dirección declarados (si la longitud no es \(0\))

Bytes

K

\(11\)

Marca de Tiempo

Long

\(8\)

Formato Binario del Mensaje de Pares#

El mensaje de los compañeros es una respuesta para obtener el mensaje de los compañeros.

Formato Binario del Mensaje de Pares#

#

Nombre del campo

Tipo

Longitud en bytes

\(1\)

Longitud del paquete (BigEndian)

Int

\(4\)

\(2\)

Bytes Mágicos

Bytes

\(4\)

\(3\)

ID de contenido (0x02)

Byte

\(1\)

\(4\)

Longitud de la carga útil

Int

\(4\)

\(5\)

Suma de comprobación de carga útil

Bytes

\(4\)

\(6\)

Recuento de compañeros (N)

Int

\(4\)

\(7\)

Par #1 dirección IP

Bytes

\(4\)

\(8\)

Par #1 puerto

Int

\(4\)

\(6 + 2 * N - 1\)

Par #N dirección IP

Bytes

\(4\)

\(6 + 2 * N\)

Par #N puerto

Int

\(4\)

Formato Binario del Mensaje de Puntaje#

Formato Binario del Mensaje de Puntaje#

#

Nombre del campo

Tipo

Longitud en bytes

\(1\)

Longitud del paquete (BigEndian)

Int

\(4\)

\(2\)

Bytes Mágicos

Bytes

\(4\)

\(3\)

ID de contenido (0x18)

Byte

\(1\)

\(4\)

Longitud de la carga útil

Int

\(4\)

\(5\)

Suma de comprobación de carga útil

Bytes

\(4\)

\(6\)

Puntuación (N bytes)

Int

\(N\)

Formato Binario del Mensaje de Firmas#

Formato Binario del Mensaje de Firmas#

#

Nombre del campo

Tipo

Longitud en bytes

\(1\)

Longitud del paquete (BigEndian)

Int

\(4\)

\(2\)

Bytes Mágicos

Bytes

\(4\)

\(3\)

ID de contenido (0x15)

Byte

\(1\)

\(4\)

Longitud de la carga útil

Int

\(4\)

\(5\)

Suma de comprobación de carga útil

Bytes

\(4\)

\(6\)

Recuento de firmas en bloques (N)

Int

\(4\)

\(7\)

Firma n.º 1 del bloque

Bytes

\(64\)

\(6 + N\)

Firma #N del bloque

Bytes

\(64\)

Formato Binario del Mensaje de Transacción#

Formato Binario del Mensaje de Transacción#

#

Nombre del campo

Tipo

Longitud en bytes

\(1\)

Longitud del paquete (BigEndian)

Int

\(4\)

\(2\)

Bytes Mágicos

Bytes

\(4\)

\(3\)

ID de contenido (0x19)

Byte

\(1\)

\(4\)

Longitud de la carga útil

Int

\(4\)

\(5\)

Suma de comprobación de carga útil

Bytes

\(4\)

\(6\)

Transacción (N bytes)

Bytes

N

Formato Binario de Orden#

Obtenga más información sobre órdenes.

  • Una transacción para intercambio de la versión 3 puede aceptar pedidos de las versiones 1–4.

  • Una transacción para intercambio de la versión 2 puede aceptar pedidos de las versiones 1–3.

  • Una transacción para intercambio de la versión 1 solo puede aceptar pedidos de la versión 1.

Versión 4

message AssetPair {
    bytes amount_asset_id = 1;
    bytes price_asset_id = 2;
};

message Order {
  enum Side {
    BUY = 0;
    SELL = 1;
  };

  int32 chain_id = 1;
  bytes sender_public_key = 2;
  bytes matcher_public_key = 3;
  AssetPair asset_pair = 4;
  Side order_side = 5;
  int64 amount = 6;
  int64 price = 7;
  int64 timestamp = 8;
  int64 expiration = 9;
  Amount matcher_fee = 10;
  int32 version = 11;
  repeated bytes proofs = 12;
};

message Amount {
  bytes asset_id = 1;
  int64 amount = 2;
};
Formato Binario de Orden Versión 4#

Campo

Tamaño

Descripción

chain_id

\(1\) byte

ID de cadena

sender_public_key

\(32\) bytes

Llave pública del remitente de la orden.

matcher_public_key

\(32\) bytes

Llave pública del emparejador.

asset_pair.amount_asset_id

\(32\) bytes para activo. \(0\) para DecentralCoins.

ID del activo de cantidad.

asset_pair.price_asset_id

\(32\) bytes para activo. \(0\) para DecentralCoins.

ID del activo de precio.

order_side

\(1\) byte

Tipo de orden: compra o venta.

amount

\(8\) bytes

Importe del monto del activo, especificado en la fracción mínima (“centavo”) del activo.

price

\(8\) bytes

Precio por el monto del activo nominado en el precio del activo, multiplicado por \(108\).

timestamp

\(8\) bytes

Marca de tiempo de la orden: tiempo Unix en milisegundos.

vencimiento

\(8\) bytes

Tiempo Unix en milisegundos cuando la orden caducará.

matcher_fee.asset_id

\(32\) bytes para activo. \(0\) para DecentralCoins.

ID de token de tarifa del emparejador.

matcher_fee.amount

\(8\) bytes

Tarifa del emparejador

version

\(1\) byte

Versión de la orden: 4.

proofs

Cada prueba hasta \(64\) bytes, hasta \(8\) pruebas.

Comprobantes de pedido que se utilizan para comprobar la validez del pedido.

Versión 3

Formato Binario de Orden Versión 3#

#

Nombre del campo

Nombre de campo JSON

Tipo de campo

Longitud en bytes

Valor

\(1\)

Número de versión del ormato binario de orden

version

Byte

\(1\)

Debe ser \(3\).

\(2\)

Llave pública del remitente del pedido

senderPublicKey

Array[Byte]

\(32\)

\(3\)

Llave pública del emparejador

matcherPublicKey

Array[Byte]

\(32\)

\(4.1\)

Indicador de activo B (cantidad de activo)

Byte

\(1\)

Si el token es DecentralCoins, entonces el valor es \(0\), de lo contrario \(1\).

\(4.2\)

Id. de activo B (cantidad de activo)

amountAsset

Array[Byte]

S

Si el token no es DecentralCoins, entonces \(S = 32\), de lo contrario, el campo debería estar ausente.

\(5.1\)

Indicador de activo A (activo de precio)

Byte

\(1\)

Si el token es DecentralCoins, entonces el valor es \(0\), de lo contrario \(1\).

\(5.2\)

ID de activo A (activo de precio)

priceAsset

Array[Byte]

S

Si el token no es DecentralCoins, entonces \(S = 32\), de lo contrario, el campo debería estar ausente.

\(6\)

Tipo de orden

orderType

Byte

\(1\)

Si el pedido es para comprar, entonces el valor es \(0\), si el pedido es para vender, entonces el valor es \(1\).

\(7\)

Cantidad del activo B (cantidad de activo), que el emisor de la orden ofrece por un precio de activo (activo A)

price

Long

\(8\)

Bytes en notación big-endian.

\(8\)

Importe del activo B (activo de precio), que el emisor de la orden quiere comprar o enviar según el tipo de orden

amount

Long

\(8\)

Bytes en notación big-endian.

\(9\)

Cantidad de milisegundos desde el comienzo del Unix epoch hasta el momento de la validación del pedido por parte del emparejador

timestamp

Long

\(8\)

Bytes en notación big-endian.

\(10\)

Cantidad de milisegundos desde el comienzo de la Unix epoch hasta la cancelación del pedido incumplido

vencimiento

Long

\(8\)

Bytes en notación big-endian.

\(11\)

Tarifa del emparejador

matcherFee

Long

\(8\)

Bytes en notación big-endian.

\(12\)

Bandera de token de tarifa del emparejador

Byte

\(1\)

Si el token es DecentralCoins, entonces el valor es \(0\), si no \(1\)

\(13\)

Token de tarifa del emparejador

matcherFeeAssetId

Array[Byte]

F

Si el token no es DecentralCoins, entonces \(F = 32\), de lo contrario, el campo debería estar ausente.

\(14\)

Pruebas

proofs

Matriz[Prueba]

S

Si la matriz está vacía, entonces \(S = 3\). Si la matriz no está vacía, entonces \(S = 3 + 2 × N + (P_{1} + P_{2} + ... + P_{n})\), donde \(N\) es cantidad de pruebas en la matriz, \(P_{n}\) — tamaño N-ésima prueba en bytes. La cantidad máxima de pruebas en la matriz es \(8\). La longitud máxima de cada prueba es \(64\) bytes.

Representación JSON de Orden Versión 3

{
  "version": 3,
  "senderPublicKey": "FMc1iASTGwTC1tDwiKtrVHtdMkrVJ1S3rEBQifEdHnT2",
  "matcherPublicKey": "7kPFrHDiGw1rCm7LPszuECwWYL3dMf6iMifLRDJQZMzy",
  "assetPair": {
    "amountAsset": "BrjUWjndUanm5VsJkbUip8VRYy6LWJePtxya3FNv4TQa",
    "priceAsset": null
  },
  "orderType": "buy",
  "amount": 150000000,
  "timestamp": 1548660872383,
  "expiration": 1551252872383,
  "matcherFee": 300000,
  "proofs": [
    "YNPdPqEUGRW42bFyGqJ8VLHHBYnpukna3NSin26ERZargGEboAhjygenY67gKNgvP5nm5ZV8VGZW3bNtejSKGEa"
  ],
  "id": "Ho6Y16AKDrySs5VTa983kjg3yCx32iDzDHpDJ5iabXka",
  "sender": "3PEFvFmyyZC1n4sfNWq6iwAVhzUT87RTFcA",
  "price": 1799925005,
}

Versión 2

Formato Binario de Orden Versión 2#

#

Nombre del campo

Tipo

Longitud en bytes

\(1\)

Versión

Byte (constante, valor = \(2\))

\(1\)

\(2\)

Clave pública del remitente

PublicKey (Array[Byte])

\(32\)

\(3\)

Llave pública del emparejador

PublicKey (Array[Byte])

\(32\)

\(4.1\)

Indicador de activo de cantidad (\(1\) - activo, \(0\) - DecentralCoins)

Byte

\(1\)

\(4.2\)

Activo de cantidad

AssetId (ByteStr = Array[Byte])

\(32\) o \(0\) (depende del byte en 4.1).

\(5.1\)

Indicador de activo de precio (\(1\) - activo, \(1\) - DecentralCoins)

Byte

\(1\)

\(5.2\)

Precio activo

AssetId (ByteStr = Array[Byte])

\(32\) o \(0\) (depende del byte en 5.1).

\(6\)

Tipo de orden (\(0\) - Compra, \(1\) - Venta)

Byte

\(1\)

\(7\)

Precio

Long

\(8\)

\(8\)

Cantidad

Long

\(8\)

\(9\)

Marca de Tiempo

Long

\(8\)

\(10\)

Vencimiento

Long

\(8\)

\(11\)

Tarifa del emparejador

Long

\(8\)

\(12\)

Pruebas

Pruebas

Versión 1

Formato Binario de Orden Versión 1#

#

Nombre del campo

Tipo

Longitud en bytes

\(1\)

Clave pública del remitente

PublicKey (Array[Byte])

\(32\)

\(2\)

Llave pública del emparejador

PublicKey (Array[Byte])

\(32\)

\(3.1\)

Indicador de activo de cantidad (\(1\) - activo, \(0\) - DecentralCoins)

\(1\)

\(3.2\)

Activo de cantidad

AssetId (ByteStr = Array[Byte])

\(32\) o \(0\) (depende del byte en 3.1).

\(4.1\)

Indicador de activo de precio (\(1\) - activo, \(0\) - DecentralCoins)

\(1\)

\(4.2\)

Precio activo

AssetId (ByteStr = Array[Byte])

\(32\) o \(0\) (depende del byte en 4.1).

\(5\)

Tipo de orden (\(0\) - Compra, \(1\) - Venta)

Byte

\(1\)

\(6\)

Precio

Long

\(8\)

\(7\)

Cantidad

Long

\(8\)

\(8\)

Marca de Tiempo

Long

\(8\)

\(9\)

Vencimiento

Long

\(8\)

\(10\)

Tarifa del emparejador

Long

\(8\)

\(11\)

Firma

Bytes

\(64\)

El precio indicado para el activo de cantidad en activo de precio \(* 10^8\). La caducidad es el tiempo de vida del pedido, la marca de tiempo en el futuro, max \(= 30\) días en el futuro. La firma se calcula a partir de los siguientes bytes:

Formato Binario de Orden Versión 1 Bytes#

#

Nombre del campo

Tipo

Longitud en bytes

\(1\)

Clave pública del remitente

PublicKey (Array[Byte])

\(32\)

\(2\)

Llave pública del emparejador

PublicKey (Array[Byte])

\(32\)

\(3.1\)

Indicador de activo de cantidad (\(1\) - activo, \(0\) - DecentralCoins)

\(1\)

\(3.2\)

Activo de cantidad

AssetId (ByteStr = Array[Byte])

\(32\) o \(0\) (depende del byte en 3.1).

\(4.1\)

Indicador de activo de precio (\(1\) - activo, \(0\) - DecentralCoins)

\(1\)

\(4.2\)

Precio activo

AssetId (ByteStr = Array[Byte])

\(32\) o \(0\) (depende del byte en 4.1).

\(5\)

Tipo de orden (\(0\) - Compra, \(1\) - Venta)

Bytes

\(1\)

\(6\)

Precio

Long

\(8\)

\(7\)

Cantidad

Long

\(8\)

\(8\)

Marca de Tiempo

Long

\(8\)

\(9\)

Vencimiento

Long

\(8\)

\(10\)

Tarifa del emparejador

Long

\(8\)

Formato Binario de Transacción#

Obtenga más información sobre transactions.

Las transacciones se almacenan en la cadena de bloques en formato binario (representación de bytes). Las extensiones de nodo como servidor gRPC pueden trabajar directamente con datos en formato binario. La firma y el ID de la transacción también se forman sobre la base del formato binario, es decir, los bytes del cuerpo de la transacción. El contenido de los bytes del cuerpo de la transacción se proporciona en la descripción del formato binario de cada tipo y versión de la transacción. Normalmente, los bytes del cuerpo de la transacción incluyen todos los campos de la transacción, con la excepción de los siguientes campos:

  • ID de transacción (no se almacena en la cadena de bloques),

  • Indicador de versión,

  • Comprobantes o firma, según la versión de la transacción.

La guía para generar una firma y una identificación se proporciona en el artículo detalles prácticos criptográficos. Todas las cadenas están codificadas en UTF-8.

Protobuf#

Protobuf facilita el desarrollo de bibliotecas de clientes para la cadena de bloques DecentralChain, ya que evita errores de serialización y agiliza la creación de una transacción correctamente firmada. Cómo generar una firma de transacción usando protobuf:

  • Descargue el paquete protocol buffers para su lenguaje de programación. Genere la clase Transaction sobre la base de transaction.proto.

  • Rellene los campos de la transacción.

    • Los ID de activos deben especificarse en formato binario.

    • Las direcciones deben especificarse en el formato binario abreviado (sin los primeros dos y los últimos cuatro bytes). Consulte el artículo sobre el formato binario de dirección).

  • Serialice el objeto de la transacción para obtener los bytes del cuerpo de la transacción. Se proporcionan instrucciones detalladas para varios lenguajes de programación en tutoriales de búfer de protocolo.

  • Genere la firma para los bytes del cuerpo de la transacción con la función Curve25519 utilizando los bytes de la clave privada del remitente.

La representación de bytes de una transacción basada en el esquema protobuf no debe contener valores predeterminados. Asegúrese de que su compilador de búferes de protocolo no escriba el valor del campo al serializar si es igual al valor predeterminado para este tipo de datos; de lo contrario, la firma de la transacción no será válida. Envía la transacción firmada a un nodo:

  • Si usa su propio nodo y gRPC server, envíe el objeto SignedTransaction.

  • Si usa Node REST API, componga la representación JSON de la transacción y agregue la firma codificada en base58 a la matriz de prueba. Envíe la transacción a un nodo utilizando el método POST /transactions/broadcast.

message SignedTransaction {
  Transaction transaction = 1;
  repeated bytes proofs = 2;
}

message Transaction {
  int32 chain_id = 1;
  bytes sender_public_key = 2;
  Amount fee = 3;
  int64 timestamp = 4;
  int32 version = 5;

  oneof data {
    GenesisTransactionData genesis = 101;
    PaymentTransactionData payment = 102;
    IssueTransactionData issue = 103;
    TransferTransactionData transfer = 104;
    ReissueTransactionData reissue = 105;
    BurnTransactionData burn = 106;
    ExchangeTransactionData exchange = 107;
    LeaseTransactionData lease = 108;
    LeaseCancelTransactionData lease_cancel = 109;
    CreateAliasTransactionData create_alias = 110;
    MassTransferTransactionData mass_transfer = 111;
    DataTransactionData data_transaction = 112;
    SetScriptTransactionData set_script = 113;
    SponsorFeeTransactionData sponsor_fee = 114;
    SetAssetScriptTransactionData set_asset_script = 115;
    InvokeScriptTransactionData invoke_script = 116;
    UpdateAssetInfoTransactionData update_asset_info = 117;
  };
};

message Amount {
  bytes asset_id = 1;
  int64 amount = 2;
};
Formato Binario de Transacción#

Campo

Tamaño

Descripción

chain_id

\(1\) byte

ID de cadena

sender_public_key

\(32\) bytes

Clave pública del remitente de la transacción.

fee.amount

\(8\) bytes

Tarifa de transacción en la fracción mínima («centavo») del activo de la tarifa.

fee.asset_id

\(32\) bytes por la tarifa en un activo patrocinado. \(0\) para la tarifa en DecentralCoins

ID del token de la tarifa. La tarifa en un activo patrocinado solo está disponible para transacciones de script de invocación y transacciones de transferencia. Consulte el artículo sobre tarifas patrocinadas.

timestamp

\(8\) bytes

Marca de tiempo de la transacción: tiempo Unix en milisegundos. La transacción no se agregará a la cadena de bloques si el valor de la marca de tiempo es más de \(2\) horas atrás o \(1.5\) horas antes de la marca de tiempo del bloque actual.

version

\(1\) byte

Versión de transacción.

proofs

Cada prueba hasta \(64\) bytes, hasta \(8\) pruebas.

Pruebas de transacción que se utilizan para verificar la validez de la transacción. La matriz puede contener varias firmas de transacciones (pero no se limita solo a firmas).

Los campos que dependen del tipo de transacción se describen en los siguientes artículos:

Formato Binario de Transacción para Quemado#

Obtenga más información sobre la transacción para quemado.

Versión 3

message BurnTransactionData {
  Amount asset_amount = 1;
};

message Amount {
  bytes asset_id = 1;
  int64 amount = 2;
};
Formato Binario de Transacción para Quemado Versión 3#

Campo

Tamaño

Descripción

asset_amount.amount

\(8\) bytes

Cantidad de ficha a quemar, especificada en la fracción mínima (“centavos”).

asset_amount.asset_id

\(32\) bytes

ID del token a quemar

Versión 2

Formato Binario de Transacción para Quemado Versión 2#

#

Campo

Nombre de campo JSON

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

Indicador de versión

Byte

\(1\)

Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\).

\(2\)

ID de tipo de transacción

type

Byte

\(1\)

El valor debe ser \(6\).

\(3\)

Versión de transacción

version

Byte

\(1\)

El valor debe ser \(2\).

\(4\)

ID de cadena

chainId

Byte

1

\(87\) — para Mainnet. \(84\) — para Testnet. \(83\) — para Stagenet.

\(5\)

Clave pública del remitente de la transacción

senderPublicKey

Array[Byte]

\(32\)

\(6\)

ID del token a quemar

assetId

Array[Byte]

\(32\)

\(7\)

Cantidad de tokens para quemar

amount

Long

\(8\)

\(8\)

Tarifa de transacción

fee

Long

\(8\)

\(9\)

Marca de tiempo de la transacción

timestamp

Long

\(8\)

\(10\)

Pruebas de la transacción

proofs

Consulte el formato binario de pruebas de transacción

S

Si la matriz está vacía, entonces \(S = 3\). Si la matriz no está vacía, entonces \(S = 3 + 2 × N + 64 × N\), donde \(N\) es el número de pruebas en la matriz. El número máximo de pruebas en la matriz es \(8\). El tamaño de cada prueba es \(64\) bytes.

Los campos \(2\), \(3\), \(4\), \(5\), \(6\), \(7\), \(8\) y \(9\) son los bytes del cuerpo de la transacción.

Representación JSON de Transacción

{
  "type":6,
  "id":"csr25XQHT1c965Fg7cY2vJ7XHYVsudPYrUbdaFqgaqL",
  "sender":"3P9QZNrHbyxXj8P9VrJZmVu2euodNtA11UW",
  "senderPublicKey":"9GaQj7gktEiiS1TTTjGbVjU9bva3AbCiawZ11qFZenBX",
  "fee":100000,
  "feeAssetId":null,
  "timestamp":1548660675277,
  "proofs": [
    "61jCivdv3KTuTY6QHgxt4jaGrXcszWg3vb9TmUR26xv7mjWWwjyqs7X5VDUs9c2ksndaPogmdunHDdjWCuG1GGhh"
  ],
  "version":2,
  "assetId":"FVxhjrxZYTFCa9Bd4JYhRqXTjwKuhYbSAbD2DWhsGidQ",
  "amount":9999,
  "chainId":87,
  "height":1370971
}

Versión 1

Formato Binario de Transacción para Quemado Versión 1#

#

Campo

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

ID de tipo de transacción

Byte

\(1\)

El valor debe ser \(6\).

\(2\)

Clave pública del remitente de la transacción

Array[Byte]

\(32\)

\(3\)

ID del token a quemar

Array[Byte]

\(32\)

\(4\)

Cantidad de tokens para quemar

Long

\(8\)

\(5\)

Tarifa de transacción

Long

\(8\)

\(6\)

Marca de tiempo de la transacción

Long

\(8\)

\(7\)

Firma de transacción

Array[Byte]

\(64\)

Los campos \(1\), \(2\), \(3\), \(4\), \(5\) y \(6\) son los bytes del cuerpo de la transacción.

Formato Binario de Transacción para Crear Alias#

Obtenga más información sobre la transacción para crear alias.

Versión 3

message CreateAliasTransactionData {
  string alias = 1;
};
Formato Binario de Transacción para Crear Alias Versión 3#

Campo

Tamaño

Descripción

alias

De \(4\) a \(30\) bytes

Alias

Versión 2

Formato Binario de Transacción para Crear Alias Versión 2#

#

Campo

Nombre de campo JSON

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

Indicador de versión

Byte

\(1\)

Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\).

\(2\)

ID de tipo de transacción

type

Byte

\(1\)

El valor debe ser \(10\).

\(3\)

Versión de transacción

version

Byte

\(1\)

El valor debe ser \(2\).

\(4\)

Clave pública del remitente de la transacción

senderPublicKey

Array[Byte]

\(32\)

\(5\)

Longitud del alias

Short

\(2\)

Número de caracteres en el nombre del alias.

\(6\)

Alias

alias

String

de \(4\) a \(30\)

\(7\)

Tarifa de transacción

fee

Long

\(8\)

\(8\)

Marca de tiempo de la transacción

timestamp

Long

\(8\)

\(9\)

Pruebas de la transacción

proofs

Consulte el formato binario de pruebas de transacción

S

Si la matriz está vacía, entonces \(S = 3\). Si la matriz no está vacía, entonces \(S = 3 + 2 × N + 64 × N\), donde \(N\) es el número de pruebas en la matriz. El número máximo de pruebas en la matriz es \(8\). El tamaño de cada prueba es \(64\) bytes.

Los campos \(2\), \(3\), \(4\), \(5\), \(6\), \(7\) y \(8\) son los bytes del cuerpo de la transacción.

Representación JSON de Transacción

{
  "type":10,
  "id":"5CZV9RouJs7uaRkZY741WDy9zV69npX1FTZqxo5fsryL",
  "sender":"3PNaua1fMrQm4TArqeTuakmY1u985CgMRk6",
  "senderPublicKey":"B3f8VFh6T2NGT26U7rHk2grAxn5zi9iLkg4V9uxG6C8q",
  "fee":100000,
  "feeAssetId":null,
  "timestamp":1548666019772,
  "proofs": [
    "3cUM8Eq5KfmbS6q1qHDfzhX98YzER1ocnVjVAHG9HSkQdw86zjqxUfmsUPVwnVgwu5zatt3ETLnNFteobRMyR8bY"
  ],
  "version":2,
  "alias":"2.1.0a",
  "height":1371063
}

Versión 1

Formato Binario de Transacción para Crear Alias Versión 1#

#

Campo

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

ID de tipo de transacción

Byte

\(1\)

El valor debe ser \(10\).

\(2\)

Clave pública del remitente de la transacción

Array[Byte]

\(32\)

\(3\)

Longitud del alias

Short

\(2\)

Número de caracteres en el nombre del alias.

\(4\)

Alias

Array[Byte]

De \(4\) a \(30\)

\(5\)

Tarifa de transacción

Long

\(8\)

\(6\)

Marca de tiempo de la transacción

Long

\(8\)

\(7\)

Firma de transacción

Array[Byte]

\(64\)

Los campos \(1\), \(2\), \(3\), \(4\), \(5\) y \(6\) son los bytes del cuerpo de la transacción.

Formato Binario de Transacción para Datos#

Obtenga más información sobre la transacción para datos.

Versión 2

Formato Binario de Transacción para Datos Versión 2#

Campo

Tamaño

Descripción

key

Hasta \(400\) bytes

Llave de entrada.

value

Hasta \(32,767\) bytes

Valor de entrada. Si se omite, la transacción elimina la entrada.

El número máximo de entradas es \(100\). El tamaño máximo de datos (claves + valores) es \(165,890\) bytes.

Representación JSON de Transacción

{
  "type":12,
  "id":"EByjQAWDRGrmc8uy7xRGy2zsQXZQq59bav7h8oTTJyHC",
  "sender":"3PLZcCJyYQnfWfzhKXRA4rteCQC9J1ewf5K",
  "senderPublicKey":"BQMVwAHwf2WEEwRsCxtMVcSLrXUhJ3XtCLmSptLx2e6L",
  "fee":600000,
  "feeAssetId":null,
  "timestamp":1532116120299,
  "proofs": [
    "PZiAGq2ssi1ojh2Cc9dWrzmbuw9nJif2omsQ4dvonU31oiwsJQGbZiio3LG28otatFfFbHPfcX1JVCHwP5i4mKy"
  ],
  "version":1,
  "data": [
    {"key":"4900","type":"integer","value":24010000},{"key":"4901","type":"integer","value":24019801},
    {"key":"4902","type":"integer","value":24029604},{"key":"4903","type":"integer","value":24039409},
    {"key":"4904","type":"integer","value":24049216},{"key":"4905","type":"integer","value":24059025},
    {"key":"4906","type":"integer","value":24068836},{"key":"4907","type":"integer","value":24078649},
    {"key":"4908","type":"integer","value":24088464},{"key":"4909","type":"integer","value":24098281},
    {"key":"4910","type":"integer","value":24108100},{"key":"4911","type":"integer","value":24117921},
    {"key":"4912","type":"integer","value":24127744},{"key":"4913","type":"integer","value":24137569},
    {"key":"4914","type":"integer","value":24147396},{"key":"4915","type":"integer","value":24157225},
    {"key":"4916","type":"integer","value":24167056},{"key":"4917","type":"integer","value":24176889},
    {"key":"4918","type":"integer","value":24186724},{"key":"4919","type":"integer","value":24196561},
    {"key":"4920","type":"integer","value":24206400},{"key":"4921","type":"integer","value":24216241},
    {"key":"4922","type":"integer","value":24226084},{"key":"4923","type":"integer","value":24235929},
    {"key":"4924","type":"integer","value":24245776},{"key":"4925","type":"integer","value":24255625},
    {"key":"4926","type":"integer","value":24265476},{"key":"4927","type":"integer","value":24275329},
    {"key":"4928","type":"integer","value":24285184},{"key":"4929","type":"integer","value":24295041},
    {"key":"4930","type":"integer","value":24304900},{"key":"4931","type":"integer","value":24314761},
    {"key":"4932","type":"integer","value":24324624},{"key":"4933","type":"integer","value":24334489},
    {"key":"4934","type":"integer","value":24344356},{"key":"4935","type":"integer","value":24354225},
    {"key":"4936","type":"integer","value":24364096},{"key":"4937","type":"integer","value":24373969},
    {"key":"4938","type":"integer","value":24383844},{"key":"4939","type":"integer","value":24393721},
    {"key":"4940","type":"integer","value":24403600},{"key":"4941","type":"integer","value":24413481},
    {"key":"4942","type":"integer","value":24423364},{"key":"4943","type":"integer","value":24433249},
    {"key":"4944","type":"integer","value":24443136},{"key":"4945","type":"integer","value":24453025},
    {"key":"4946","type":"integer","value":24462916},{"key":"4947","type":"integer","value":24472809},
    {"key":"4948","type":"integer","value":24482704},{"key":"4949","type":"integer","value":24492601},
    {"key":"4950","type":"integer","value":24502500},{"key":"4951","type":"integer","value":24512401},
    {"key":"4952","type":"integer","value":24522304},{"key":"4953","type":"integer","value":24532209},
    {"key":"4954","type":"integer","value":24542116},{"key":"4955","type":"integer","value":24552025},
    {"key":"4956","type":"integer","value":24561936},{"key":"4957","type":"integer","value":24571849},
    {"key":"4958","type":"integer","value":24581764},{"key":"4959","type":"integer","value":24591681},
    {"key":"4960","type":"integer","value":24601600},{"key":"4961","type":"integer","value":24611521},
    {"key":"4962","type":"integer","value":24621444},{"key":"4963","type":"integer","value":24631369},
    {"key":"4964","type":"integer","value":24641296},{"key":"4965","type":"integer","value":24651225},
    {"key":"4966","type":"integer","value":24661156},{"key":"4967","type":"integer","value":24671089},
    {"key":"4968","type":"integer","value":24681024},{"key":"4969","type":"integer","value":24690961},
    {"key":"4970","type":"integer","value":24700900},{"key":"4971","type":"integer","value":24710841},
    {"key":"4972","type":"integer","value":24720784},{"key":"4973","type":"integer","value":24730729},
    {"key":"4974","type":"integer","value":24740676},{"key":"4975","type":"integer","value":24750625},
    {"key":"4976","type":"integer","value":24760576},{"key":"4977","type":"integer","value":24770529},
    {"key":"4978","type":"integer","value":24780484},{"key":"4979","type":"integer","value":24790441},
    {"key":"4980","type":"integer","value":24800400},{"key":"4981","type":"integer","value":24810361},
    {"key":"4982","type":"integer","value":24820324},{"key":"4983","type":"integer","value":24830289},
    {"key":"4984","type":"integer","value":24840256},{"key":"4985","type":"integer","value":24850225},
    {"key":"4986","type":"integer","value":24860196},{"key":"4987","type":"integer","value":24870169},
    {"key":"4988","type":"integer","value":24880144},{"key":"4989","type":"integer","value":24890121},
    {"key":"4990","type":"integer","value":24900100},{"key":"4991","type":"integer","value":24910081},
    {"key":"4992","type":"integer","value":24920064},{"key":"4993","type":"integer","value":24930049},
    {"key":"4994","type":"integer","value":24940036},{"key":"4995","type":"integer","value":24950025},
    {"key":"4996","type":"integer","value":24960016},{"key":"4997","type":"integer","value":24970009},
    {"key":"4998","type":"integer","value":24980004},{"key":"4999","type":"integer","value":24990001}
  ],
  "height":1091300
}

Versión 1

Formato Binario de Transacción para Datos Versión 1#

#

Campo

Nombre de campo JSON

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

Indicador de versión

Byte

\(1\)

Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\).

\(2\)

ID de tipo de transacción

type

Byte

\(1\)

El valor debe ser \(12\).

\(3\)

Versión de transacción

version

Byte

\(1\)

El valor debe ser \(1\).

\(4\)

Clave pública del remitente de la transacción

senderPublicKey

Array[Byte]

\(32\)

\(5\)

Longitud de la matriz de datos

Short

\(2\)

\(6.1\)

Longitud de la clave 1

Short

\(2\)

\(6.2\)

Llave 1

key

String

Hasta \(400\)

Máximo de \(100\) caracteres.

\(6.3\)

Valor 1 tipo

type

Byte

\(1\)

Las opciones son: 0 - Long. 1 - Boolean. 2 - Array[Byte]. 3 - String.

\(6.4\)

Valor 1 longitud

Short

\(2\)

Este campo está presente solo si el valor es del tipo de matriz de bytes o una cadena. Si el valor es de tipo entero o booleano, este campo no debe incluirse en la estructura de datos.

\(6.5\)

Valor 1

value

T

S

T es uno de los siguientes: 1) Long, \(S = 8\). 2) Boolean, \(S = 1\). 3) Array[Byte], \(S ⩽ 32,767\). 4) String, \(S ⩽ 32,767\).

\(6.6\)

Longitud de la llave 2

Short

\(2\)

\(6.7\)

Llave 2

key

String

Hasta \(400\)

Máximo de \(100\) caracteres.

\(6.8\)

Tipo de valor 2

type

Byte

\(1\)

Las opciones son: 0 - Long. 1 - Boolean. 2 - Array[Byte]. 3 - String.

\(6.9\)

Valor 2 longitud

Short

\(2\)

Este campo está presente solo si el valor es del tipo de matriz de bytes o una cadena. Si el valor es de tipo entero o booleano, este campo no debe incluirse en la estructura de datos.

\(6.10\)

Valor 2

value

T

S

T es uno de los siguientes: 1) Long, \(S = 8\). 2) Boolean, \(S = 1\). 3) Array[Byte], \(S ⩽ 32,767\). 4) String, \(S ⩽ 32,767\).

\(6.[5 × N - 4]\)

Longitud de N-ésima llave

Short

\(2\)

\(6.[5 × N - 3]\)

N-ésima llave

key

String

Hasta \(400\)

Máximo de \(100\) caracteres.

\(6.[5 × N - 2]\)

Tipo del N-ésimo valor

type

Byte

\(1\)

Las opciones son: 0 - Long. 1 - Boolean. 2 - Array[Byte]. 3 - String.

\(6.[5 × N - 1]\)

Longitud del valor N-ésimo

Short

\(2\)

Este campo está presente solo si el valor es del tipo de matriz de bytes o una cadena. Si el valor es de tipo entero o booleano, este campo no debe incluirse en la estructura de datos.

\(6.[5 × N]\)

N-ésimo valor

value

T

S

T es uno de los siguientes: 1) Long, \(S = 8\). 2) Boolean, \(S = 1\). 3) Array[Byte], \(S ⩽ 32,767\). 4) String, \(S ⩽ 32,767\).

\(7\)

Marca de tiempo de la transacción

timestamp

Long

\(8\)

\(8\)

Tarifa de transacción

fee

Long

\(8\)

\(9\)

Pruebas de la transacción

proofs

Consulte el formato binario de pruebas de transacción

S

Si la matriz está vacía, entonces \(S = 3\). Si la matriz no está vacía, entonces \(S = 3 + 2 × N + 64 × N\), donde \(N\) es el número de pruebas en la matriz. El número máximo de pruebas en la matriz es \(8\). El tamaño de cada prueba es de 64 bytes.

Los campos \(1\), \(2\), \(3\), \(4\), \(5\), \(6.1\), \(6.2\) , \(6.3\), \(6.4\), \(6.5\), \(6.6\), \(6.7\), \(6.8\), \(6.9\), \(6.10\), \(6.[5 × N - 4]\), \(6.[5 × N - 3]\), \(6.[5 × N - 2] `, :math:`6.[5 × N - 1]\), \(6.[5 × N]\), \(7\) y \(8\) son los bytes del cuerpo de la transacción. El número máximo de registros es \(100\). El tamaño máximo de los bytes del cuerpo de la transacción es \(153,600\) bytes.

Formato Binario de Transacción para Intercambio#

Obtenga más información sobre la transacción para intercambio.

Versión 3

Una transacción para intercambio de la versión 3 puede aceptar pedidos de las versiones 1–4.

message ExchangeTransactionData {
  int64 amount = 1;
  int64 price = 2;
  int64 buy_matcher_fee = 3;
  int64 sell_matcher_fee = 4;
  repeated Order orders = 5;
};
Formato Binario de Transacción para Intercambio Versión 3#

Campo

Tamaño

Descripción

amount

\(8\) bytes

Monto de la cantidad de activo (moneda base) que el comprador recibió del vendedor, especificado en la fracción mínima (“centavo”) de activo.

price

\(8\) bytes

Precio del activo de cantidad (moneda base) nominado en el activo de precio (moneda de cotización), multiplicado por \(10^{8}\). Para obtener más detalles, consulte el artículo sobre órdenes.

buy_matcher_fee

\(8\) bytes

Comprar tarifa para el emparejador. La identificación del token de tarifa se indica en la orden de compra.

sell_matcher_fee

\(8\) bytes

Tarifa del emparejador para venta. El ID del token de tarifa se indica en la orden de venta.

pedidos

Orden de compra y orden de venta. Consulte el formato binario de orden.

Versión 2

La versión 2 de la transacción puede aceptar órdenes de la versión 1, 2 y 3.

Formato Binario de Transacción para Intercambio Versión 2#

#

Campo

Nombre de campo JSON

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

Indicador de versión

Byte

\(1\)

Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\).

\(2\)

ID de tipo de transacción

type

Byte

\(1\)

El valor debe ser \(7\).

\(3\)

Versión de transacción

version

Byte

\(1\)

El valor debe ser \(2\).

\(4.1\)

Tamaño del pedido de compra

Int

\(4\)

Tamaño incluida la bandera 4.2.

\(4.2\)

Indicador de versión de orden de compra

order1.version

Byte

S

\(S = 1\) si la versión del pedido es \(1\). \(S = 0\) si la versión del pedido es 2 o 3.

\(4.3\)

Orden de compra

order1

Array[Byte]

Consulte formato binario de orden

\(5.1\)

Tamaño de la orden de venta

Int

\(4\)

Tamaño incluida la bandera 5.2.

\(5.2\)

Bandera de versión de orden de venta

order2.version

Byte

S

\(S = 1\) si la versión del pedido es \(1\). \(S = 0\) si la versión del pedido es 2 o 3.

\(5.3\)

Orden de venta

order2

Array[Byte]

Ver orden en formato binario

\(6\)

Precio de oferta

price

Long

\(8\)

Precio por el activo de cantidad (moneda base) nominado en el activo de precio (moneda de cotización).

\(7\)

Cantidad

amount

Long

\(8\)

Importe de la cantidad de activo (moneda base) que el comprador recibió del vendedor.

\(8\)

Tarifa del emparejador para compra

buyMatcherFee

Long

\(8\)

\(9\)

Tarifa del emparejador para venta

sellMatcherFee

Long

\(8\)

\(10\)

Tarifa de transacción

fee

Long

\(8\)

\(11\)

Marca de tiempo de la transacción

timestamp

Long

\(8\)

\(12\)

Pruebas de la transacción

proofs

Consulte el formato binario de pruebas de transacción

S

Si la matriz está vacía, entonces \(S = 3\). Si la matriz no está vacía, entonces \(S = 3 + 2 × N + 64 × N\), donde \(N\) es el número de pruebas en la matriz. El número máximo de pruebas en la matriz es \(8\). El tamaño de cada prueba es \(64\) bytes.

Los campos \(1\), \(2\), \(3\), \(4.1\), \(4.2\), \(4.3\), \(5.1\) , :matemáticas:`5.2`, :matemáticas:`5.3`, :matemáticas:`6`, :matemáticas:`6.6`, :matemáticas:`7`, :matemáticas:`8`, :matemáticas:`9`, \(10\) y \(11\) son los bytes del cuerpo de la transacción.

Representación JSON de Transacción

{
   "type":6,
   "id":"csr25XQHT1c965Fg7cY2vJ7XHYVsudPYrUbdaFqgaqL",
   "sender":"3P9QZNrHbyxXj8P9VrJZmVu2euodNtA11UW",
   "senderPublicKey":"9GaQj7gktEiiS1TTTjGbVjU9bva3AbCiawZ11qFZenBX",
   "fee":100000,
   "feeAssetId":null,
   "timestamp":1548660675277,
   "proofs": [
     "61jCivdv3KTuTY6QHgxt4jaGrXcszWg3vb9TmUR26xv7mjWWwjyqs7X5VDUs9c2ksndaPogmdunHDdjWCuG1GGhh"
   ],
   "version":2,
   "assetId":"FVxhjrxZYTFCa9Bd4JYhRqXTjwKuhYbSAbD2DWhsGidQ",
   "amount":9999,
   "chainId":87,
   "height":1370971
 }

Versión 1

La versión 1 de la transacción solo puede aceptar pedidos de la versión 1.

Formato Binario de Transacción para Intercambio Versión 1#

#

Campo

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

ID de tipo de transacción

Byte

\(1\)

El valor debe ser \(6\).

\(2\)

Tamaño del pedido de compra

Int

\(4\)

\(3\)

Tamaño de la orden de venta

Int

\(4\)

\(4\)

Orden de compra

Array[Byte]

Consulte formato binario de orden

\(5\)

Orden de venta

Array[Byte]

Ver orden en formato binario

\(6\)

Precio de oferta

Long

\(8\)

Precio por el activo de cantidad (moneda base) nominado en el activo de precio (moneda de cotización).

\(7\)

Cantidad

Long

\(8\)

Importe de la cantidad de activo (moneda base) que el comprador recibió del vendedor.

\(8\)

Tarifa del emparejador para compra

Long

\(8\)

\(9\)

Tarifa del emparejador para venta

Long

\(8\)

\(10\)

Tarifa de transacción

Long

\(8\)

\(11\)

Marca de tiempo de la transacción

Long

\(8\)

\(12\)

Firma de transacción

Array[Byte]

\(64\)

Los campos \(1\), \(2\), \(3\), \(4\), \(5\), \(6\), \(7\) , \(8\), \(9\), \(10\) y \(11\) son los bytes del cuerpo de la transacción.

Formato Binario de Transacción Génesis#

Obtenga más información sobre la transacción génesis.

Formato Binario de Transacción Génesis#

#

Campo

Nombre de campo JSON

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

ID de tipo de transacción

type

Byte

\(1\)

El valor debe ser \(1\).

\(2\)

Marca de tiempo de la transacción

timestamp

Long

\(8\)

\(3\)

Dirección del destinatario

recipient

Array[Byte]

\(26\)

\(4\)

Cantidad de DecentralCoins que se transferirá a la cuenta

amount

Long

\(8\)

Representación JSON de Transacción

{
  "type":1,
  "id":"2DVtfgXjpMeFf2PQCqvwxAiaGbiDsxDjSdNQkc5JQ74eWxjWFYgwvqzC4dn7iB1AhuM32WxEiVi1SGijsBtYQwn8",
  "fee":0,
  "timestamp":1465742577614,
  "signature":"2DVtfgXjpMeFf2PQCqvwxAiaGbiDsxDjSdNQkc5JQ74eWxjWFYgwvqzC4dn7iB1AhuM32WxEiVi1SGijsBtYQwn8",
  "recipient":"3PAWwWa6GbwcJaFzwqXQN5KQm7H96Y7SHTQ",
  "amount":9999999500000000,
  "height":1
}

Formato Binario de Transacción para Invocar Scripts#

Obtenga más información sobre la transacción para asignar scripts de activos.

Versión 2

message InvokeScriptTransactionData {
  Recipient d_app = 1;
  bytes function_call = 2;
  repeated Amount payments = 3;
};

message Recipient {
  oneof recipient {
    bytes public_key_hash = 1;
    string alias = 2;
  };
};

message Amount {
  bytes asset_id = 1;
  int64 amount = 2;
};
Formato Binario de Transacción para Invocar Scripts Versión 2#

Campo

Tamaño

Descripción

d_app.public_key_hash

\(20\) bytes

Hash de clave pública de la cuenta dApp (un componente de una dirección, consulte el artículo sobre el formato binario de la dirección).

d_app.alias

De \(4\) a \(30\) bytes

alias de dApp.

function_call

Nombre de la función y argumentos. El formato binario de la llamada de función es el mismo que en la versión 1.

payments.asset_id

\(32\) bytes para activo. \(0\) para DecentralCoins.

ID del token en pago.

payments.amount

\(8\) bytes

Monto de token en pago, especificado en las unidades atómicas.

El tamaño máximo de d_app + function_call + pagos es \(5120\) bytes.

Representación JSON de Transacción

{
  "type":16,
  "id":"7CVjf5KGRRYj6UyTC2Etuu4cUxx9qQnCJox8vw9Gy9yq",
  "sender":"3P5rWeMzoaGBrXJDMifQDDjCMKWJGKTiVJU",
  "senderPublicKey":"4kKN9G7cZXGQujLQm9ss5gqB7TKX4A9jtFGt7DnHUoQ6",
  "fee":500000,
  "feeAssetId":null,
  "timestamp":1565537422938,
  "proofs": [
    "28s21sisoa7yHWWmmX8U78fbNHW4KXAS9GHD8XmaN77gJxbnP2Q3DssNWpmSQ6hBq6xS985W4YiTmgvENhfWPNt5"
  ],
  "version":1,
  "dApp":"3PJbknfXMsJzZmksmsKSMz56tVdDqF5GdNM",
  "payment":[],
  "call": {
    "function":"returnSellVST",
    "args": [
      {
        "type":"string",
        "value":"GiEBRfGhEeGqhPmLCjwJcYuakyvaz2GHGCfCzuinSKD"
      }
    ]
  },
  "height":1656369,
  "stateChanges": {
    "data": [
      {
        "key":"sell_GiEBRfGhEeGqhPmLCjwJcYuakyvaz2GHGCfCzuinSKD_spent",
        "type":"integer",
        "value":10000000000
      }
    ],
    "transfers": [
      {
        "address":"3P5rWeMzoaGBrXJDMifQDDjCMKWJGKTiVJU",
        "asset":"4LHHvYGNKJUg5hj65aGD5vgScvCBmLpdRFtjokvCjSL8",
        "amount":10000000000
      }
    ],
    "issues":[],
    "reissues":[],
    "burns":[],
    "sponsorFees":[],
    "leases":[],
    "leaseCancels":[],
    "invokes":[]
  }
}

Versión 1

Formato Binario de Transacción para Invocar Scripts Versión 1#

#

Campo

Nombre de campo JSON

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

Indicador de versión

Byte

\(1\)

Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\).

\(2\)

ID de tipo de transacción

type

Byte

\(1\)

El valor debe ser \(16\).

\(3\)

Versión de transacción

version

Byte

\(1\)

El valor debe ser \(1\).

\(4\)

ID de cadena

Byte

\(1\)

\(87\) — para Mainnet. \(84\) — para Testnet. \(83\) — para Stagenet.

\(5\)

Clave pública del remitente de la transacción

senderPublicKey

Array[Byte]

\(32\)

\(6\)

Dirección o alias

dApp

Consulte Formato binario de dirección, Formato binario de alias

S

Si el primer byte del campo es \(1\), le sigue la dirección. S en este caso es igual a \(26\). Si el primer byte del campo es \(2\), le sigue el alias. En este caso \(8 <= S <= 34\).

\(7.1\)

Bandera de presencia de función

Byte

\(1\)

\(0\) — se invoca la función predeterminada de la dApp. \(1\) — La función de la transacción actual debe invocarse en la dApp.

\(7.2\)

ID de llamada de función

Byte

\(1\)

Constante. El valor debe ser \(9\).

\(7.3\)

ID de tipo de función

Byte

\(1\)

Constante. El valor debe ser \(1\).

\(7.4\)

Longitud del nombre de la función

Int

\(4\)

\(7.5\)

Nombre de la función

función

String

Hasta \(255\)

\(7.6.1\)

Cantidad de argumentos de la función

Int

\(4\)

\(7.6.2\)

ID del tipo de argumento 1

type

Byte

\(1\)

\(0\) — el tipo de argumento es largo. \(1\) — el tipo de argumento es una matriz de bytes. \(2\) — el tipo de argumento es una cadena. \(6\) — el tipo de argumento es lógico True. \(7\) — el tipo de argumento es lógico Falso. \(11\) – el tipo de argumento es lista.

\(7.6.3\)

Argumento 1

value

Las opciones son: 1) Long. 2) Array[Byte]. 3) String. 4) Verdadero Lógico . 5) Falso Lógico. 6) Lista.

S

\(S = 8\), si el tipo de argumento es largo. Si el tipo de argumento es una matriz de bytes, una cadena o una lista, el tamaño del campo solo está limitado por el tamaño total de la transacción. Si el tipo es lista, entonces 1) su longitud no debe exceder \(1000\) elementos. 2) la cantidad de sus elementos representa los primeros \(4\) bytes del campo actual. 3) cada elemento de la lista se serializa de manera similar al argumento de la función: el ID del tipo de elemento ocupa el primer lugar, seguido del valor del elemento. \(S = 0\), si el tipo de argumento es lógico Verdadero o Falso.

\(7.6.4\)

ID del tipo de argumento 2

type

Byte

\(1\)

\(0\) — el tipo de argumento es largo. \(1\) — el tipo de argumento es una matriz de bytes. \(2\) — el tipo de argumento es una cadena. \(6\) — el tipo de argumento es lógico True. \(7\) — el tipo de argumento es lógico Falso. \(11\) – el tipo de argumento es lista.

\(7.6.5\)

Argumento 2

value

Las opciones son: 1) Long. 2) Array[Byte]. 3) String. 4) Verdadero Lógico . 5) Falso Lógico. 6) Lista.

S

\(S = 8\), si el tipo de argumento es largo. Si el tipo de argumento es una matriz de bytes, una cadena o una lista, el tamaño del campo solo está limitado por el tamaño total de la transacción. Si el tipo es lista, entonces 1) su longitud no debe exceder \(1000\) elementos. 2) la cantidad de sus elementos representa los primeros \(4\) bytes del campo actual. 3) cada elemento de la lista se serializa de manera similar al argumento de la función: el ID del tipo de elemento ocupa el primer lugar, seguido del valor del elemento. \(S = 0\), si el tipo de argumento es lógico Verdadero o Falso.

\(7.6.[2 × N]\)

ID del tipo de argumento N

type

Byte

\(1\)

0: el tipo de argumento es largo. 1: el tipo de argumento es una matriz de bytes. 2: el tipo de argumento es una cadena. 6 — el tipo de argumento es lógico Verdadero. 7 — el tipo de argumento es lógico Falso. 11 – el tipo de argumento es lista.

\(7.6.[2 × N + 1]\)

Argumento N

value

Las opciones son: 1) Long. 2) Array[Byte]. 3) String. 4) Verdadero Lógico . 5) Falso Lógico. 6) Lista.

S

\(S = 8\), si el tipo de argumento es largo. Si el tipo de argumento es una matriz de bytes, una cadena o una lista, el tamaño del campo solo está limitado por el tamaño total de la transacción. Si el tipo es lista, entonces 1) su longitud no debe exceder \(1000\) elementos. 2) la cantidad de sus elementos representa los primeros \(4\) bytes del campo actual. 3) cada elemento de la lista se serializa de manera similar al argumento de la función: el ID del tipo de elemento ocupa el primer lugar, seguido del valor del elemento. \(S = 0\), si el tipo de argumento es lógico Verdadero o Falso.

\(8.1\)

Cantidad de pagos

Short

\(2\)

\(8.2\)

Pago 1 longitud

Short

\(2\)

\(8.3\)

Cantidad de token en pago 1

amount

Long

\(8\)

\(8.4\)

Bandera de pago 1 token

Byte

\(1\)

\(0\)DecentralCoins. \(1\) — otro token.

\(8.5\)

ID de token de pago 1

Array[Byte]

\(32\)

El campo es aplicable si el token no es DecentralCoins.

\(8.[4 × N – 2]\)

Pago N longitud

Short

\(2\)

\(8.[4 × N – 1]\)

Cantidad de token en pago N

amount

Long

\(8\)

\(8.[4 × N]\)

Bandera de token de pago N

Byte

\(1\)

\(0\)DecentralCoins. \(1\) — otro token.

\(8.[4 × N + 1]\)

ID del token de pago N

Array[Byte]

\(32\)

El campo es aplicable si el token no es DecentralCoins.

\(9\)

Tarifa de transacción

fee

Long

\(8\)

\(10.1\)

Indicador de token de tarifa

Byte

\(1\)

\(0\)DecentralCoins. \(1\) — otro token.

\(10.2\)

ID de token de tarifa

feeAssetId

Array[Byte]

S

\(S = 0\), si el token es DecentralCoins. \(S = 32\), si es otro token.

\(11\)

Marca de tiempo de la transacción

timestamp

Long

\(8\)

\(12\)

Pruebas de la transacción

proofs

Consulte el formato binario de pruebas de transacción

S

Si la matriz está vacía, entonces \(S = 3\). Si la matriz no está vacía, entonces \(S = 3 + 2 × N + 64 × N\), donde \(N\) es el número de pruebas en la matriz. El número máximo de pruebas en la matriz es \(8\). El tamaño de cada prueba es \(64\) bytes.

El número máximo de pagos es \(10\). El tamaño máximo de transacción, incluidas las pruebas, es \(5120\) bytes.

Formato Binario de Transacción para Emisión#

Obtenga más información sobre la transacción para emisión.

Versión 3

message IssueTransactionData {
  string name = 1;
  string description = 2;
  int64 amount = 3;
  int32 decimals = 4;
  bool reissuable = 5;
  bytes script = 6;
};
Formato Binario de Transacción para Emisión Versión 3#

Campo

Tamaño

Descripción

name

De \(4\) a \(16\) bytes

Nombre del token.

description

De \(0\) a \(1000\) bytes

Descripción del token.

amount

\(8\) bytes

Cantidad de token a emitir, especificada en la fracción mínima (“centavos”).

decimals

\(1\) byte

Número de lugares decimales.

reissuable

\(1\) byte

Vuelva a emitir el indicador de disponibilidad.

script

Hasta \(8192\) bytes

Script de activo.

Versión 2

Formato Binario de Transacción para Emisión Versión 2#

#

Campo

Nombre de campo JSON

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

Indicador de versión

Byte

\(0\)

Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\).

\(2\)

ID de tipo de transacción

type

Byte

\(0\)

El valor debe ser \(3\).

\(3\)

Versión de transacción

version

Byte

\(0\)

El valor debe ser \(2\).

\(4\)

ID de cadena

chainId

Byte

\(0\)

\(87\) — para Mainnet. \(84\) — para Testnet. \(83\) — para Stagenet.

\(5\)

Clave pública del remitente de la transacción

senderPublicKey

Array[Byte]

32

\(6.1\)

Longitud de nombre del Token

Short

\(2\)

\(6.2\)

Nombre del Activo

name

Array[Byte]

De \(4\) a \(16\)

\(7.1\)

Longitud de la descripción del token

Short

\(2\)

\(7.2\)

Descripción del activo

description

Array[Byte]

De \(0\) a \(1000\)

\(8\)

Importe del token que se emitirá

quantity

Short

\(8\)

\(9\)

Número de decimales del token

decimals

Byte

\(0\)

\(10\)

Bandera de reemisión

reissuable

Boolean

\(0\)

Si el valor es \(0\), no es posible volver a emitir el token. Si el valor es \(1\), es posible volver a emitir el token.

\(11\)

Tarifa de transacción

fee

Short

\(8\)

\(12\)

Marca de tiempo de la transacción

timestamp

Short

\(8\)

\(13.1\)

Bandera de existencia de secuencia de comandos

Boolean

\(0\)

Si el valor es \(0\), entonces el token no tiene un script. Si el valor es \(1\), entonces el token tiene un script.

\(13.2\)

Longitud del script en bytes

Short

S

\(S = 0\) si el valor del campo indicador de existencia del script es \(0\). \(S = 2\) si el valor del campo indicador de existencia del script es 1.

\(13.3\)

Script de activo

script

String

S

\(S = 0\) si el valor del campo indicador de existencia del script es \(0\). \(0 < S ≤ 8192\), si el valor del campo indicador de existencia del script es 1.

\(14\)

Pruebas de la transacción

proofs

Consulte el formato binario de pruebas de transacción

S

Si la matriz está vacía, entonces \(S = 3\). Si la matriz no está vacía, entonces \(S = 3 + 2 × N + 64 × N\), donde \(N\) es el número de pruebas en la matriz. El número máximo de pruebas en la matriz es \(82\). El tamaño de cada prueba es \(64\) bytes.

Los campos \(2\), \(3\), \(4\), \(5\), \(6.1\), \(6.2\), \(7.1\) , :matemáticas:`7.2`, :matemáticas:`8`, :matemáticas:`9`, :matemáticas:`10`, :matemáticas:`11`, :matemáticas:`12`, :matemáticas:`13.1`, \(13.2\) y \(13.3\) son los bytes del cuerpo de la transacción.

Representación JSON de Transacción

{
  "type":3,
  "id":"FTQvw9zdYirRksUFCKDvor3hiu2NiUjXEPTDEcircqti",
  "sender":"3PPP59J1pToCk7fPs4d5EK5PoHJMeQRJCTb",
  "senderPublicKey":"E8Y8ywedRS9usVvvcuczn9hsSg1SNkQVBMcNeQEnjDTP",
  "fee":100000000,
  "feeAssetId":null,
  "timestamp":1548666518362,
  "proofs": [
    "3X7GpKW1ztto1aJN5tQNByaGZ9jGkaxZNo4BT268obZckbXuNQHGKjAUxtqcSEes5aZNMaQi2JYBGeKpcaPTxpSC"
  ],
  "version":2,
  "assetId":"FTQvw9zdYirRksUFCKDvor3hiu2NiUjXEPTDEcircqti",
  "name":"DCVN",
  "quantity":990000000000000000,
  "reissuable":false,
  "decimals":8,
  "description":"Tài chính cho nền dân chủ",
  "script":null,
  "chainId":87,
  "height":1371069
}

Versión 1

Formato Binario de Transacción para Emisión Versión 1#

#

Campo

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

ID de tipo de transacción

Byte

\(1\)

El valor debe ser \(3\).

\(2\)

Firma de transacción

Array[Byte]

\(64\)

\(3\)

ID del tipo de transacción

Byte

\(1\)

Este campo duplica el campo 1.

\(4\)

Clave pública del remitente de la transacción

Array[Byte]

\(32\)

\(5.1\)

Longitud de nombre del Token

Short

\(2\)

\(5.2\)

Nombre del Activo

Array[Byte]

De \(4\) a \(16\)

\(6.1\)

Longitud de la descripción del token

Short

\(2\)

\(6.2\)

Descripción del activo

Array[Byte]

De \(0\) a \(1000\)

\(7\)

Importe del token que se emitirá

Long

\(8\)

\(8\)

Número de decimales del token

Byte

\(1\)

\(9\)

Bandera de reemisión

Boolean

\(1\)

\(10\)

Tarifa de transacción

Long

\(8\)

\(11\)

Marca de tiempo de la transacción

Long

\(8\)

Los campos \(3\), \(4\), \(5.1\), \(5.2\), \(6.1\), \(6.2\), \(7\) , \(8\), \(9\), \(10\) y \(11\) son los bytes del cuerpo de la transacción.

Formato Binario de Transacción para Cancelar Arrendamiento#

Obtenga más información sobre la transacción para cancelar arrendamiento

Versión 3

message LeaseCancelTransactionData {
  bytes lease_id = 1;
};
Formato Binario de Transacción para Cancelar Arrendamiento Versión 3#

Campo

Tamaño

Descripción

lease_id

\(32\) bytes

Identificación de Arrendamiento.

Versión 2

Formato Binario de Transacción para Cancelar Arrendamiento Versión 2#

#

Campo

Nombre de campo JSON

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

Indicador de versión

Byte

\(1\)

Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\).

\(2\)

ID de tipo de transacción

type

Byte

\(1\)

El valor debe ser \(9\).

\(3\)

Versión de transacción

version

Byte

\(1\)

El valor debe ser \(2\).

\(4\)

ID de cadena

chainId

Byte

\(1\)

\(87\) — para Mainnet. \(84\) — para Testnet. \(83\) — para Stagenet.

\(5\)

Clave pública del remitente de la transacción

senderPublicKey

Array[Byte]

\(32\)

\(6\)

Tarifa de transacción

fee

Long

\(8\)

\(7\)

Marca de tiempo de la transacción

timestamp

Long

\(8\)

\(8\)

ID de Arrendamiento

Array[Byte]

\(32\)

\(9\)

Pruebas de la transacción

proofs

Consulte el formato binario de pruebas de transacción

S

Si la matriz está vacía, entonces \(S = 3\). Si la matriz no está vacía, entonces \(S = 3 + 2 × N + 64 × N\), donde \(N\) es el número de pruebas en la matriz. El número máximo de pruebas en la matriz es \(8\). El tamaño de cada prueba es \(64\) bytes.

Los campos \(2\), \(3\), \(4\), \(5\), \(6\), \(7\) y :math:`8 ` son los bytes del cuerpo de la transacción.

Representación JSON de Transacción

{
  "type":9,
  "id":"7siEtrJAvmVzM1WDX6v9RN4qkiCtk7qQEeD5ZhE6955E",
  "sender":"3PMBXG13f89pq3WyJHHKX2m5zN6kt2CEkHQ",
  "senderPublicKey":"BEPNBjo9Pi9hJ3hVtxpwyEfXCW3qWUNk5dMD7aFdiHsa",
  "fee":100000,
  "feeAssetId":null,
  "timestamp":1548660629957,
  "proofs": [
    "3cqVVsaEDzBz367KTBFGgMXEYJ2r3yLWd4Ha8r3GzmAFsm2CZ3GeNW22wqxfK4LNRFgsM5kCWRVhf6gu2Nv6zVqW"
  ],
  "version":2,
  "leaseId":"BggRaeNCVmzuFGohzF4dQeYXSWr8i5zNSnGtdKc5eGrY",
  "chainId":87,
  "height":1370970,
  "lease": {
    "id":"BggRaeNCVmzuFGohzF4dQeYXSWr8i5zNSnGtdKc5eGrY",
    "originTransactionId":"BggRaeNCVmzuFGohzF4dQeYXSWr8i5zNSnGtdKc5eGrY",
    "sender":"3PMBXG13f89pq3WyJHHKX2m5zN6kt2CEkHQ",
    "recipient":"3PMWRsRDy882VR2viKPrXhtjAQx7ygQcnea",
    "amount":406813214,
    "height":1363095,
    "status":"canceled",
    "cancelHeight":1370970,
    "cancelTransactionId":"7siEtrJAvmVzM1WDX6v9RN4qkiCtk7qQEeD5ZhE6955E"
  }
}

Versión 1

Formato Binario de Transacción para Cancelar Arrendamiento Versión 1#

Número de orden de campo

Campo

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

ID de tipo de transacción

Byte

\(1\)

El valor debe ser \(9\).

\(2\)

Clave pública del remitente de la transacción

Array[Byte]

\(32\)

\(3\)

Tarifa de transacción

Long

\(8\)

\(4\)

Marca de tiempo de la transacción

Long

\(8\)

\(5\)

ID de Arrendamiento

Array[Byte]

\(32\)

\(6\)

Firma de transacción

Array[Byte]

\(64\)

Los campos \(1\), \(2\), \(3\), \(4\) y \(5\) son los bytes del cuerpo de la transacción.

Formato Binario de Transacción para Arrendamiento#

Obtenga más información sobre la transacción para arrendamiento.

Versión 3

message LeaseTransactionData {
  Recipient recipient = 1;
  int64 amount = 2;
};

message Recipient {
  oneof recipient {
    bytes public_key_hash = 1;
    string alias = 2;
  };
};
Formato Binario de Transacción para Arrendamiento Versión 3#

Campo

Tamaño

Descripción

recipient.public_key_hash

\(20\) bytes

Hash de clave pública de la cuenta del destinatario (un componente de una dirección, consulte el formato binario de dirección).

recipient.alias

De \(4\) a \(30\) bytes

Alias del destinatario.

amount

\(8\) bytes

Cantidad de DecentralCoins para arrendar (es decir, la cantidad de Decentralitos multiplicada por \(10^{8}\)).

Versión 2

Formato Binario de Transacción para Arrendamiento Versión 2#

#

Campo

Nombre de campo JSON

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

Indicador de versión

Byte

\(1\)

Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\).

\(2\)

ID de tipo de transacción

type

Byte

\(1\)

El valor debe ser \(8\).

\(3\)

Versión de transacción

version

Byte

\(1\)

El valor debe ser \(2\).

\(4\)

Campo reservado

Byte

\(1\)

El valor debe ser igual a \(0\).

\(5\)

Clave pública del remitente de la transacción

senderPublicKey

Array[Byte]

\(32\)

\(6\)

dirección o alias del destinatario

recipient

Consulte formato binario de dirección, formato binario del alias

S

Si el primer byte del campo es \(1\), le sigue la dirección. S en este caso es igual a \(26\). Si el primer byte del campo es \(2\), le sigue el alias. En este caso \(8 <= S <= 34\).

\(7\)

Cantidad de DecentralCoins que se arrendarán a la cuenta

amount

Long

\(8\)

\(8\)

Tarifa de transacción

fee

Long

\(8\)

\(9\)

Marca de tiempo de la transacción

timestamp

Long

\(8\)

\(10\)

Pruebas de la transacción

proofs

Consulte el formato binario de pruebas de transacción

S

Si la matriz está vacía, entonces \(S = 3\). Si la matriz no está vacía, entonces \(S = 3 + 2 × N + 64 × N\), donde \(N\) es el número de pruebas en la matriz. El número máximo de pruebas en la matriz es \(8\). El tamaño de cada prueba es \(64\) bytes.

Los campos \(2\), \(3\), \(4\), \(5\), \(6\), \(7\), \(8\) y \(9\) son los bytes del cuerpo de la transacción.

Representación JSON de Transacción

{
  "type":8,
  "id":"J6jZCzLpWJX8EDVhopKFx1mcbFizLGHVb44dvqPzH4QS",
  "sender":"3PMYNm8hshzCNjZ8GpPta5SyN7qBTEzS7Kw",
  "senderPublicKey":"GNswAY61mER5ZyUFeDBo1UyKGkPSSmmnd6yj7axN2n8f",
  "fee":100000,
  "feeAssetId":null,
  "timestamp":1548660916755,
  "proofs": [
    "2opTj7mGKXLRajkJ78wN4ctSWqTeWtvisHaR8BnL2amqJ2KB313BbcpDYJKcqr7o7EpYjL5tppMz2pGjUMWbJe9b"
  ],
  "version":2,
  "amount":14000000000,
  "recipient":"3PMWRsRDy882VR2viKPrXhtjAQx7ygQcnea",
  "height":1370973,
  "status":"canceled"
}

Versión 1

Formato Binario de Transacción para Arrendamiento Versión 1#

#

Campo

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

ID de tipo de transacción

Byte

\(1\)

El valor debe ser \(8\).

\(2\)

Clave pública del remitente de la transacción

Array[Byte]

\(32\)

\(3\)

dirección o alias del destinatario

Consulte formato binario de dirección, formato binario del alias

S

Si el primer byte del campo es \(1\), le sigue la dirección. S en este caso es igual a \(26\). Si el primer byte del campo es \(2\), le sigue el alias. En este caso \(8 <= S <= 34\).

\(4\)

Cantidad de DecentralCoins que se arrendarán a la cuenta

Long

\(8\)

\(5\)

Tarifa de transacción

Long

\(8\)

\(6\)

Marca de tiempo de la transacción

Long

\(8\)

\(7\)

Firma de transacción

Array[Byte]

\(64\)

Los campos \(1\), \(2\), \(3\), \(4\), \(5\) y \(6\) son los bytes del cuerpo de la transacción.

Formato Binario de Transacción para Transferencia Masiva#

Obtenga más información sobre la transacción para transferencia masiva.

Versión 2

message MassTransferTransactionData {
  message Transfer {
    Recipient recipient = 1;
    int64 amount = 2;
  };
  bytes asset_id = 1;
  repeated Transfer transfers = 2;
  bytes attachment = 3;
};

message Recipient {
  oneof recipient {
    bytes public_key_hash = 1;
    string alias = 2;
  };
}
Formato Binario de Transacción para Transferencia Masiva Versión 2#

Campo

Tamaño

Descripción

asset_id

\(32\) bytes

ID del token a transferir.

transfers.recipient.public_key_hash

\(20\) bytes

Hash de clave pública de la cuenta del destinatario (un componente de una dirección, consulte el formato binario de dirección).

transfers.recipient.alias

De \(4\) a \(30\) bytes

Alias del destinatario.

transfers.amount

\(8\) bytes

Cantidad de token a transferir, especificada en la fracción mínima (“centavos”).

attachment

Hasta \(140\) bytes

Datos arbitrarios (típicamente un comentario para transferir).

El número máximo de transferencias es \(100\).

Representación JSON de Transacción

{
  "type":11,
  "id":"3LRfudet7avpQcW1AdauiBGb8SSRAaoCugDzngDPLVcv",
  "sender":"3P2rvn2Hpz6pJcH8oPNrwLsetvYP852QQ2m",
  "senderPublicKey":"5DphrhGy6MM4N3yxfB2uR2oFUkp2MNMpSzhZ4uJEm3U1",
  "fee":5100000,
  "feeAssetId":null,
  "timestamp":1528973951321,
  "proofs": [
    "FmGBaWABAy5bif7Qia2LWQ5B4KNmBnbXETL1mE6XEy4AAMjftt3FrxAa8x2pZ9ux391oY5c2c6ZSDEM4nzrvJDo"
  ],
  "version":1,
  "assetId":"Fx2rhWK36H1nfXsiD4orNpBm2QG1JrMhx3eUcPVcoZm2",
  "attachment":"xZBWqm9Ddt5BJVFvHUaQwB7Dsj78UQ5HatQjD8VQKj4CHG48WswJxUUeHEDZJkHgt9LycUpHBFc8ENu8TF8vvnDJCgfy1NeKaUNydqy9vkACLZjSqaVmvfaM3NQB",
  "transferCount":6,
  "totalAmount":500000000000,
  "transfers": [
    {"recipient":"3PHnjQrdK389SbzwPEJHYKzhCqWvaoy3GQB","amount":5000000000},
    {"recipient":"3PGNLwUG2GPpw74teTAxXFLxgFt3T2uQJsF","amount":5000000000},
    {"recipient":"3P5kQneM9EdpVUbFLgefD385LLYTXY5J32c","amount":5000000000},
    {"recipient":"3P2j9FZyygnVDCQvmSc41VCAKwwCQm8QUhA","amount":5000000000},
    {"recipient":"3PNBZutLvMpjzxGAiQGqQuDyanhWyLi2Fhi","amount":5000000000},
    {"recipient":"3P84vdYxzDPFbS5zj9J6yCkmKKA2QMo1DKA","amount":5000000000},
  ],
  "height":1041197
}

Versión 1

Formato Binario de Transacción para Transferencia Masiva Versión 1#

#

Campo

Nombre de campo JSON

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

ID de tipo de transacción

type

Byte

\(1\)

El valor debe ser \(11\).

\(2\)

Versión de transacción

version

Byte

\(1\)

El valor debe ser \(1\).

\(3\)

Clave pública del remitente de la transacción

senderPublicKey

Array[Byte]

\(32\)

\(4.1\)

Marcar DecentralCoins/token

Byte

\(1\)

El valor es \(0\) para transferir DecentralCoins. El valor es \(1\) para transferir otros tokens.

\(4.2\)

Identificador del token

assetId

Array[Byte]

S

\(S = 0\) si el valor de la bandera DecentralCoins/token field es \(0\). \(S = 32\) si el valor de la bandera DecentralCoins/token field es \(1\).

\(5.1\)

Número de transferencias

transferCount

Short

\(2\)

\(5.2\)

dirección o alias del destinatario

recipient

Consulte formato binario de dirección, formato binario del alias

S

Si el primer byte del campo es \(1\), le sigue la dirección. S en este caso es igual a \(26\). Si el primer byte del campo es \(2\), le sigue el alias. En este caso \(8 <= S <= 34\).

\(5.3\)

Cantidad de tokens en la transferencia 1

amount

Long

\(8\)

\(5.4\)

Dirección o alias del destinatario

recipient

Consulte formato binario de dirección, formato binario del alias

S

Si el primer byte del campo es \(1\), le sigue la dirección. S en este caso es igual a \(26\). Si el primer byte del campo es \(2\), le sigue el alias. En este caso \(8 <= S <= 34\).

\(5.5\)

Cantidad de tokens en la transferencia 2

amount

Long

\(8\)

\(5.[2 × N]\)

Dirección o alias del destinatario

recipient

Consulte formato binario de dirección, formato binario del alias

S

Si el primer byte del campo es \(1\), le sigue la dirección. S en este caso es igual a \(26\). Si el primer byte del campo es \(2\), le sigue el alias. En este caso \(8 <= S <= 34\).

\(5.[2 × N + 1]\)

Cantidad de tokens en la transferenciaN

amount

Long

\(8\)

\(6\)

Marca de tiempo de la transacción

timestamp

Long

\(8\)

\(7\)

Tarifa de transacción

fee

Long

\(8\)

\(8.1\)

Longitud del archivo adjunto

Short

\(2\)

\(8.2\)

Adjunto

Array[Byte]

\(2\)

Datos arbitrarios adjuntos a la transacción.

\(9\)

Pruebas de la transacción

proofs

Consulte el formato binario de pruebas de transacción

S

Si la matriz está vacía, entonces \(S = 3\). Si la matriz no está vacía, entonces \(S = 3 + 2 × N + 64 × N\), donde \(N\) es el número de pruebas en la matriz. El número máximo de pruebas en la matriz es \(8\). El tamaño de cada prueba es \(64\) bytes.

Los campos \(1\), \(2\), \(3\), \(4.1\), \(4.2\), \(5.1\), \(5.2\) , \(5.3\), \(5.4\), \(5.5\), \(5.[2 × N]\), \(5.[2 × N + 1]\), \(6\), \(7\), \(8.1\) y \(8.2\) son los bytes del cuerpo de la transacción.

Formato Binario de Transacción para Reemisión Versión 3#

Obtenga más información sobre la transacción para reemisión.

Versión 3

message ReissueTransactionData {
  Amount asset_amount = 1;
  bool reissuable = 2;
};

message Amount {
  bytes asset_id = 1;
  int64 amount = 2;
};
Formato Binario de Transacción para Reemisión Versión 3#

Campo

Tamaño

Descripción

asset_id

\(32\) bytes

ID del token para volver a emitir.

asset_amount.amount

\(8\) bytes

Cantidad de token a reemitir, especificada en la fracción mínima (“centavos”).

reissuable

\(1\) byte

Vuelva a emitir el indicador de disponibilidad.

Versión 2

Formato Binario de Transacción para Reemisión Versión 2#

#

Campo

Nombre de campo JSON

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

Indicador de versión

Byte

\(1\)

Indica que la versión de la transacción es 2 o superior. El valor debe ser \(0\).

\(2\)

ID de tipo de transacción

type

Byte

\(1\)

El valor debe ser \(5\).

\(3\)

Versión de transacción

version

Byte

\(1\)

El valor debe ser \(2\).

\(4\)

ID de cadena

chainId

Byte

\(1\)

\(87\) — para Mainnet. \(84\) — para Testnet. \(83\) — para Stagenet.

\(5\)

Clave pública del remitente de la transacción

senderPublicKey

Array[Byte]

\(32\)

\(6\)

Identificador del token

assetId

Array[Byte]

\(32\)

\(7\)

Cantidad de token que se volverá a emitir

quantity

Long

\(8\)

\(8\)

Bandera de reemisión

reissuable

Boolean

\(1\)

Si el valor es \(0\), no es posible volver a emitir el token. Si el valor es \(1\), es posible volver a emitir el token.

\(9\)

Tarifa de transacción

fee

Long

\(8\)

\(10\)

Marca de tiempo de la transacción

timestamp

Long

\(8\)

\(11\)

Pruebas de la transacción

proofs

Consulte el formato binario de pruebas de transacción

S

Si la matriz está vacía, entonces \(S = 3\). Si la matriz no está vacía, entonces \(S = 3 + 2 × N + 64 × N\), donde \(N\) es el número de pruebas en la matriz. El número máximo de pruebas en la matriz es \(8\). El tamaño de cada prueba es \(64\) bytes.

Los campos \(2\), \(3\), \(4\), \(5\), \(6\), \(7\), \(8\) , \(9\) y \(10\) son los bytes del cuerpo de la transacción.

Representación JSON de Transacción

{
  "type":5,
  "id":"27ETigYaHym2Zbdp4x1gnXnZPF1VJCqQpXmhszC35Qac",
  "sender":"3PLJciboJqgKsZWLj7k1VariHgre6uu4S2T",
  "senderPublicKey":"DjYEAb3NsQiB6QdmVAzkwJh7iLgUs3yDLf7oFEeuZjfM",
  "fee":100000000,
  "feeAssetId":null,
  "timestamp":1548521785933,
  "proofs": [
    "5mEveeUwBdBqe8naNoV5eAe5vj6fk8U743eHGkhxhs3v9PMsb3agHqpe4EtzpUFdpASJegXyjrGSbynZg557cnSq"
  ],
  "version":2,
  "assetId":"GA4gB3Lf3AQdF1vBCbqGMTeDrkUxY7L83xskRx6Z7kEH",
  "quantity":200000,
  "reissuable":true,
  "chainId":87,
  "height":1368623
}

Versión 1

Formato Binario de Transacción para Reemisión Versión 1#

Número de orden de campo

Campo

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

ID de tipo de transacción

Byte

\(1\)

El valor debe ser \(5\).

\(2\)

Firma de transacción

Array[Byte]

\(64\)

\(3\)

ID del tipo de transacción

Byte

\(1\)

Este campo duplica el campo \(1\).

\(4\)

Clave pública del remitente de la transacción

Array[Byte]

\(32\)

\(5\)

Identificador del token

Array[Byte]

\(32\)

\(6\)

Cantidad de token que se volverá a emitir

Long

\(8\)

\(7\)

Bandera de reemisión

Boolean

\(1\)

Si el valor es \(0\), no es posible volver a emitir el token. Si el valor es \(1\), es posible volver a emitir el token.

\(8\)

Tarifa de transacción

Long

\(8\)

\(9\)

Marca de tiempo de la transacción

Long

\(8\)

Los campos \(3\), \(4\), \(5\), \(6\), \(7\), \(8\) y \(9\) son los bytes del cuerpo de la transacción.

Formato Binario de Transacción para Asignar Scripts de Activos#

Obtenga más información sobre la transacción para asignar scripts de activos.

Versión 2

message SetAssetScriptTransactionData {
  bytes asset_id = 1;
  bytes script = 2;
};
Formato Binario de Transacción para Asignar Scripts de Activos Versión 2#

Campo

Tamaño

Descripción

asset_id

\(32\) bytes

ID del activo.

script

Hasta \(8192\) bytes

Script de activo.

El número máximo de transferencias es \(100\).

Representación JSON de Transacción

{
  "type":15,
  "id":"FwYSpmVDbWQ2BA5NCBZ9z5GSjY39PSyfNZzBayDiMA88",
  "sender":"3P67JUW8Djit7hMjKhADmn6CWvKPbRuh2sQ",
  "senderPublicKey":"AwQYJRHZNd9bvF7C13uwnPiLQfTzvDFJe7DTUXxzrGQS",
  "fee":100000000,
  "feeAssetId":null,
  "timestamp":1547201038106,
  "proofs": [
    "nzYhVKmRmd7BiFDDfrFVnY6Yo98xDGsKrBLWentF7ibe4P9cGWg4RtomHum2NEMBhuyZb5yjThcW7vsCLg7F8NQ"
  ],
  "version":1,
  "assetId":"7qJUQFxniMQx45wk12UdZwknEW9cDgvfoHuAvwDNVjYv",
  "script":"base64:AQa3b8tH",
  "chainId":87,
  "height":1346345
}

Versión 1

Formato Binario de Transacción para Asignar Scripts de Activos Versión 1#

#

Campo

Nombre de campo JSON

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

Indicador de versión

Byte

\(1\)

Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\).

\(2\)

ID de tipo de transacción

type

Byte

\(1\)

El valor debe ser \(15\).

\(3\)

Versión de transacción

version

Byte

\(1\)

El valor debe ser \(1\).

\(4\)

ID de cadena

chainId

Byte

\(1\)

\(87\) — para Mainnet. \(84\) — para Testnet. \(83\) — para Stagenet.

\(5\)

Clave pública del remitente de la transacción

senderPublicKey

Array[Byte]

\(32\)

\(6\)

ID de token al que se adjunta el script de activo

assetId

Array[Byte]

\(32\)

\(7\)

Tarifa de transacción

fee

Long

\(8\)

\(8\)

Marca de tiempo de la transacción

timestamp

Long

\(8\)

\(9.1\)

Bandera de existencia de secuencia de comandos

Boolean

\(1\)

Si el valor es \(0\), entonces el token no tiene un script. Si el valor es \(1\), entonces el token tiene un script.

\(9.2\)

Tamaño del script en bytes

Short

S

\(S = 0\) si el valor del campo indicador de existencia del script es \(0\). \(S = 2\) si el valor del campo indicador de existencia del script es \(1\).

\(9.3\)

Script de activo

script

String

S

\(S = 0\) si el valor del campo indicador de existencia del script es \(0\). \(0 < S ≤ 8192\), si el valor del campo indicador de existencia del script es \(1\).

\(10\)

Pruebas de la transacción

proofs

Consulte el formato binario de pruebas de transacción

S

Si la matriz está vacía, entonces \(S = 3\). Si la matriz no está vacía, entonces \(S = 3 + 2 × N + 64 × N\), donde \(N\) es el número de pruebas en la matriz. El número máximo de pruebas en la matriz es \(8\). El tamaño de cada prueba es \(64\) bytes.

Los campos \(2\), \(3\), \(4\), \(5\), \(6\), \(7\), \(8\) , \(9.1\), \(9.2\) y \(9.3\) son los bytes del cuerpo de la transacción.

Formato Binario de Transacción para Asignar Scripts#

Obtenga más información sobre la transacción para asignar scripts.

Versión 2

message SetScriptTransactionData {
  bytes script = 1;
};
Formato Binario de Transacción para Asignar Scripts Versión 2#

Campo

Tamaño

Descripción

script

Hasta \(32,768\) bytes

Script de cuenta or script de dApp.

Representación JSON de Transacción

{
  "type":13,
  "id":"8Nwjd2tcQWff3S9WAhBa7vLRNpNnigWqrTbahvyfMVrU",
  "sender":"3PBSduYkK7GQxVFWkKWMq8GQkVdAGX71hTx",
  "senderPublicKey":"3LZmDK7vuSBsDmFLxJ4qihZynUz8JF9e88dNu5fsus5p",
  "fee":2082496,
  "feeAssetId":null,
  "timestamp":1537973512182,
  "proofs": [
    "V45jPG1nuEnwaYb9jTKQCJpRskJQvtkBcnZ45WjZUbVdNTi1KijVikJkDfMNcEdSBF8oGDYZiWpVTdLSn76mV57"
  ],
  "version":1,
  "script":"base64:AQQAAAAEaW5hbAIAAAAESW5hbAQAAAAFZWxlbmECAAAAB0xlbnVza2EEAAAABGxvdmUCAAAAC0luYWxMZW51c2thCQAAAAAAAAIJAAEsAAAAAgUAAAAEaW5hbAUAAAAFZWxlbmEFAAAABGxvdmV4ZFt5",
  "chainId":87,
  "height":1190001
}

Versión 1

Formato Binario de Transacción para Asignar Scripts Versión 1#

#

Campo

Nombre de campo JSON

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

Indicador de versión

Byte

\(1\)

Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\).

\(2\)

ID de tipo de transacción

type

Byte

\(1\)

El valor debe ser \(13\).

\(3\)

Versión de transacción

version

Byte

\(1\)

El valor debe ser \(1\).

\(4\)

ID de cadena

chainId

Byte

\(1\)

\(87\) — para Mainnet. \(84\) — para Testnet. \(83\) — para Stagenet.

\(5\)

Clave pública del remitente de la transacción

senderPublicKey

Array[Byte]

\(32\)

\(6.1\)

Bandera de existencia de secuencia de comandos

Boolean

\(1\)

Si el valor es \(0\), entonces el token no tiene un script. Si el valor es \(1,\) entonces el token tiene un script.

\(6.2\)

Longitud del script

Short

S

\(S = 0\) si el valor del campo indicador de existencia del script es \(0\). \(S = 2\) si el valor del campo indicador de existencia del script es \(1\).

\(6.3\)

Script

script

String

S

\(S = 0\) si el valor del campo indicador de existencia del script es \(0\). \(0 < S ≤ 32,768\), si el valor del campo de indicador de existencia del script es \(1\).

\(7\)

Tarifa de transacción

fee

Long

\(8\)

\(8\)

Marca de tiempo de la transacción

timestamp

Long

\(8\)

\(9\)

Pruebas de la transacción

proofs

Consulte el formato binario de pruebas de transacción

S

Si la matriz está vacía, entonces \(S = 3\). Si la matriz no está vacía, entonces \(S = 3 + 2 × N + 64 × N\), donde \(N\) es el número de pruebas en la matriz. El número máximo de pruebas en la matriz es \(8\). El tamaño de cada prueba es \(64\) bytes.

Formato Binario de Transacción para Transferencia#

Obtenga más información sobre la transacción para transferencia.

Versión 3

message TransferTransactionData {
  Recipient recipient = 1;
  Amount amount = 2;
  bytes attachment = 3;
};

message Recipient {
  oneof recipient {
    bytes public_key_hash = 1;
    string alias = 2;
  };

message Amount {
  bytes asset_id = 1;
  int64 amount = 2;
};
Formato Binario de Transacción para Transferencia Versión 3#

Campo

Tamaño

Descripción

recipient.public_key_hash

\(20\) bytes

Hash de clave pública de la cuenta del destinatario (un componente de una dirección, consulte el formato binario de dirección).

recipient.alias

De \(4\) a \(30\) bytes

Alias del destinatario.

amount.asset_id

\(32\) bytes

ID del token a transferir.

amount.amount

\(8\) bytes

Cantidad de token a transferir, especificada en la fracción mínima (“centavos”).

attachment

Hasta \(140\) bytes

Datos arbitrarios (típicamente un comentario para transferir).

Versión 2

Formato Binario de Transacción para Transferencia Versión 2#

#

Campo

Nombre de campo JSON

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

Indicador de versión

Byte

\(1\)

Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\).

\(2\)

ID de tipo de transacción

type

Byte

\(1\)

El valor debe ser \(4\).

\(3\)

Versión de transacción

version

Byte

\(1\)

El valor debe ser \(2\).

\(4\)

Clave pública del remitente de la transacción

senderPublicKey

Array[Byte]

\(32\)

\(5.1\)

Transfiriendo marca de tipo de token

Byte

\(1\)

El valor es \(0\) para transferir DecentralCoins. El valor es \(1\) para transferir otro token.

\(5.2\)

Transfiriendo ID de token

assetId

Array[Byte]

S

math:S = 0 si el valor de la bandera 5.1 es \(0\). \(S = 32\) si el valor de la bandera 5.1 es \(1\).

\(6.1\)

Indicador de tipo de token de tarifa

Byte

\(1\)

El valor es 0 para la tarifa en DecentralCoins. El valor es \(1\) para la tarifa en otro token.

\(6.2\)

ID de token de tarifa

feeAssetId

Array[Byte]

S

Ficha para pagar la cuota. \(S = 0\) si el valor de la bandera 6.1 es \(0\). \(S = 32\) si el valor del campo indicador 6.1 es \(1\).

\(7\)

Marca de tiempo de la transacción

timestamp

Long

\(8\)

\(8\)

Cantidad de token en la transferencia

amount

Long

\(8\)

\(9\)

Tarifa de transacción

fee

Long

\(8\)

\(10\)

Dirección o alias

recipient

Consulte formato binario de dirección, formato binario del alias

S

Si el primer byte del campo es \(1\), le sigue la dirección. S en este caso es igual a \(26\). Si el primer byte del campo es \(2\), le sigue el alias. En este caso \(8 <= S <= 34\)

\(11.1\)

Longitud del archivo adjunto

Short

\(2\)

\(11.2\)

Adjunto

attachment

Array[Byte]

Hasta \(140\) bytes

Datos arbitrarios adjuntos a la transacción.

\(12\)

Pruebas de la transacción

proofs

Consulte el formato binario de pruebas de transacción

S

Si la matriz está vacía, entonces \(S = 3\). Si la matriz no está vacía, entonces \(S = 3 + 2 × N + 64 × N\), donde N es el número de pruebas en la matriz. El número máximo de pruebas en la matriz es \(8\). El tamaño de cada prueba es \(64\) bytes.

Representación JSON de Transacción

{
  "type":4,
  "id":"2UMEGNXwiRzyGykG8voDgxnwHA7w5aX5gmxdcf9DZZjL",
  "sender":"3PCeQD3nAyHmzDSYBUnSPDWf9qxqzVU2sjh",
  "senderPublicKey":"6kn1XPDh2XUjVAgznxNousHq3EnKKLx7BRWyJzVFU76J",
  "fee":100000,
  "feeAssetId":null,
  "timestamp":1583160322998,
  "proofs": [
    "2z5fnoigbsCBqRPWqTDeDmGJF6qJwnm2WLspen6c6qziTc73sBh9Kh81kPhUT9DGg7ANwqsXMxQauEvyw3RxNH7z"
  ],
  "version":2,
  "recipient":"3P45uRnyVygTnbEJNxc2CHLUiC4izQxbuuS",
  "assetId":"51LxAtwBXapvvTFSbbh4nLyWFxH6x8ocfNvrXxbTChze",
  "feeAsset":null,
  "amount":30077000000,
  "attachment":"2d6RhvQATwGbyv7dKT3L77758iJx",
  "height":1954598
}

Versión 1

Formato Binario de Transacción para Transferencia Versión 2#

#

Campo

Tipo de campo

Tamaño del campo en bytes

Comentario

\(1\)

ID de tipo de transacción

Byte

\(1\)

El valor debe ser \(4\).

\(2\)

Firma de transacción

Array[Byte]

\(64\)

\(3\)

ID del tipo de transacción

Byte

\(1\)

Este campo duplica el campo \(1\).

\(4\)

Clave pública del remitente de la transacción

Array[Byte]

\(32\)

\(5.1\)

Transfiriendo marca de tipo de token

Byte

\(1\)

El valor es \(0\) para transferir DecentralCoins. El valor es 1 para transferir otro token.

\(5.2\)

Transfiriendo ID de token

Array[Byte]

S

\(S = 0\) si el valor de la bandera 5.1 es \(0\). \(S = 32\) si el valor de la bandera 5.1 es \(1\).

\(6.1\)

Indicador de tipo de token de tarifa

Byte

\(1\)

El valor es \(0\) para la tarifa en DecentralCoins. El valor es \(1\) para la tarifa en otro token.

\(6.2\)

ID de token de tarifa

Array[Byte]

S

Ficha para pagar la cuota. \(S = 0\) si el valor de la bandera 6.1 es 0. \(S = 32\) si el valor del campo de la bandera 6.1 es \(1\).

\(7\)

Marca de tiempo de la transacción

Long

\(8\)

\(8\)

Cantidad de token en la transferencia

amount

Long

\(8\)

\(9\)

Tarifa de transacción

fee

Long

\(8\)

\(10\)

Dirección o alias

recipient

Consulte formato binario de dirección, formato binario del alias

S

\(11.1\)

Longitud del archivo adjunto

Short

\(2\)

\(11.2\)

Adjunto

attachment

Array[Byte]

Hasta \(140\) bytes.

Formato Binario de Transacción para Actualizar Información de Activos#

Obtenga más información sobre la transacción para actualizar información de activos.

Versión 1

message UpdateAssetInfoTransactionData {
  bytes asset_id = 1;
  string name = 2;
  string description = 3;
}
Formato Binario de Transacción para Actualizar Información de Activos Versión 1#

Campo

Tamaño

Descripción

asset_id

\(32\) bytes

Identificación de Token.

name

De \(4\) a \(16\) bytes

Nombre del token.

description

De \(0\) a \(1000\) bytes

Descripción del token.

Formato Binario de Pruebas de Transacciones#

Formato Binario de Pruebas de Transacciones#

#

Campo

Tipo

Tamaño en bytes

Comentario

\(1\)

Versión de Pruebas

Byte

\(1\)

El valor es 1.

\(2\)

Contador de pruebas

Short

\(2\)

\(3\)

Prueba 1 longitud

Short

\(2\)

El valor es 64.

\(4\)

Pruebas 1

Array[Byte]

\(64\)

\(5\)

Prueba 2 longitud

Short

\(2\)

\(6\)

Prueba 2

Array[Byte]

\(64\)

El número máximo de demostraciones es \(8\).