オープン、閉鎖済み、および検証済みレジャー
rippled
サーバはレジャーのバージョンを オープン(open)、閉鎖済み(closed)、検証済み(validated) に区別します。サーバはオープンなレジャーを1つ、閉鎖済みだが未検証のレジャーをいくつでも、そして検証済みレジャーの変更不可能な履歴を持ちます。以下の表はその違いをまとめたものです。
レジャーの種類: | オープン | 閉鎖済み | 検証済み |
---|---|---|---|
目的: | 一時的な作業領域 | 次の状態の提案 | 直前の状態の確認 |
使用する数: | 1 | 任意の数、通常は0または1 | レジャーインデックスごとに1つ、時間の経過とともに増加 |
内容は変更可能? | はい | いいえ、ただし、別のレジャーが採用される可能性あり。 | いいえ |
トランザクションの適用方法: | 受信順 | 正規順序 | 正規順序 |
直感に反し、XRP Ledgerはオープンレジャーを「閉鎖」して閉鎖済みレジャーへと変換することはありません。その代わりに、サーバはオープンレジャーを捨て、以前の閉鎖済みレジャーの上にトランザクションを適用して閉鎖済みレジャーを作成し、最新の閉鎖済みレジャーをベースとして新しいオープンレジャーを作成します。これは、コンセンサスが二重支出問題を解決する方法の結果と言えます。
オープンレジャーでは、サーバはトランザクションを受信した順番にトランザクションを適用しますが、サーバによってトランザクションが異なる順番で表示されることがあります。実際にどのトランザクションが先だったかを決定するための中心的なタイムキーパーが存在しないため、同じ時刻に送信されたトランザクションの正確な順序について、サーバ間で見解が一致しない可能性があります。したがって、検証の対象となる閉鎖済みのレジャーバージョンを計算するプロセスは、提案されたトランザクションを受信順に並べてオープンレジャーを構築するプロセスとは異なります。「閉鎖済み」レジャーを作成するために、各XRP Ledgerサーバは、トランザクションのセットと、以前、つまり「親」レジャーを使用します。サーバはトランザクションを正規順序に並べ、その順序で前のレジャーに適用します。正規順序は、分散型取引所におけるオファーのフロントランニングの難易度を高めるために、決定論的で効率的であるが、悪用されにくいように設計されています。
このように、オープンレジャーは一時的な作業領域としてしか使用されないため、トランザクションの暫定的な結果と最終的な結果が異なる可能性があるという大きな特徴があります。