レジャー履歴
コンセンサスプロセスにより、検証済みレジャーバージョンのチェーンが作成されます。各バージョンは、以前のバージョンにトランザクションのセットを適用して生成されます。各rippled
サーバーには、レジャーバージョンとトランザクション履歴がローカルに保管されます。サーバーに保管されるトランザクション履歴の量は、サーバーがオンラインであった期間と、サーバーが取得し、保持する履歴量の設定に応じて異なります。
ピアツーピアのXRP Ledgerネットワーク内のサーバーは、コンセンサスプロセスの一環としてトランザクションやその他のデータを相互に共有します。各サーバーは個別に新しいレジャーバージョンを作成し、その結果を信頼できるバリデータと比較して、整合性を維持します。(信頼できるバリデータのコンセンサスがサーバーの結果と一致しない場合は、サーバーがピアから必要なデータを取得して整合性を維持します。)サーバーはピアから古いデータをダウンロードして、利用可能な履歴のギャップを埋めることができます。レジャーはデータの暗号ハッシュを使用した構造となっているため、すべてのサーバーがデータの整合性の検証を行えます。
データベース
サーバーはレジャーの状態データとトランザクションを レジャーストアー と呼ばれるkey-valueストアで保持します。また、rippled
にはいくつかのSQLiteデータベースファイルが維持されているので、トランザクション履歴などへより柔軟にアクセスし、特定の設定変更を追跡できます。
一般に、rippled
サーバーが稼働していないときにはそのサーバーのすべてのデータベースファイルを安全に削除できます。(たとえばサーバーのストレージ設定を変更する場合や、Test Netから本番環境ネットワークに切り替える場合に、このような削除が必要となることがあります。)
利用可能な履歴
設計上、XRP Ledgerのすべてのデータとトランザクションは公開されており、誰でもすべてのデータを検索または照会できます。ただし、サーバーが検索できるデータは、そのサーバーがローカルで使用できるデータに限られます。サーバーで利用できないレジャーバージョンやトランザクションを照会しようとすると、そのデータが見つからないという応答がサーバーから返されます。必要な履歴を保持している他のサーバーに対して同じ照会を実行すると、正常な応答が返されます。XRP Ledgerデータを使用する企業では、サーバーで利用可能な履歴の量に注意してください。
server_infoメソッドは、サーバーで利用可能なレジャーバージョンの数をcomplete_ledgers
フィールドで報告します。
履歴の取得
rippled
サーバーは起動されると、最優先で最新の検証済みレジャーの完全なコピーを取得します。その後、サーバーは常にレジャーの進行状況を把握します。レジャー履歴を埋め戻すように設定されているサーバーでは、レジャー履歴が設定量に達するまで埋め戻されます。この設定量は、オンライン削除による削除が開始されるカットオフ値以下でなければなりません。
サーバーは同期される前から履歴の埋め戻しを行い、同期後にも収集した履歴のギャップを埋めることができます。(レジャー履歴のギャップは、サーバーの使用率が一時的に高くなりネットワークと同期をとることができない場合、ネットワークとの接続が失われた場合、またはその他の一時的な問題の影響を受けた場合に発生する可能性があります。)履歴を埋め戻すため、サーバーはピアrippled
サーバーにデータを要求します。サーバーが埋め戻す量は、[ledger_history]
設定で定義されます。
XRP Ledgerは、コンテンツの一意のハッシュを使用して(さまざまなレベルの)データを識別します。XRP Ledgerの状態データには、レジャーの履歴の概要がLedgerHashesオブジェクトタイプの形式で含まれています。サーバーはLedgerHashesオブジェクトを使用して取得するレジャーバージョンを認識し、受信するレジャーデータが正しく完全であることを確認します。
履歴の埋め戻しは、サーバーでは最も優先度の低い処理の1つであるため、サーバーの使用率が高い場合やハードウェアとネットワークのスペックが十分ではない場合には、欠落している履歴を埋めるのに時間がかかることがあります。推奨されるハードウェアスペックについては、容量の計画を参照してください。履歴の埋め戻しでは、サーバーのダイレクトピアの1つ以上に当該の履歴が保持されている必要もあります。
指示による削除の使用
オンライン削除と指示による削除の両方が有効な場合、サーバーでは、まだ削除が許可されていない最も古いレジャーまでのデータが自動的に埋め戻されます。これにより、[ledger_history]
設定とonline_delete
設定で構成されているレジャーバージョンの数よりも多いデータが取得されることがあります。can_deleteメソッドを実行すると、削除可能なレジャーバージョンがサーバーに通知されます。
すべての履歴
XRP Ledgerネットワーク内の一部のサーバーは、「すべての履歴が記録される」サーバーとして設定されています。これらのサーバーは、使用可能なすべてのXRP Ledgerの履歴を収集しますが、オンライン削除は使用しません。このため他の追跡サーバーよりもかなり多くのディスク容量が必要です。
Rippleは、s2.ripple.com
ですべての履歴が記録される一連の公開サーバーを公開サービスとして提供しています。このサービスは、より大きなXRPコミュニティーのために提供されています。Rippleは、サーバーを悪用するユーザーや、公平な量を超えるサーバーのリソースを使用するユーザーをブロックする権利を留保しています。
ヒント: 一部の暗号資産ネットワークとは異なり、XRP Ledgerのサーバーは、現在の状態を認識して最新のトランザクションを把握するのにすべての履歴を必要としません。
すべての履歴の設定については、完全な履歴の設定を参照してください。
履歴シャーディング
XRP Ledgerのすべての履歴を1台の高価なマシンに保管する代わりに、複数のサーバーがレジャー履歴の一部分を保管するように構成できます。これは履歴シャーディング機能によって実現します。一定範囲のレジャー履歴が シャードストアー という個別の保管領域に保管されます。ピアサーバーから(上記の履歴の取得で説明したとおり)特定のデータが要求されると、サーバーはレジャーストアーまたはシャードストアーのデータを使用して応答できます。
オンライン削除ではシャードストアーのデータは削除されません。ただし、32768個以上のレジャーバージョンをサーバーのレジャーストアーに保持するようにオンライン削除が設定されていれば、レジャーストアーからデータが自動的に削除される前に、サーバーはレジャーストアーからシャードストアーにすべてのシャードをコピーできます。
詳細は、履歴シャーディングの設定を参照してください。