Directory Node
El tipo de objeto DirectoryNode proporciona una lista de enlaces a otros objetos en el árbol de estado del ledger. Un solo Directorio conceptual toma la forma de una lista doblemente enlazada, con uno o más objetos DirectoryNode conteniendo cada uno hasta 32 IDs de otros objetos. El primer objeto se llama la raíz del directorio, y todos los demás objetos pueden agregarse o eliminarse según sea necesario.
Hay dos tipos de Directorios:
- Los directorios de propietario listan otros objetos que posee una cuenta, como objetos
RippleState(línea de confianza) uOffer. - Los directorios de oferta listan las ofertas disponibles en el intercambio descentralizado. Un solo directorio de oferta contiene todas las ofertas que tienen la misma tasa de cambio para el mismo token (código de moneda y emisor).
Ejemplo JSON
Sección titulada «Ejemplo JSON»Directorio de Oferta
{ "ExchangeRate": "4F069BA8FF484000", "Flags": 0, "Indexes": [ "AD7EAE148287EF12D213A251015F86E6D4BD34B3C4A0A1ED9A17198373F908AD" ], "LedgerEntryType": "DirectoryNode", "RootIndex": "1BBEF97EDE88D40CEE2ADE6FEF121166AFE80D99EBADB01A4F069BA8FF484000", "TakerGetsCurrency": "0000000000000000000000000000000000000000", "TakerGetsIssuer": "0000000000000000000000000000000000000000", "TakerPaysCurrency": "0000000000000000000000004A50590000000000", "TakerPaysIssuer": "5BBC0F22F61D9224A110650CFE21CC0C4BE13098", "index": "1BBEF97EDE88D40CEE2ADE6FEF121166AFE80D99EBADB01A4F069BA8FF484000"}Directorio de Propietario
{ "Flags": 0, "Indexes": [ "AD7EAE148287EF12D213A251015F86E6D4BD34B3C4A0A1ED9A17198373F908AD", "E83BBB58949A8303DF07172B16FB8EFBA66B9191F3836EC27A4568ED5997BAC5" ], "ReferenceCount": "1", "LedgerEntryType": "DirectoryNode", "Owner": "rpR95n1iFkTqpoy1e878f4Z1pVHVtWKMNQ", "RootIndex": "193C591BF62482468422313F9D3274B5927CA80B4DD3707E42015DD609E39C94", "index": "193C591BF62482468422313F9D3274B5927CA80B4DD3707E42015DD609E39C94"}| Nombre | Tipo JSON | [Tipo Interno][] | ¿Requerido? | Descripción |
|---|---|---|---|---|
Owner | String | AccountID | No | (Solo directorios de propietario) La dirección de la cuenta que posee los objetos en este directorio. |
TakerGetsCurrency | String | Hash160 | No | (Solo directorios de oferta) El código de moneda del monto TakerGets de las ofertas en este directorio. |
TakerGetsIssuer | String | Hash160 | No | (Solo directorios de oferta) El emisor del monto TakerGets de las ofertas en este directorio. |
TakerPaysCurrency | String | Hash160 | No | (Solo directorios de oferta) El código de moneda del monto TakerPays de las ofertas en este directorio. |
TakerPaysIssuer | String | Hash160 | No | (Solo directorios de oferta) El emisor del monto TakerPays de las ofertas en este directorio. |
ExchangeRate | String | UInt64 | No | (Solo directorios de oferta) OBSOLETO. No usar. |
ReferenceCount | String | UInt64 | No | El recuento de referencias en el ledger reduce la carga de almacenamiento y las tarifas al permitir que múltiples instalaciones del mismo Hook apunten al mismo objeto en el ledger. |
Indexes | Array | Vector256 | Sí | El contenido de este Directorio: un arreglo de IDs de otros objetos. |
IndexNext | Number | UInt64 | No | Si este Directorio consiste en múltiples páginas, este ID enlaza al siguiente objeto en la cadena, volviendo al principio al final. |
IndexPrevious | Number | UInt64 | No | Si este Directorio consiste en múltiples páginas, este ID enlaza al objeto anterior en la cadena, volviendo al final al principio. |
NFTokenID | String | Hash256 | No | Sin uso |
Formatos de ID de Directorio
Sección titulada «Formatos de ID de Directorio»Hay tres fórmulas diferentes para crear el ID de un DirectoryNode, dependiendo de cuál de las siguientes represente el DirectoryNode:
- La primera página (también llamada raíz) de un Directorio de Propietario
- La primera página de un Directorio de Oferta
- Páginas posteriores de cualquier tipo
La primera página de un Directorio de Propietario tiene un ID que es el SHA-512Half de los siguientes valores, concatenados en orden:
- La clave de espacio del Directorio de Propietario (
0x004F) - El AccountID del campo
Owner.
La primera página de un Directorio de Oferta tiene un ID especial: los 192 bits superiores definen el libro de órdenes, y los 64 bits restantes definen la tasa de cambio de las ofertas en ese directorio. (El ID es big-endian, por lo que el libro está en los bits más significativos, que van primero, y la calidad está en los bits menos significativos que van al final.)
Específicamente: los primeros 192 bits son los primeros 192 bits del SHA-512Half de los siguientes valores, concatenados en orden:
- La clave de espacio del Directorio de Libros (
0x0042) - El código de moneda de 160 bits de
TakerPaysCurrency - El código de moneda de 160 bits de
TakerGetsCurrency - El AccountID de
TakerPaysIssuer - El AccountID de
TakerGetsIssuer
Los 64 bits inferiores del ID de un Directorio de Oferta representan el monto TakerPays dividido por el monto TakerGets de las ofertas en ese directorio como un número de 64 bits en el formato de cantidad interna de Xahau.
Si el DirectoryNode no es la primera página del Directorio (independientemente de si es un Directorio de Propietario o de Oferta), entonces tiene un ID que es el SHA-512Half de los siguientes valores, concatenados en orden:
- La clave de espacio DirectoryNode (
0x0064) - El ID del DirectoryNode raíz
- El número de página de este objeto. (Como 0 es el DirectoryNode raíz, este valor es un entero 1 o mayor.)