DirectoryNode
DirectoryNode
オブジェクトタイプは、レジャーの状態ツリー内の他オブジェクトへのリンクのリストを提供します。概念上の1つの ディレクトリ は、1つ以上の各DirectoryNodeオブジェクトが含まれる二重リンクリストの形式になっています。各DirectoryNodeオブジェクトには、他オブジェクトのIDが最大32個まで含まれています。1番目のオブジェクトはディレクトリのルートと呼ばれ、ルートオブジェクト以外のオブジェクトはすべて必要に応じて自由に追加または削除できます。
ディレクトリには3種類があります。
- 所有者ディレクトリ は、
RippleState
(トラストライン)エントリやOffer
エントリなどアカウントが所有するその他のエントリの一覧です。 - オファーディレクトリ は、分散型取引所(DEX)で利用可能なオファーの一覧です。1つのオファーディレクトリには、同一トークン(通貨コードと発行者)に同一の取引レートが設定されているすべてのオファーが含まれます。
- NFTオファーディレクトリ は、NFTの買いオファーと売りオファーの一覧です。各NFTには、買いオファー用と売りオファー用の2つのディレクトリがあります。
DirectoryNodeのJSONの例
{ "ExchangeRate": "4e133c40576f7c00", "Flags": 0, "Indexes": [ "353E55E7A0B0E82D16DF6E748D48BDAFE4C56045DF5A8B0ED723FF3C38A4787A" ], "LedgerEntryType": "DirectoryNode", "PreviousTxnID": "0F79E60C8642A23658ECB29D939499EA0F28D804077B7EE16613BE0C813A2DD6", "PreviousTxnLgrSeq": 91448326, "RootIndex": "79C54A4EBD69AB2EADCE313042F36092BE432423CC6A4F784E133C40576F7C00", "TakerGetsCurrency": "0000000000000000000000000000000000000000", "TakerGetsIssuer": "0000000000000000000000000000000000000000", "TakerPaysCurrency": "0000000000000000000000005553440000000000", "TakerPaysIssuer": "2ADB0B3959D60A6E6991F729E1918B7163925230", "index": "79C54A4EBD69AB2EADCE313042F36092BE432423CC6A4F784E133C40576F7C00" }
DirectoryNodeのフィールド
名前 | JSONの型 | 内部の型 | 必須? | 説明 |
---|---|---|---|---|
ExchangeRate | 数値 | UInt64 | いいえ | (オファーディレクトリのみ)廃止予定。使用しないでください。 |
Flags | 数値 | UInt32 | はい | このディレクトリに対して有効になっているブール値フラグのビットマップ。現在、プロトコルではDirectoryNodeオブジェクトのフラグは定義されていません。 |
Indexes | 配列 | Vector256 | はい | このディレクトリの内容: 他のオブジェクトのIDの配列。 |
IndexNext | 数値 | UInt64 | いいえ | (省略可)このディレクトリに複数のページが含まれている場合、このIDはチェーン内の次のオブジェクトにリンクし、末尾でラップアラウンドします。 |
IndexPrevious | 数値 | UInt64 | いいえ | (省略可)このディレクトリに複数のページが含まれている場合、このIDはチェーン内の前のオブジェクトにリンクし、先頭でラップアラウンドします。 |
LedgerEntryType | 文字列 | UInt16 | はい | 値が0x0064 (文字列DirectoryNode にマッピング)の場合は、このオブジェクトがディレクトリの一部であることを示します。 |
NFTokenID | 文字列 | Hash256 | いいえ | (NFTオファーディレクトリのみ) 購入または売却オファーに紐づくNFTのID。. |
Owner | 文字列 | AccountID | いいえ | (所有者ディレクトリのみ)このディレクトリ内のオブジェクトを所有するアカウントのアドレス。 |
PreviousTxnID | 文字列 | Hash256 | いいえ | このエントリを最後に変更したトランザクションの識別ハッシュ。(fixPreviousTxnID amendmentにより追加されました。) |
PreviousTxnLgrSeq | 数値 | UInt32 | いいえ | このエントリを最後に変更したトランザクションが含まれるレジャーインデックス。(fixPreviousTxnID amendmentにより追加されました。) |
RootIndex | 文字列 | Hash256 | はい | このディレクトリのルートオブジェクトのID。 |
TakerGetsCurrency | 文字列 | Hash160 | いいえ | (オファーディレクトリのみ)このディレクトリのオファーのTakerGetsの額の通貨コード。 |
TakerGetsIssuer | 文字列 | Hash160 | いいえ | (オファーディレクトリのみ)このディレクトリのオファーのTakerGetsの額のイシュアー。 |
TakerPaysCurrency | 文字列 | Hash160 | いいえ | (オファーディレクトリのみ)このディレクトリのオファーのTakerPaysの額の通貨コード。 |
TakerPaysIssuer | 文字列 | Hash160 | いいえ | (オファーディレクトリのみ)このディレクトリのオファーのTakerPaysの額のイシュアー。 |
DirectoryNodeのフラグ
DirectoryNode
エントリは以下のフラグを持つことができます。
フラグ名 | 16進数値 | 10進数値 | 説明 |
---|---|---|---|
lsfNFTokenBuyOffers | 0x00000001 | 1 | このディレクトリにはNFTの購入オファーが含まれます。 |
lsfNFTokenSellOffers | 0x00000002 | 2 | このディレクトリにはNFTの売却オファーが含まれます。 |
オファーディレクトリと所有者ディレクトリはフラグを使用しません。それらのFlags
の値は常に0です。
DirectoryNodeの準備金
DirectoryNode
エントリは準備金が不要です。
ディレクトリ IDのフォーマット
DirectoryNodeのIDを作成するときには、DirectoryNodeが以下のどのページを表しているかに応じて3種類の方式があります。
- 所有者ディレクトリまたはNFTオファーディレクトリの1番目のページ(ルートとも呼ばれます)
- オファーディレクトリの1番目のページ
- いずれかのディレクトリの以降のページ
所有者ディレクトリまたはNFTオファーディレクトリの1番目のページのIDは、以下の値がこの順序で連結されているSHA-512ハーフです。
- 所有者ディレクトリのスペースキー(
0x004F
) Owner
フィールドのAccountID。
オファーディレクトリの1番目のページには特殊なIDがあります。このIDの上位192ビットはオーダーブックを定義し、それ以降の64ビットはこのディレクトリ内のオファーの為替レートを定義します。(IDはビッグエンディアンであるため、最初に位置する上位ビットにブックが含まれ、後に位置する下位ビットにクオリティが含まれます。)これにより、最適なオファーから最低のオファーへの順にオーダーブックを反復できます。具体的には、先頭192ビットとは、以下の値がこの順序で連結されているSHA-512ハーフの先頭192ビットです。
- ブックディレクトリのスペースキー(
0x0042
) TakerPaysCurrency
の160ビットの通貨コードTakerGetsCurrency
の160ビットの通貨コードTakerPaysIssuer
のAccountIDTakerGetsIssuer
のAccountID
オファーディレクトリのIDの下位64ビットは、そのディレクトリ内のオファーのTakerPaysの額をTakerGetsの額で割った結果を、XRP Ledgerの内部金額フォーマットの64ビット数値で表したものです。
DirectoryNodeがディレクトリの1番目のページではない場合、DirectoryNodeのIDは、以下の値をこの順序で連結したSHA-512ハーフです。
- DirectoryNodeスペースキー(
0x0064
) - ルートDirectoryNodeのID
- このオブジェクトのページ番号(ルートDirectoryNodeは0であるため、この値は1以上の整数値です。)