Saltearse al contenido

Directory Node

[Source]

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) u Offer.
  • 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).

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"
}
NombreTipo JSON[Tipo Interno][]¿Requerido?Descripción
OwnerStringAccountIDNo(Solo directorios de propietario) La dirección de la cuenta que posee los objetos en este directorio.
TakerGetsCurrencyStringHash160No(Solo directorios de oferta) El código de moneda del monto TakerGets de las ofertas en este directorio.
TakerGetsIssuerStringHash160No(Solo directorios de oferta) El emisor del monto TakerGets de las ofertas en este directorio.
TakerPaysCurrencyStringHash160No(Solo directorios de oferta) El código de moneda del monto TakerPays de las ofertas en este directorio.
TakerPaysIssuerStringHash160No(Solo directorios de oferta) El emisor del monto TakerPays de las ofertas en este directorio.
ExchangeRateStringUInt64No(Solo directorios de oferta) OBSOLETO. No usar.
ReferenceCountStringUInt64NoEl 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.
IndexesArrayVector256El contenido de este Directorio: un arreglo de IDs de otros objetos.
IndexNextNumberUInt64NoSi este Directorio consiste en múltiples páginas, este ID enlaza al siguiente objeto en la cadena, volviendo al principio al final.
IndexPreviousNumberUInt64NoSi este Directorio consiste en múltiples páginas, este ID enlaza al objeto anterior en la cadena, volviendo al final al principio.
NFTokenIDStringHash256NoSin uso

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.)