Formato Binario#
Formato binario del mensaje de red
Formato Binario de Dirección#
Obtenga más información sobre las direcciones.
Número de orden de campo |
Campo |
Tipo de campo |
Tamaño del campo en bytes |
Comentarios |
---|---|---|---|---|
\(1\) |
Tipo de entidad |
\(1\) |
El valor debe ser \(1\). |
|
\(2\) |
\(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.
Número de orden de campo |
Campo |
Tipo de campo |
Tamaño del campo en bytes |
Comentarios |
---|---|---|---|---|
\(1\) |
Tipo de entidad |
\(1\) |
El valor debe ser \(2\). |
|
\(2\) |
\(1\) |
\(87\) — para Mainnet. \(84\) — para Testnet. \(83\) — para Stagenet. |
||
\(3\) |
Número de caracteres en el alias |
\(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;
}
Campo |
Descripción |
---|---|
chain_id |
|
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
# |
Campo |
Tipo de campo |
Tamaño del campo en bytes |
Comentarios |
---|---|---|---|---|
\(1\) |
Versión de bloque |
\(1\) |
El valor debe ser \(4\). |
|
\(2\) |
\(8\) |
Tiempo Unix en milisegundos. |
||
\(3\) |
Firma del bloque anterior |
Array[Byte] |
\(64\) |
|
\(4\) |
\(8\) |
|||
\(5\) |
Array[Byte] |
\(32\) |
||
\(6\) |
Número de transacciones en el bloque |
\(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\) |
||
\(9.1\) |
Característica 1 |
\(2\) |
||
… |
… |
… |
… |
… |
\(9.[M]\) |
Característica M |
\(2\) |
||
\(10\) |
Recompensa de generación de bloques por la que vota el generador de bloques |
\(8\) |
\(-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\) |
\(64\) |
Array[Byte] |
Versión 3
# |
Campo |
Tipo de campo |
Tamaño del campo en bytes |
Comentarios |
---|---|---|---|---|
\(1\) |
Versión de bloque |
\(1\) |
El valor debe ser \(4\). |
|
\(2\) |
\(8\) |
Tiempo Unix en milisegundos. |
||
\(3\) |
Firma del bloque anterior |
Array[Byte] |
\(64\) |
|
\(4\) |
\(8\) |
|||
\(5\) |
Array[Byte] |
\(32\) |
||
\(6\) |
Número de transacciones en el bloque |
\(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\) |
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.
# |
Nombre del campo |
Tipo |
Longitud en bytes |
---|---|---|---|
\(1\) |
Longitud del paquete (BigEndian) |
\(4\) |
|
\(2\) |
Bytes Mágicos |
Bytes |
\(4\) |
\(3\) |
ID de contenido (0x17) |
\(1\) |
|
\(4\) |
Longitud de la carga útil |
\(4\) |
|
\(5\) |
Suma de comprobación de carga útil |
Bytes |
\(4\) |
\(6\) |
Bytes de bloque (N) |
Bytes |
N |
Formato Binario del Mensaje del Checkpoint#
# |
Nombre del campo |
Tipo |
Longitud en bytes |
---|---|---|---|
\(1\) |
Longitud del paquete (BigEndian) |
\(4\) |
|
\(2\) |
Bytes Mágicos |
Bytes |
\(4\) |
\(3\) |
ID de contenido (0x64) |
\(1\) |
|
\(4\) |
Longitud de la carga útil |
\(4\) |
|
\(5\) |
Suma de comprobación de carga útil |
Bytes |
\(4\) |
\(6\) |
Checkpoint contador de items (N) |
\(4\) |
|
\(7\) |
Checkpoint #1 altura |
\(8\) |
|
\(8\) |
Checkpoint #1 firma |
Bytes |
\(64\) |
… |
… |
… |
… |
\(6 + 2 * N - 1\) |
Checkpoint #N altura |
\(8\) |
|
\(6 + 2 * N\) |
Checkpoint #N firma |
Bytes |
\(64\) |
Formato Binario del Mensaje al Obtener Bloque#
# |
Nombre del campo |
Tipo |
Longitud en bytes |
---|---|---|---|
\(1\) |
Longitud del paquete (BigEndian) |
\(4\) |
|
\(2\) |
Bytes Mágicos |
Bytes |
\(4\) |
\(3\) |
ID de contenido (0x16) |
\(1\) |
|
\(4\) |
Longitud de la carga útil |
\(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.
# |
Nombre del campo |
Tipo |
Longitud en bytes |
---|---|---|---|
\(1\) |
Longitud del paquete (BigEndian) |
\(4\) |
|
\(2\) |
Bytes Mágicos |
Bytes |
\(4\) |
\(3\) |
ID de contenido (0x01) |
\(1\) |
|
\(4\) |
Longitud de la carga útil |
\(4\) |
|
\(5\) |
Suma de comprobación de carga útil |
Bytes |
\(4\) |
Formato Binario del Mensaje al Obtener Firma#
# |
Nombre del campo |
Tipo |
Longitud en bytes |
---|---|---|---|
\(1\) |
Longitud del paquete (BigEndian) |
\(4\) |
|
\(2\) |
Bytes Mágicos |
Bytes |
\(4\) |
\(3\) |
ID de contenido (0x14) |
\(1\) |
|
\(4\) |
Longitud de la carga útil |
\(4\) |
|
\(5\) |
Suma de comprobación de carga útil |
Bytes |
\(4\) |
\(6\) |
Recuento de ID de bloque (N) |
\(4\) |
|
\(7\) |
Bloque #1 ID |
\(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.
# |
Nombre del campo |
Tipo |
Longitud en bytes |
---|---|---|---|
\(1\) |
Longitud del nombre de la aplicación (N) |
\(1\) |
|
\(2\) |
Nombre de la aplicación (bytes codificados en UTF-8) |
Bytes |
N |
\(3\) |
Versión principal de la aplicación |
\(4\) |
|
\(4\) |
Versión menor de la aplicación |
\(4\) |
|
\(1\) |
Parche de versión de la aplicación |
\(4\) |
|
\(6\) |
Longitud del nombre del nodo (M) |
\(1\) |
|
\(7\) |
Nombre de nodo (bytes codificados en UTF-8) |
Bytes |
M |
\(8\) |
Nonce de nodo |
\(8\) |
|
\(9\) |
Longitud de la dirección declarada (K) o \(0\) si no se configuró ninguna dirección declarada |
\(4\) |
|
\(10\) |
Bytes de dirección declarados (si la longitud no es \(0\)) |
Bytes |
K |
\(11\) |
Marca de Tiempo |
\(8\) |
Formato Binario del Mensaje de Pares#
El mensaje de los compañeros es una respuesta para obtener el mensaje de los compañeros.
# |
Nombre del campo |
Tipo |
Longitud en bytes |
---|---|---|---|
\(1\) |
Longitud del paquete (BigEndian) |
\(4\) |
|
\(2\) |
Bytes Mágicos |
Bytes |
\(4\) |
\(3\) |
ID de contenido (0x02) |
\(1\) |
|
\(4\) |
Longitud de la carga útil |
\(4\) |
|
\(5\) |
Suma de comprobación de carga útil |
Bytes |
\(4\) |
\(6\) |
Recuento de compañeros (N) |
\(4\) |
|
\(7\) |
Par #1 dirección IP |
Bytes |
\(4\) |
\(8\) |
Par #1 puerto |
\(4\) |
|
… |
… |
… |
… |
\(6 + 2 * N - 1\) |
Par #N dirección IP |
Bytes |
\(4\) |
\(6 + 2 * N\) |
Par #N puerto |
\(4\) |
Formato Binario del Mensaje de Puntaje#
# |
Nombre del campo |
Tipo |
Longitud en bytes |
---|---|---|---|
\(1\) |
Longitud del paquete (BigEndian) |
\(4\) |
|
\(2\) |
Bytes Mágicos |
Bytes |
\(4\) |
\(3\) |
ID de contenido (0x18) |
\(1\) |
|
\(4\) |
Longitud de la carga útil |
\(4\) |
|
\(5\) |
Suma de comprobación de carga útil |
Bytes |
\(4\) |
\(6\) |
Puntuación (N bytes) |
\(N\) |
Formato Binario del Mensaje de Firmas#
# |
Nombre del campo |
Tipo |
Longitud en bytes |
---|---|---|---|
\(1\) |
Longitud del paquete (BigEndian) |
\(4\) |
|
\(2\) |
Bytes Mágicos |
Bytes |
\(4\) |
\(3\) |
ID de contenido (0x15) |
\(1\) |
|
\(4\) |
Longitud de la carga útil |
\(4\) |
|
\(5\) |
Suma de comprobación de carga útil |
Bytes |
\(4\) |
\(6\) |
Recuento de firmas en bloques (N) |
\(4\) |
|
\(7\) |
Firma n.º 1 del bloque |
Bytes |
\(64\) |
… |
… |
… |
… |
\(6 + N\) |
Firma #N del bloque |
Bytes |
\(64\) |
Formato Binario del Mensaje de Transacción#
# |
Nombre del campo |
Tipo |
Longitud en bytes |
---|---|---|---|
\(1\) |
Longitud del paquete (BigEndian) |
\(4\) |
|
\(2\) |
Bytes Mágicos |
Bytes |
\(4\) |
\(3\) |
ID de contenido (0x19) |
\(1\) |
|
\(4\) |
Longitud de la carga útil |
\(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;
};
Campo |
Tamaño |
Descripción |
---|---|---|
chain_id |
\(1\) byte |
|
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
# |
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 |
\(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) |
\(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) |
\(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 |
\(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 |
\(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 |
\(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 |
\(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 |
\(8\) |
Bytes en notación big-endian. |
|
\(11\) |
Tarifa del emparejador |
matcherFee |
\(8\) |
Bytes en notación big-endian. |
|
\(12\) |
Bandera de token de tarifa del emparejador |
\(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
# |
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) |
\(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) |
\(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) |
\(1\) |
|
\(7\) |
Precio |
\(8\) |
|
\(8\) |
Cantidad |
\(8\) |
|
\(9\) |
Marca de Tiempo |
\(8\) |
|
\(10\) |
Vencimiento |
\(8\) |
|
\(11\) |
Tarifa del emparejador |
\(8\) |
|
\(12\) |
Pruebas |
Pruebas |
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) |
\(1\) |
|
\(6\) |
Precio |
\(8\) |
|
\(7\) |
Cantidad |
\(8\) |
|
\(8\) |
Marca de Tiempo |
\(8\) |
|
\(9\) |
Vencimiento |
\(8\) |
|
\(10\) |
Tarifa del emparejador |
\(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:
# |
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 |
\(8\) |
|
\(7\) |
Cantidad |
\(8\) |
|
\(8\) |
Marca de Tiempo |
\(8\) |
|
\(9\) |
Vencimiento |
\(8\) |
|
\(10\) |
Tarifa del emparejador |
\(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;
};
Campo |
Tamaño |
Descripción |
---|---|---|
chain_id |
\(1\) byte |
|
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;
};
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
# |
Campo |
Nombre de campo JSON |
Tipo de campo |
Tamaño del campo en bytes |
Comentario |
---|---|---|---|---|---|
\(1\) |
Indicador de versión |
\(1\) |
Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\). |
||
\(2\) |
type |
\(1\) |
El valor debe ser \(6\). |
||
\(3\) |
Versión de transacción |
version |
\(1\) |
El valor debe ser \(2\). |
|
\(4\) |
chainId |
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 |
\(8\) |
||
\(8\) |
fee |
\(8\) |
|||
\(9\) |
Marca de tiempo de la transacción |
timestamp |
\(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
# |
Campo |
Tipo de campo |
Tamaño del campo en bytes |
Comentario |
---|---|---|---|---|
\(1\) |
\(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 |
\(8\) |
||
\(5\) |
\(8\) |
|||
\(6\) |
Marca de tiempo de la transacción |
\(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;
};
Campo |
Tamaño |
Descripción |
---|---|---|
alias |
De \(4\) a \(30\) bytes |
Versión 2
# |
Campo |
Nombre de campo JSON |
Tipo de campo |
Tamaño del campo en bytes |
Comentario |
---|---|---|---|---|---|
\(1\) |
Indicador de versión |
\(1\) |
Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\). |
||
\(2\) |
type |
\(1\) |
El valor debe ser \(10\). |
||
\(3\) |
Versión de transacción |
version |
\(1\) |
El valor debe ser \(2\). |
|
\(4\) |
Clave pública del remitente de la transacción |
senderPublicKey |
Array[Byte] |
\(32\) |
|
\(5\) |
Longitud del alias |
\(2\) |
Número de caracteres en el nombre del alias. |
||
\(6\) |
alias |
de \(4\) a \(30\) |
|||
\(7\) |
fee |
\(8\) |
|||
\(8\) |
Marca de tiempo de la transacción |
timestamp |
\(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
# |
Campo |
Tipo de campo |
Tamaño del campo en bytes |
Comentario |
---|---|---|---|---|
\(1\) |
\(1\) |
El valor debe ser \(10\). |
||
\(2\) |
Clave pública del remitente de la transacción |
Array[Byte] |
\(32\) |
|
\(3\) |
Longitud del alias |
\(2\) |
Número de caracteres en el nombre del alias. |
|
\(4\) |
Array[Byte] |
De \(4\) a \(30\) |
||
\(5\) |
\(8\) |
|||
\(6\) |
Marca de tiempo de la transacción |
\(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
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
# |
Campo |
Nombre de campo JSON |
Tipo de campo |
Tamaño del campo en bytes |
Comentario |
---|---|---|---|---|---|
\(1\) |
Indicador de versión |
\(1\) |
Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\). |
||
\(2\) |
type |
\(1\) |
El valor debe ser \(12\). |
||
\(3\) |
Versión de transacción |
version |
\(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 |
\(2\) |
|||
\(6.1\) |
Longitud de la clave 1 |
\(2\) |
|||
\(6.2\) |
Llave 1 |
key |
Hasta \(400\) |
Máximo de \(100\) caracteres. |
|
\(6.3\) |
Valor 1 tipo |
type |
\(1\) |
Las opciones son: 0 - Long. 1 - Boolean. 2 - Array[Byte]. 3 - String. |
|
\(6.4\) |
Valor 1 longitud |
\(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 |
\(2\) |
|||
\(6.7\) |
Llave 2 |
key |
Hasta \(400\) |
Máximo de \(100\) caracteres. |
|
\(6.8\) |
Tipo de valor 2 |
type |
\(1\) |
Las opciones son: 0 - Long. 1 - Boolean. 2 - Array[Byte]. 3 - String. |
|
\(6.9\) |
Valor 2 longitud |
\(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 |
\(2\) |
|||
\(6.[5 × N - 3]\) |
N-ésima llave |
key |
Hasta \(400\) |
Máximo de \(100\) caracteres. |
|
\(6.[5 × N - 2]\) |
Tipo del N-ésimo valor |
type |
\(1\) |
Las opciones son: 0 - Long. 1 - Boolean. 2 - Array[Byte]. 3 - String. |
|
\(6.[5 × N - 1]\) |
Longitud del valor N-ésimo |
\(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 |
\(8\) |
||
\(8\) |
fee |
\(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;
};
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.
# |
Campo |
Nombre de campo JSON |
Tipo de campo |
Tamaño del campo en bytes |
Comentario |
---|---|---|---|---|---|
\(1\) |
Indicador de versión |
\(1\) |
Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\). |
||
\(2\) |
type |
\(1\) |
El valor debe ser \(7\). |
||
\(3\) |
Versión de transacción |
version |
\(1\) |
El valor debe ser \(2\). |
|
\(4.1\) |
Tamaño del pedido de compra |
\(4\) |
Tamaño incluida la bandera 4.2. |
||
\(4.2\) |
Indicador de versión de orden de compra |
order1.version |
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 |
\(4\) |
Tamaño incluida la bandera 5.2. |
||
\(5.2\) |
Bandera de versión de orden de venta |
order2.version |
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 |
\(8\) |
Precio por el activo de cantidad (moneda base) nominado en el activo de precio (moneda de cotización). |
|
\(7\) |
Cantidad |
amount |
\(8\) |
Importe de la cantidad de activo (moneda base) que el comprador recibió del vendedor. |
|
\(8\) |
Tarifa del emparejador para compra |
buyMatcherFee |
\(8\) |
||
\(9\) |
Tarifa del emparejador para venta |
sellMatcherFee |
\(8\) |
||
\(10\) |
fee |
\(8\) |
|||
\(11\) |
Marca de tiempo de la transacción |
timestamp |
\(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.
# |
Campo |
Tipo de campo |
Tamaño del campo en bytes |
Comentario |
---|---|---|---|---|
\(1\) |
\(1\) |
El valor debe ser \(6\). |
||
\(2\) |
Tamaño del pedido de compra |
\(4\) |
||
\(3\) |
Tamaño de la orden de venta |
\(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 |
\(8\) |
Precio por el activo de cantidad (moneda base) nominado en el activo de precio (moneda de cotización). |
|
\(7\) |
Cantidad |
\(8\) |
Importe de la cantidad de activo (moneda base) que el comprador recibió del vendedor. |
|
\(8\) |
Tarifa del emparejador para compra |
\(8\) |
||
\(9\) |
Tarifa del emparejador para venta |
\(8\) |
||
\(10\) |
\(8\) |
|||
\(11\) |
Marca de tiempo de la transacción |
\(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.
# |
Campo |
Nombre de campo JSON |
Tipo de campo |
Tamaño del campo en bytes |
Comentario |
---|---|---|---|---|---|
\(1\) |
type |
\(1\) |
El valor debe ser \(1\). |
||
\(2\) |
Marca de tiempo de la transacción |
timestamp |
\(8\) |
||
\(3\) |
Dirección del destinatario |
recipient |
Array[Byte] |
\(26\) |
|
\(4\) |
Cantidad de DecentralCoins que se transferirá a la cuenta |
amount |
\(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;
};
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
# |
Campo |
Nombre de campo JSON |
Tipo de campo |
Tamaño del campo en bytes |
Comentario |
---|---|---|---|---|---|
\(1\) |
Indicador de versión |
\(1\) |
Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\). |
||
\(2\) |
type |
\(1\) |
El valor debe ser \(16\). |
||
\(3\) |
Versión de transacción |
version |
\(1\) |
El valor debe ser \(1\). |
|
\(4\) |
\(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 |
\(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 |
\(1\) |
Constante. El valor debe ser \(9\). |
||
\(7.3\) |
ID de tipo de función |
\(1\) |
Constante. El valor debe ser \(1\). |
||
\(7.4\) |
Longitud del nombre de la función |
\(4\) |
|||
\(7.5\) |
Nombre de la función |
función |
Hasta \(255\) |
||
\(7.6.1\) |
Cantidad de argumentos de la función |
\(4\) |
|||
\(7.6.2\) |
ID del tipo de argumento 1 |
type |
\(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 |
\(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 |
\(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 |
\(2\) |
|||
\(8.2\) |
Pago 1 longitud |
\(2\) |
|||
\(8.3\) |
Cantidad de token en pago 1 |
amount |
\(8\) |
||
\(8.4\) |
Bandera de pago 1 token |
\(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 |
\(2\) |
|||
\(8.[4 × N – 1]\) |
Cantidad de token en pago N |
amount |
\(8\) |
||
\(8.[4 × N]\) |
Bandera de token de pago N |
\(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\) |
fee |
\(8\) |
|||
\(10.1\) |
Indicador de token de tarifa |
\(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 |
\(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;
};
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 |
Versión 2
# |
Campo |
Nombre de campo JSON |
Tipo de campo |
Tamaño del campo en bytes |
Comentario |
---|---|---|---|---|---|
\(1\) |
Indicador de versión |
\(0\) |
Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\). |
||
\(2\) |
type |
\(0\) |
El valor debe ser \(3\). |
||
\(3\) |
Versión de transacción |
version |
\(0\) |
El valor debe ser \(2\). |
|
\(4\) |
chainId |
\(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 |
\(2\) |
|||
\(6.2\) |
Nombre del Activo |
name |
Array[Byte] |
De \(4\) a \(16\) |
|
\(7.1\) |
Longitud de la descripción del token |
\(2\) |
|||
\(7.2\) |
Descripción del activo |
description |
Array[Byte] |
De \(0\) a \(1000\) |
|
\(8\) |
Importe del token que se emitirá |
quantity |
\(8\) |
||
\(9\) |
Número de decimales del token |
decimals |
\(0\) |
||
\(10\) |
Bandera de reemisión |
reissuable |
\(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\) |
fee |
\(8\) |
|||
\(12\) |
Marca de tiempo de la transacción |
timestamp |
\(8\) |
||
\(13.1\) |
Bandera de existencia de secuencia de comandos |
\(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 |
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 |
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
# |
Campo |
Tipo de campo |
Tamaño del campo en bytes |
Comentario |
---|---|---|---|---|
\(1\) |
\(1\) |
El valor debe ser \(3\). |
||
\(2\) |
Firma de transacción |
Array[Byte] |
\(64\) |
|
\(3\) |
ID del tipo de transacción |
\(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 |
\(2\) |
||
\(5.2\) |
Nombre del Activo |
Array[Byte] |
De \(4\) a \(16\) |
|
\(6.1\) |
Longitud de la descripción del token |
\(2\) |
||
\(6.2\) |
Descripción del activo |
Array[Byte] |
De \(0\) a \(1000\) |
|
\(7\) |
Importe del token que se emitirá |
\(8\) |
||
\(8\) |
Número de decimales del token |
\(1\) |
||
\(9\) |
Bandera de reemisión |
\(1\) |
||
\(10\) |
\(8\) |
|||
\(11\) |
Marca de tiempo de la transacción |
\(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;
};
Campo |
Tamaño |
Descripción |
---|---|---|
lease_id |
\(32\) bytes |
Identificación de Arrendamiento. |
Versión 2
# |
Campo |
Nombre de campo JSON |
Tipo de campo |
Tamaño del campo en bytes |
Comentario |
---|---|---|---|---|---|
\(1\) |
Indicador de versión |
\(1\) |
Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\). |
||
\(2\) |
type |
\(1\) |
El valor debe ser \(9\). |
||
\(3\) |
Versión de transacción |
version |
\(1\) |
El valor debe ser \(2\). |
|
\(4\) |
chainId |
\(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\) |
fee |
\(8\) |
|||
\(7\) |
Marca de tiempo de la transacción |
timestamp |
\(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
Número de orden de campo |
Campo |
Tipo de campo |
Tamaño del campo en bytes |
Comentario |
---|---|---|---|---|
\(1\) |
\(1\) |
El valor debe ser \(9\). |
||
\(2\) |
Clave pública del remitente de la transacción |
Array[Byte] |
\(32\) |
|
\(3\) |
\(8\) |
|||
\(4\) |
Marca de tiempo de la transacción |
\(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;
};
};
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
# |
Campo |
Nombre de campo JSON |
Tipo de campo |
Tamaño del campo en bytes |
Comentario |
---|---|---|---|---|---|
\(1\) |
Indicador de versión |
\(1\) |
Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\). |
||
\(2\) |
type |
\(1\) |
El valor debe ser \(8\). |
||
\(3\) |
Versión de transacción |
version |
\(1\) |
El valor debe ser \(2\). |
|
\(4\) |
Campo reservado |
\(1\) |
El valor debe ser igual a \(0\). |
||
\(5\) |
Clave pública del remitente de la transacción |
senderPublicKey |
Array[Byte] |
\(32\) |
|
\(6\) |
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 |
\(8\) |
||
\(8\) |
fee |
\(8\) |
|||
\(9\) |
Marca de tiempo de la transacción |
timestamp |
\(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
# |
Campo |
Tipo de campo |
Tamaño del campo en bytes |
Comentario |
---|---|---|---|---|
\(1\) |
\(1\) |
El valor debe ser \(8\). |
||
\(2\) |
Clave pública del remitente de la transacción |
Array[Byte] |
\(32\) |
|
\(3\) |
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 |
\(8\) |
||
\(5\) |
\(8\) |
|||
\(6\) |
Marca de tiempo de la transacción |
\(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;
};
}
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
# |
Campo |
Nombre de campo JSON |
Tipo de campo |
Tamaño del campo en bytes |
Comentario |
---|---|---|---|---|---|
\(1\) |
type |
\(1\) |
El valor debe ser \(11\). |
||
\(2\) |
Versión de transacción |
version |
\(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 |
\(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 |
\(2\) |
||
\(5.2\) |
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 |
\(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 |
\(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 |
\(8\) |
||
\(6\) |
Marca de tiempo de la transacción |
timestamp |
\(8\) |
||
\(7\) |
fee |
\(8\) |
|||
\(8.1\) |
Longitud del archivo adjunto |
\(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;
};
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
# |
Campo |
Nombre de campo JSON |
Tipo de campo |
Tamaño del campo en bytes |
Comentario |
---|---|---|---|---|---|
\(1\) |
Indicador de versión |
\(1\) |
Indica que la versión de la transacción es 2 o superior. El valor debe ser \(0\). |
||
\(2\) |
type |
\(1\) |
El valor debe ser \(5\). |
||
\(3\) |
Versión de transacción |
version |
\(1\) |
El valor debe ser \(2\). |
|
\(4\) |
chainId |
\(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 |
\(8\) |
||
\(8\) |
Bandera de reemisión |
reissuable |
\(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\) |
fee |
\(8\) |
|||
\(10\) |
Marca de tiempo de la transacción |
timestamp |
\(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
# Número de orden de campo
Campo
Tipo de campo
Tamaño del campo en bytes
Comentario
\(1\)
\(1\)
El valor debe ser \(5\).
\(2\)
Firma de transacción
Array[Byte]
\(64\)
\(3\)
ID del tipo de transacción
\(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
\(8\)
\(7\)
Bandera de reemisión
\(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\)
\(8\)
\(9\)
Marca de tiempo de la transacción
\(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;
};
Campo |
Tamaño |
Descripción |
---|---|---|
asset_id |
\(32\) bytes |
ID del activo. |
script |
Hasta \(8192\) bytes |
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
# #
Campo
Nombre de campo JSON
Tipo de campo
Tamaño del campo en bytes
Comentario
\(1\)
Indicador de versión
\(1\)
Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\).
\(2\)
type
\(1\)
El valor debe ser \(15\).
\(3\)
Versión de transacción
version
\(1\)
El valor debe ser \(1\).
\(4\)
chainId
\(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\)
fee
\(8\)
\(8\)
Marca de tiempo de la transacción
timestamp
\(8\)
\(9.1\)
Bandera de existencia de secuencia de comandos
\(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
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
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;
};
Campo |
Tamaño |
Descripción |
---|---|---|
script |
Hasta \(32,768\) bytes |
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
# |
Campo |
Nombre de campo JSON |
Tipo de campo |
Tamaño del campo en bytes |
Comentario |
---|---|---|---|---|---|
\(1\) |
Indicador de versión |
\(1\) |
Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\). |
||
\(2\) |
type |
\(1\) |
El valor debe ser \(13\). |
||
\(3\) |
Versión de transacción |
version |
\(1\) |
El valor debe ser \(1\). |
|
\(4\) |
chainId |
\(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 |
\(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 |
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 |
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\) |
fee |
\(8\) |
|||
\(8\) |
Marca de tiempo de la transacción |
timestamp |
\(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 Patrocinar Tarifas#
Obtenga más información sobre la transacción para patrocinar tarifas.
Versión 2
message SponsorFeeTransactionData {
Amount min_fee = 1;
};
message Amount {
bytes asset_id = 1;
int64 amount = 2;
};
Campo |
Tamaño |
Descripción |
---|---|---|
min_fee.asset_id |
\(32\) bytes |
ID del activo. |
min_fee.amount |
\(8\) bytes |
Cantidad de activo que es equivalente a \(0.001\) DecentralCoins (\(100 000\) Decentralitos), especificado en la fracción mínima («centavos») de activo. Consulte el artículo tarifa patrocinada. |
Representación JSON de Transacción
{
"type":14,
"id":"7EL2XEGP1By427BeLcHPYeVnBzGsXen4egMAwQpWGBVR",
"sender":"3PHrS6VNPRtUD8MHkfkmELavL8JnGtSq5sx",
"senderPublicKey":"5v5D5pqzKGBejtvtEeyDJXG28iQwMViu1uuetEcyQp9v",
"fee":100000000,
"feeAssetId":null,
"timestamp":1534448057070,
"proofs": [
"3Q4JS4ujrGxAqp8LMXR9zZJC4tJ7YHiTo4SvMgrPhufo2UtR5x9JAaCGDjEr7qWXFDPJk7vWL8eapQkS45Dx1kcb"
],
"version":1,
"assetId":"FN76goSi7hQn6gQ8aezKVwyDvhkWx5ekXbP3sNLWqavN",
"minSponsoredAssetFee":10,
"height":1130205
}
Versión 1
# |
Campo |
Nombre de campo JSON |
Tipo de campo |
Tamaño del campo en bytes |
Comentario |
---|---|---|---|---|---|
\(1\) |
Indicador de versión |
\(1\) |
Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\). |
||
\(2\) |
type |
\(1\) |
El valor debe ser \(14\). |
||
\(3\) |
Versión de transacción |
version |
\(1\) |
El valor debe ser \(1\). |
|
\(4\) |
ID del tipo de transacción |
type |
\(1\) |
Este campo duplica el campo \(2\). |
|
\(5\) |
Versión de transacción |
version |
\(1\) |
Este campo duplica el campo \(3\). |
|
\(6\) |
Clave pública del remitente de la transacción |
senderPublicKey |
Array[Byte] |
\(32\) |
|
\(7\) |
Identificador del token |
assetId |
Array[Byte] |
\(32\) |
|
\(8\) |
Tarifa mínima de activos patrocinados |
minSponsoredAssetFee |
\(8\) |
Cantidad de activo patrocinado que equivale a \(0.001\) DecentralCoins (\(100,000\) Decentralitos). |
|
\(9\) |
fee |
\(8\) |
|||
\(10\) |
Marca de tiempo de la transacción |
timestamp |
\(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 \(4\), \(5\), \(6\), \(7\), \(8\), \(9\) y \(10\) son los bytes del cuerpo de la transacción.
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;
};
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
# |
Campo |
Nombre de campo JSON |
Tipo de campo |
Tamaño del campo en bytes |
Comentario |
---|---|---|---|---|---|
\(1\) |
Indicador de versión |
\(1\) |
Indica que la versión de la transacción es \(2\) o superior. El valor debe ser \(0\). |
||
\(2\) |
type |
\(1\) |
El valor debe ser \(4\). |
||
\(3\) |
Versión de transacción |
version |
\(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 |
\(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 |
\(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 |
\(8\) |
||
\(8\) |
Cantidad de token en la transferencia |
amount |
\(8\) |
||
\(9\) |
fee |
\(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 |
\(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
# |
Campo |
Tipo de campo |
Tamaño del campo en bytes |
Comentario |
---|---|---|---|---|
\(1\) |
\(1\) |
El valor debe ser \(4\). |
||
\(2\) |
Firma de transacción |
Array[Byte] |
\(64\) |
|
\(3\) |
ID del tipo de transacción |
\(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 |
\(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 |
\(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 |
\(8\) |
||
\(8\) |
Cantidad de token en la transferencia |
amount |
\(8\) |
|
\(9\) |
fee |
\(8\) |
||
\(10\) |
Dirección o alias |
recipient |
Consulte formato binario de dirección, formato binario del alias |
S |
\(11.1\) |
Longitud del archivo adjunto |
\(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;
}
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#
# |
Campo |
Tipo |
Tamaño en bytes |
Comentario |
---|---|---|---|---|
\(1\) |
Versión de Pruebas |
\(1\) |
El valor es 1. |
|
\(2\) |
Contador de pruebas |
\(2\) |
||
\(3\) |
Prueba 1 longitud |
\(2\) |
El valor es 64. |
|
\(4\) |
Pruebas 1 |
Array[Byte] |
\(64\) |
|
\(5\) |
Prueba 2 longitud |
\(2\) |
||
\(6\) |
Prueba 2 |
Array[Byte] |
\(64\) |
|
… |
… |
… |
… |
… |
El número máximo de demostraciones es \(8\).