OracleSet
Oracle Document ID を使用して、新しいOracle
レジャーエントリを作成するか、既存のフィールドを更新します。
OracleSetのJSONの例
{ "TransactionType": "OracleSet", "Account": "rNZ9m6AP9K7z3EVg6GhPMx36V4QmZKeWds", "OracleDocumentID": 34, "Provider": "70726F7669646572", "LastUpdateTime": 1724871860, "AssetClass": "63757272656E6379", "PriceDataSeries": [ { "PriceData": { "BaseAsset": "XRP", "QuoteAsset": "USD", "AssetPrice": 740, "Scale": 3 } } ] }
OracleSetのフィールド
フィールド | JSONの型 | 内部の型 | 必須? | 説明 |
---|---|---|---|---|
Account | 文字列 | AccountID | はい | このアカウントは、Oracle オブジェクトのOwner フィールドのアカウントと一致する必要があります。 |
OracleDocumentID | Number | UInt32 | はい | Account の価格オラクルのユニークな識別子。 |
Provider | 文字列 | Blob | 可変 | Oracleプロバイダを識別する任意の値、例えばChainlink、Band、またはDIAなど。このフィールドは文字列で、ASCII 16進コード化文字(0x20~0x7E)を最大256文字まで使用できます。このフィールドは、新しいOracle レジャーエントリを作成する際に必須ですが、更新の場合は任意です。 |
URI | 文字列 | Blob | いいえ | 任意で指定可能なユニバーサルリソース識別子で、チェーン外の価格データを参照します。このフィールドは256バイトに制限されています。 |
LastUpdateTime | Number | UInt32 | はい | データが最後に更新された時刻を、[リップルエポックからの秒数]で表します。 |
AssetClass | 文字列 | Blob | 可変 | 「通貨」、「商品」、「指数」などの資産の種類を指定します。このフィールドは、最大16文字のASCII 16進コード文字(0x20~0x7E)の文字列です。このフィールドは、新しいOracle レジャーエントリを新規作成する際に必須ですが、更新の場合は任意です。 |
PriceDataSeries | Array | Array | はい | トークンペアの価格情報を表す、最大10個のPriceData オブジェクトの配列。PriceData が5個を超える場合は、2つの所有者準備金が必要です。 |
PriceDataのフィールド
フィールド | JSONの型 | 内部の型 | 必須? | 説明 |
---|---|---|---|---|
BaseAsset | 文字列 | Currency | はい | 取引ペアにおける基軸資産。 株式シンボル、債券CUSIP、通貨コードなど、有効な識別子であれば何でも使用できます。 例えば、BTC/USDペアではBTCが基軸資産であり、912810RR9/BTCでは912810RR9が基軸資産です。 |
QuoteAsset | 文字列 | Currency | はい | 取引ペアにおける見積資産。見積資産は、ベース資産の1単位の価格を示します。例えば、BTC/USDペアでは、USDが見積資産です。912810RR9/BTCでは、BTCが見積資産です。 |
AssetPrice | 数値 | UInt64 | いいえ | Scale レベルを適用した後の資産価格。含まれていない場合、対応するPriceDataは削除されます。 |
Scale | 数値 | UInt8 | いいえ | 資産価格に適用するスケーリング値。例えば、Scale が6で元の価格が 0.155 の場合、スケーリング後の価格は155000となります。有効なスケール範囲は0~10です。デフォルト値は0です。 |
PriceData
は、以下のルールに従って作成または更新されます。
- トランザクション内の新しいトークンペアがオブジェクトに追加されます。
- トランザクション内のトークンペアが、オブジェクト内の対応するトークンペアを上書きします。
AssetPrice
フィールドが存在しないトランザクションのトークンペアは、オブジェクト内の対応するトークンペアを削除します。- オブジェクトのみに存在するトークンペアは、価格が古くなっていることを示すために、
AssetPrice
とScale
が削除されます。
注記
トランザクション内のトークンペアの順序は重要ではありません。なぜなら、各トークンペアはPriceDataSeries
内のPriceData
オブジェクトの場所を一意に識別するからです。
エラーケース
すべてのトランザクションで発生しうるエラーの他に、OracleSet
トランザクションでは以下のトランザクション結果コードが発生する可能性があります。
エラーコード | 説明 |
---|---|
temARRAY_EMPTY | PriceDataSeries にPriceData オブジェクトがありません。 |
tecARRAY_TOO_LARGE | PriceDataSeries が10個のPriceData オブジェクトの制限を超えています。 |
tecINVALID_UPDATE_TIME | Oracle オブジェクトに有効なLastUpdateTime 値がありません。 |
tecTOKEN_PAIR_NOT_FOUND | 削除しようとしているトークンペアがOracle オブジェクトに存在しません。 |
tecARRAY_EMPTY | PriceDataSeries にPriceData オブジェクトがありません。 |
temARRAY_TOO_LARGE | PriceDataSeries が10個のPriceData オブジェクトの制限を超えています。 |