LedgerHashes
(レジャーバージョンを一意に示す「ledger hash」文字列データ型と混同しないでください。このセクションでは、LedgerHashes
レジャーオブジェクトタイプについて説明します。)
LedgerHashes
オブジェクトタイプには、このレジャーバージョン以前のレジャーの履歴がハッシュの形式で含まれています。このレジャータイプのオブジェクトは、レジャーの閉鎖処理の過程で自動的に変更されます。(このときに限り、レジャーの「状態」ツリーはトランザクションまたは疑似トランザクションなしで変更されます。)LedgerHashes
オブジェクトの目的は、現行レジャーバージョンのみを指定して過去のレジャーのハッシュを検索できるようにすることです。過去のレジャーバージョンを最大で1回検索できます。
2種類のLedgerHashes
オブジェクトがあります。2種類のオブジェクトのフィールドは同一です。各レジャーバージョンの内容は以下のとおりです。
- 「最近の履歴」の
LedgerHashes
オブジェクト(1つのみ) - 現在のレジャーインデックス(レジャー履歴の長さ)に基づく正確な数の「過去の履歴」の
LedgerHashes
オブジェクト。具体的には、XRP Ledgerでは65536個のレジャーバージョンごとに新しい「過去の履歴」オブジェクトが1つ追加されます。
注記: 例外として、新しいジェネシスレジャーにはレジャー履歴がないため、LedgerHashes
オブジェクトが含まれていません。
LedgerHashes
オブジェクトの例(一部省略しています):
{
"LedgerEntryType": "LedgerHashes",
"Flags": 0,
"FirstLedgerSequence": 2,
"LastLedgerSequence": 33872029,
"Hashes": [
"D638208ADBD04CBB10DE7B645D3AB4BA31489379411A3A347151702B6401AA78",
"254D690864E418DDD9BCAC93F41B1F53B1AE693FC5FE667CE40205C322D1BE3B",
"A2B31D28905E2DEF926362822BC412B12ABF6942B73B72A32D46ED2ABB7ACCFA",
"AB4014846DF818A4B43D6B1686D0DE0644FE711577C5AB6F0B2A21CCEE280140",
"3383784E82A8BA45F4DD5EF4EE90A1B2D3B4571317DBAC37B859836ADDE644C1",
... (up to 256 ledger hashes) ...
],
"index": "B4979A36CDC7F3D3D5C31A4EAE2AC7D7209DDA877588B9AFC66799692AB0D66B"
}
LedgerHashes
オブジェクトのフィールドは次のとおりです。
名前 | JSONの型 | 内部の型 | 説明 |
---|---|---|---|
LedgerEntryType |
文字列 | UInt16 | 値0x0068 が文字列LedgerHashes にマッピングされている場合は、このオブジェクトがレジャーハッシュのリストであることを示します。 |
FirstLedgerSequence |
数値 | UInt32 | 廃止予定 使用しないでください。(本番環境のXRP Ledgerの「最近のハッシュ」オブジェクトでは、このフィールドの値は2 です。これは、以前のrippled ソフトウェアによるものです。この値は「最近のハッシュ」オブジェクトの更新に伴い持ち越されます。このフィールドは新しい「過去の履歴」オブジェクトには含まれていません。また、新しいバージョンのrippled で導入された並列ネットワークの「最近のハッシュ」オブジェクトにも含まれていません。) |
LastLedgerSequence |
数値 | UInt32 | このオブジェクトのHashes 配列の最後の要素のレジャーインデックス。 |
Hashes |
文字列の配列 | STI_VECTOR256 | 最大256個のレジャーハッシュからなる配列。その内容は、これがLedgerHashes オブジェクトのどのサブタイプであるかに応じて異なります。 |
Flags |
数値 | UInt32 | このオブジェクトのブールフラグのビットマップ。このタイプではフラグは定義されていません。 |
最近の履歴のLedgerHashes
ジェネシスレジャー以降、各レジャーには「最近の履歴」サブタイプのLedgerHashes
オブジェクトが1つだけ存在します。このオブジェクトでは、最近の256個のレジャーバージョン(または、レジャー履歴に記録されたレジャーの数が256未満の場合は256未満)を識別するハッシュがHashes
配列に含まれています。新しいレジャーを閉鎖するたびに、閉鎖処理の過程の一部で「最近の履歴」オブジェクトが、このレジャーバージョンの生成元である前のレジャーバージョン(このレジャーバージョンの 親レジャー )のハッシュで更新されます。ハッシュ数が256を超えると、最も古いハッシュが削除されます。
特定のレジャーの「最近の履歴」LedgerHashes
オブジェクトを使用して、その特定のレジャーバージョンより古い256個のレジャーバージョンから、任意のレジャーインデックスのハッシュを取得できます。
過去の履歴のLedgerHashes
「過去の履歴」のLedgerHashes
のエントリーには、レジャー履歴全体の256個ごとのレジャーバージョン(フラッグレジャー)のハッシュがまとめて含まれています。フラッグレジャーの子が閉鎖すると、最も新しい「過去の履歴」LedgerHashes
オブジェクトのHashes
配列にフラッグレジャーのハッシュが追加されます。65536個のレジャーごとに、rippled
は新しいLedgerHashes
オブジェクトを作成します。これにより、各「過去の履歴」オブジェクトには256個のフラッグレジャーのハッシュが含まれます。
注記: 最も古い「過去の履歴」LedgerHashes
オブジェクトのエントリー数は255です。これは、ジェネシスレジャーのレジャーインデックスが0ではなく1であるためです。
「過去の履歴」LedgerHashes
オブジェクトはスキップリスト として機能するので、任意の履歴フラッグレジャーのハッシュをそのインデックスから取得できます。さらに、フラッグレジャーの「最近の履歴」オブジェクトを使用してその他のレジャーのハッシュを取得できます。
LedgerHashes IDのフォーマット
LedgerHashes
オブジェクトIDには2種類のフォーマットがあります。これは、オブジェクトのサブタイプが「最近の履歴」と「過去の履歴」のいずれであるかに応じて決まります。
「最近の履歴」 LedgerHashes
オブジェクトのIDは、LedgerHashes
スペースキー(0x0073
)のSHA-512ハーフです。つまり「最近の履歴」のIDは常にB4979A36CDC7F3D3D5C31A4EAE2AC7D7209DDA877588B9AFC66799692AB0D66B
です。
「過去の履歴」LedgerHashes
オブジェクトのIDは、以下の値がこの順序で連結されているSHA-512ハーフです。
LedgerHashes
スペースキー(0x0073
)-
オブジェクトの
Hashes
配列のフラッグレジャーの32ビットレジャーインデックスを65536で割った値。ヒント: 65536で割ることで最上位16ビットが維持されます。これは、「過去の履歴」オブジェクトに含まれているすべてのフラッグレジャーでのみ同一です。この点を踏まえて、フラッグレジャーのハッシュが含まれている
LedgerHashes
オブジェクトを検索できます。