Saltearse al contenido

Oracle

[Source]

(Añadido por la enmienda PriceOracle.)

Un objeto Oracle del ledger representa un Price Oracle creado por una cuenta en el ledger de Xahau. Almacena uno o más puntos de datos de precio de activos y se identifica mediante la cuenta propietaria junto con un ID de documento. Los objetos Oracle se crean y actualizan mediante transacciones OracleSet y se eliminan mediante transacciones OracleDelete.

{
"LedgerEntryType": "Oracle",
"Owner": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"OracleDocumentID": 1,
"Provider": "70726F7669646572",
"AssetClass": "63757272656E6379",
"LastUpdateTime": 816348759,
"PriceDataSeries": [
{
"PriceData": {
"BaseAsset": "XAH",
"QuoteAsset": "USD",
"AssetPrice": 74560,
"Scale": 4
}
},
{
"PriceData": {
"BaseAsset": "BTC",
"QuoteAsset": "USD",
"AssetPrice": 6800000,
"Scale": 2
}
}
],
"URI": "697066733A2F2F",
"OwnerNode": "0000000000000000",
"PreviousTxnID": "5463C6E08862A1FAE5EDAC12D70ADB16546A1F674930521295BC082494B62924",
"PreviousTxnLgrSeq": 6,
"index": "49647F0D748DC3FE26BDACBC57F251AADEFFF391403EC9BF87C97F67E9977FB0"
}

Un objeto Oracle tiene los siguientes campos:

CampoTipo JSONInternal Type¿Requerido?Descripción
OwnerStringAccountIDLa cuenta que creó y posee este Oracle. Solo esta cuenta puede actualizarlo o eliminarlo.
OracleDocumentIDNumberUInt32El identificador único de este Oracle dentro de la cuenta propietaria.
ProviderStringBlobIdentificador del proveedor de datos codificado en hexadecimal (p. ej. el nombre del servicio oracle). Máximo 256 bytes.
AssetClassStringBlobCadena codificada en hexadecimal que describe la categoría de activos (p. ej. 63757272656E6379 = “currency”). Máximo 16 bytes.
LastUpdateTimeNumberUInt32Marca de tiempo epoch de Ripple (segundos desde el 1 de enero de 2000) de la última actualización de precio.
PriceDataSeriesArrayArrayArray de objetos PriceData (1–10 entradas). Las entradas se almacenan en orden canónico por par BaseAsset/QuoteAsset.
URIStringBlobNoURI codificado en hexadecimal que apunta a datos complementarios fuera de la cadena (p. ej. un CID de IPFS). Máximo 256 bytes.
OwnerNodeStringUInt64Indicación de qué página del directorio del propietario enlaza con este objeto.
PreviousTxnIDStringHash256El hash identificador de la transacción que modificó este objeto más recientemente.
PreviousTxnLgrSeqNumberUInt32El índice del ledger que contiene la transacción que modificó este objeto más recientemente.
LedgerEntryTypeStringUInt16El valor 0x0080, mapeado a la cadena Oracle, indica que este es un objeto Oracle.

Cada entrada en PriceDataSeries contiene un objeto PriceData:

CampoTipo JSONInternal Type¿Requerido?Descripción
BaseAssetStringCurrencyEl activo cuyo precio se publica (p. ej. "XAH", "BTC").
QuoteAssetStringCurrencyLa moneda de denominación (p. ej. "USD", "EUR").
AssetPriceNumberUInt64NoEl precio como número entero escalado. El precio efectivo es AssetPrice × 10^(-Scale).
ScaleNumberUInt8NoExponente decimal (0–10) usado para derivar el precio efectivo. Ejemplo: AssetPrice = 74560, Scale = 4 → precio efectivo = 7,456.

Un objeto Oracle consume reservas del propietario según el número de pares PriceData almacenados:

ParesReservas del propietario consumidas
1–51
6–102

El ID de un objeto Oracle es el SHA-512Half de los siguientes valores, concatenados en orden:

  • La clave de espacio Oracle (0x0152)
  • El AccountID del Owner
  • El OracleDocumentID como entero sin signo de 32 bits