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
Prefijos de Hash
Sección titulada «Prefijos de Hash»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 Objeto | Campos de API | Prefijo Hash (Hex) | Prefijo Hash (Texto) |
|---|---|---|---|
| Propuesta de consenso | N/A | 0x50525000 | PRP\0 |
| Versión de Ledger | ledger_hash | 0x4C575200 | LWR\0 |
| Datos de estado del ledger | account_state en encabezado del ledger | 0x4D4C4E00 | MLN\0 |
| Nodo interno de datos del ledger | N/A | 0x4D494E00 | MIN\0 |
| Nodo interno de datos del ledger (SHAMapv2) | N/A | 0x494E5200 | INR\0 |
| Reclamo de Canal de Pago | N/A | 0x434C4D00 | CLM\0 |
| Transacción firmada | hash de transacciones | 0x54584E00 | TXN\0 |
| Transacción con metadatos | N/A | 0x534E4400 | SND\0 |
| Transacción sin firmar (Firma simple) | N/A | 0x53545800 | STX\0 |
| Transacción sin firmar (Multi-firma) | N/A | 0x534D5400 | SMT\0 |
| Voto de validación | N/A | 0x56414C00 | VAL\0 |
| Manifiesto del validador | N/A | 0x4D414E00 | MAN\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í.
Secuencia de Cuenta
Sección titulada «Secuencia de Cuenta»Índice de Ledger
Especificando Ledgers
Sección titulada «Especificando Ledgers»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:
-
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 -
Especifica un ledger por su valor Hash en el parámetro
ledger_hash."ledger_hash": "8BB204CE37CFA7A021A16B5F6143400831C4D1779E6FE538D9AC561ABBF4A929" -
Especifica un ledger por uno de los siguientes atajos, en el parámetro
ledger_index:-
validatedpara el ledger más reciente que ha sido validado por consenso"ledger_index": "validated" -
closedpara el ledger más reciente que ha sido cerrado para modificaciones y propuesto para validación -
currentpara 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.
Especificando Montos de Moneda
Sección titulada «Especificando Montos de Moneda»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
Amountcon un valor de 13.1 XAH:"Amount": "13100000" -
Token - Para especificar un campo
Amountcon un valor de 13.1 FOO emitido por o haciarf1B...:"Amount": {"value": "13.1","currency": "FOO","issuer": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn"}
Para más información, consulta Formatos de Moneda.
Especificando Tiempo
Sección titulada «Especificando Tiempo»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.