Saltearse al contenido

Tipos de Datos

Los diferentes tipos de objetos se identifican de maneras únicas:

Las cuentas se identifican por su Dirección, por ejemplo "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59". Las direcciones siempre comienzan con “r”. Muchos métodos de rippled también aceptan una representación hexadecimal.

Las transacciones se identifican por un Hash del formato binario de la transacción. También puedes identificar una transacción por su cuenta emisora y Número de Secuencia.

Cada Ledger cerrado tiene un Índice de Ledger y un valor Hash. Al [Especificar Ledgers][] puedes usar cualquiera de los dos.

Direcciones

[Source]

En muchos casos, Xahau prefija los datos binarios de un objeto con un código de 4 bytes antes de calcular su hash, para que objetos de distintos tipos tengan hashes diferentes incluso si sus formatos binarios son iguales. Los códigos de 4 bytes existentes están estructurados como tres caracteres alfabéticos, codificados como ASCII, seguidos de un byte cero.

Algunos tipos de hash aparecen en solicitudes y respuestas de API. Otros solo se calculan como el primer paso para firmar cierto tipo de datos o calcular un hash de nivel superior. La siguiente tabla muestra todos los prefijos de hash de 4 bytes que usa Xahau:

Tipo de ObjetoCampos de APIPrefijo Hash (Hex)Prefijo Hash (Texto)
Propuesta de consensoN/A0x50525000PRP\0
Versión de Ledgerledger_hash0x4C575200LWR\0
Datos de estado del ledgeraccount_state en encabezado del ledger0x4D4C4E00MLN\0
Nodo interno de datos del ledgerN/A0x4D494E00MIN\0
Nodo interno de datos del ledger (SHAMapv2)N/A0x494E5200INR\0
Reclamo de Canal de PagoN/A0x434C4D00CLM\0
Transacción firmadahash de transacciones0x54584E00TXN\0
Transacción con metadatosN/A0x534E4400SND\0
Transacción sin firmar (Firma simple)N/A0x53545800STX\0
Transacción sin firmar (Multi-firma)N/A0x534D5400SMT\0
Voto de validaciónN/A0x56414C00VAL\0
Manifiesto del validadorN/A0x4D414E00MAN\0

Los IDs de objetos del ledger se calculan de manera similar, pero usan un prefijo de 2 bytes llamado “clave de espacio” en lugar del prefijo en la forma descrita aquí.

Índice de Ledger

Muchos métodos de API requieren que especifiques una instancia del ledger, con los datos recuperados considerados actualizados a partir de esa versión particular del ledger compartido. Los comandos que aceptan una versión de ledger funcionan de la misma manera. Hay tres formas de especificar qué ledger quieres usar:

  1. Especifica un ledger por su Índice de Ledger en el parámetro ledger_index. Cada ledger cerrado tiene un índice de ledger que es 1 mayor que el ledger anterior.

    "ledger_index": 61546724
  2. Especifica un ledger por su valor Hash en el parámetro ledger_hash.

    "ledger_hash": "8BB204CE37CFA7A021A16B5F6143400831C4D1779E6FE538D9AC561ABBF4A929"
  3. Especifica un ledger por uno de los siguientes atajos, en el parámetro ledger_index:

    • validated para el ledger más reciente que ha sido validado por consenso

      "ledger_index": "validated"
    • closed para el ledger más reciente que ha sido cerrado para modificaciones y propuesto para validación

    • current para la versión de trabajo actual del ledger del servidor.

También hay un parámetro ledger obsoleto que acepta cualquiera de los tres formatos anteriores. No uses este parámetro; puede eliminarse sin previo aviso.

Si no especificas un ledger, el servidor decide qué ledger usar para atender la solicitud. Por defecto, el servidor elige el ledger current (en progreso). En Modo de Reporte, el servidor usa el ledger validado más reciente. No proporciones más de un campo que especifique ledgers.

Nota: No confíes en el comportamiento predeterminado para especificar un ledger; está sujeto a cambios. Siempre especifica una versión de ledger en la solicitud si puedes.

El Modo de Reporte no registra datos del ledger hasta que han sido validados. Si haces una solicitud a un servidor en Modo de Reporte para el ledger current o closed, el servidor reenvía la solicitud a un servidor en Modo P2P. Si solicitas un índice o hash de ledger que no está validado, un servidor en Modo de Reporte responde con un error lgrNotFound.

Hay dos tipos de monedas en Xahau: XAH y tokens. Ambos tipos tienen alta precisión, aunque sus formatos son diferentes.

Algunos campos, como el Amount de destino de una [transacción Payment][], pueden ser de cualquier tipo. Algunos campos solo aceptan XAH específicamente, como el campo Fee (costo de transacción).

XAH se especifica como una cadena que contiene un número entero de “drops” de XAH, donde 1 millón de drops equivale a 1 XAH. Los tokens se especifican como un objeto con campos para el monto decimal, el código de moneda y el emisor. Por ejemplo:

  • XAH - Para especificar un campo Amount con un valor de 13.1 XAH:

    "Amount": "13100000"
  • Token - Para especificar un campo Amount con un valor de 13.1 FOO emitido por o hacia rf1B...:

    "Amount": {
    "value": "13.1",
    "currency": "FOO",
    "issuer": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn"
    }

Para más información, consulta Formatos de Moneda.

El servidor xahaud y sus APIs representan el tiempo como un entero sin signo. Este número mide el número de segundos desde la “Época de Ripple” del 1 de enero de 2000 (00:00 UTC). Esto es similar a como funciona la época Unix, excepto que la Época de Ripple es 946684800 segundos después de la Época Unix.

No conviertas tiempos de Época de Ripple a tiempos de Época UNIX en variables de 32 bits: esto podría provocar desbordamientos de enteros.