レジャー

XRP Ledgerは完全にオープンな共有グローバルレジャーです。個々の参加者はこのレジャーを管理する個々の機関を信頼しなくても、レジャーの整合性を信頼できます。rippledサーバーソフトウェアは、非常に特殊なルールによってのみ更新可能なレジャーデータベースを管理することにより、これを実現しています。各rippledインスタンスはレジャーの完全なコピーを保持し、rippledサーバーからなるピアツーピアネットワークはトランザクション候補を各サーバーに配信します。コンセンサスプロセスによって、レジャーの新しいバージョンに適用されるトランザクションが決定します。関連項目: コンセンサスプロセス

図: 各レジャーは、その前のレジャーバージョンにトランザクションを適用して生成されます。

この共有グローバルレジャーは、実際にはrippledの内部データベースに保持されている一連の個別レジャー(レジャーバージョン)です。各レジャーバージョンには、レジャーの生成順を示すレジャーインデックスが付いています。各閉鎖済みレジャーバージョンにも、レジャーの内容を示す識別用ハッシュ値があります。rippledインスタンスには常に、1つの処理中の「現行」オープンレジャー、コンセンサスにより承認されていないいくつかの閉鎖済みレジャー、およびコンセンサスによる検証済みの任意の数の履歴レジャーがあります。検証済みレジャーだけが、その内容が正確で変更できません。

1つのレジャーバージョンはさまざまな要素で構成されています:

図: レジャーにはトランザクション、状態ツリー、閉鎖時刻、検証情報を含むヘッダーが含まれています。

  • ヘッダー - レジャーインデックス、レジャーのその他のコンテンツのハッシュ、その他のメタデータ。
  • トランザクションツリー - このレジャーの作成時に、直前のレジャーに適用されたトランザクション。トランザクションは、レジャーの変更を可能にする 唯一の 手段です。
  • 状態ツリー - このバージョンのレジャーの設定、残高、オブジェクトを含むすべてのレジャーオブジェクト

ツリーの形式

レジャーの状態ツリーは、その名前のとおりツリー型データ構造です。状態ツリーの各オブジェクトは256ビットのオブジェクトIDで識別されます。JSONではレジャーオブジェクトのIDはindexフィールドです。このフィールドには64文字の16進数文字列が含まれています(例: "193C591BF62482468422313F9D3274B5927CA80B4DD3707E42015DD609E39C94")。状態ツリーの各オブジェクトには、オブジェクトの検索に使用できるIDが設定されています。各トランザクションには、トランザクションツリーでトランザクションを検索するときに使用できる識別用ハッシュが含まれています。レジャーオブジェクトのindex(ID)とレジャーのledger_index(シーケンス番号)を混同しないでください。

ヒント: レジャーの状態ツリーのオブジェクトは「レジャーノード」と呼ばれることもあります。たとえばトランザクションメタデータはAffectedNodesのリストを返します。これをピアツーピアネットワークの「ノード」(サーバー)と混同しないでください。

トランザクションの場合、識別用ハッシュは署名済みトランザクションの指示に基づいていますが、検索時のトランザクションオブジェクトにはトランザクションの結果とメタデータが含まれています。これは、ハッシュの生成時には反映されません。

関連項目

レジャーヘッダー、レジャーオブジェクトID、レジャーオブジェクトタイプについての詳細は、レジャーデータフォーマットを参照してください。