全履歴の設定

デフォルトの構成では、新しいレジャーバージョンが利用可能になるとrippledサーバーが古いXRP Ledger状態とトランザクションの履歴を自動的に削除するように設定されています。ほとんどのサーバーでは現在の状態を把握してトランザクションを処理するのに古い履歴は不要なため、この設定で十分です。ただし、一部のサーバーが可能な限り多くのXRP Ledgerの履歴を提供する場合、これはネットワークにとって有用であることがあります。

警告

全履歴の保存にはコストがかかります。2018年12月11日の時点では、XRP Ledgerの全履歴が専有するディスク容量は約9テラバイトにのぼります。適切なサーバーパフォーマンスのためには、全履歴を高速なソリッドステートディスクドライブに保存する必要があります。このような大量のソリッドステートストレージは安価ではなく、また保管する必要のある履歴の合計量は毎日約12 GBずつ増加します。

ピアツーピアネットワークから全履歴を取得するには非常に長い時間がかかり(数か月)、また古い履歴を取得し、かつレジャーの新たな進展を常に把握するには、システムリソースとネットワークリソースを十分に備えたサーバーが必要となります。レジャー履歴の取得を迅速に開始するため、すでに大量の履歴をダウンロードしている別のサーバーオペレーターを探すこともできます。このようなオペレーターは、データベースダンプを提供できるか、または少なくとも、履歴の取得に十分な時間、あなたのサーバーをオペレーターのサーバーに明示的にピア接続することができます。サーバーはファイルからレジャー履歴を読み込み、インポートする履歴レジャーの整合性を検証できます。

ネットワークへの参加、トランザクションの検証、またはネットワークの現在の状態の確認には、全履歴を記録するサーバーは必要ありません。全履歴が有用となるのは、過去に発生したトランザクションの結果や、過去の特定の時点におけるレジャーの状態を確認する場合だけです。このような情報を取得するには、必要とする履歴を保持している他のサーバーを利用する必要があります。

全履歴は保管せずにXRP Ledgerネットワークの履歴の保管に参加したい場合には、履歴シャーディングを構成すれば、レジャー履歴のグループをランダムに選択して保管できます。

構成手順

サーバーが全履歴を取得して保管するように構成するには、以下の手順を実行します。

  1. rippledサーバーが稼働中の場合は停止します。

    $ sudo systemctl stop rippled
    
  2. サーバーの構成ファイルで[node_db]スタンザのonline_delete設定とadvisory_delete設定を削除(またはコメントアウト)し、タイプをまだNuDBに変更していない場合は変更します。

    [node_db]
    type=NuDB
    path=/var/lib/rippled/db/nudb
    #online_delete=2000
    #advisory_delete=0
    

    全履歴が記録されるサーバーでは、レジャーストアーにNuDBを使用します。これは、データベースがこれほど大きいと、RocksDBでは非常に大量のRAMが必要になるためです。詳細は、容量の計画を参照してください。パフォーマンス関連の構成オプションopen_filesfilter_bitscache_mbfile_size_mb、およびfile_size_multは、RocksDBのみに適用されるオプションであるため、デフォルトの[node_db]スタンザから削除できます。

    注意: RocksDBで履歴をすでにダウンロードしている場合は、NuDBへ切り替えるときに構成ファイルでデータベースのパスを変更するか、またはそのデータを削除する必要があります。[node_db]スタンザのpath設定および[database_path](SQLiteデータベース)設定の両方を変更する必要があります。このようにしないと、サーバーの起動が失敗する可能性があります。

    The recommended installation uses the config file /etc/opt/ripple/rippled.cfg by default. Other places you can put a config file include $HOME/.config/ripple/rippled.cfg (where $HOME is the home directory of the user running rippled), $HOME/.local/ripple/rippled.cfg, or the current working directory from where you start rippled.

  3. サーバーの構成ファイルで[ledger_history]スタンザをfullに設定します。

    [ledger_history]
    full
    
  4. 全履歴が保管されている1台以上のサーバーと明示的にピア接続するように、サーバーの構成ファイルで[ips_fixed]スタンザを設定します。

    [ips_fixed]
    169.55.164.20
    50.22.123.215
    

    サーバーのダイレクトピアの1つが使用可能な履歴データを保持している場合に限り、サーバーはピアツーピアネットワークから履歴データをダウンロードできます。全履歴をダウンロードする最も容易な方法は、すでに全履歴を保管しているサーバーとピア接続することです。

    ヒント: Rippleは、すべての履歴が記録されるサーバーのプールを公開しています。これらのサーバーのIPアドレスを取得するには、ドメインs2.ripple.comを数回解決します。これらのサーバーは公開サービスとして提供されているため、他のサーバーとのピア接続での可用性は限られており、またこれらのサーバーを悪用するとブロックされる可能性があることに注意してください。

  5. 全履歴が記録されている別のサーバーからのデータベースダンプがあり、このダンプをベースとして利用できる場合は、サーバーの構成ファイルで[import_db]スタンザがインポート対象データを指し示すように設定します。(それ以外の場合はこのステップをスキップします。)

    [import_db]
    type=NuDB
    path=/tmp/full_history_dump/
    
  6. 以前に稼働していたrippledからの既存のデータベースファイルがサーバーにある場合は、そのデータベースファイルを削除します。

    オンライン削除を無効にすると、サーバーはオンライン削除が有効であった間にダウンロードしたデータをすべて無視するため、ディスク容量を空けることができます。次に例を示します。

    rm -r /var/lib/rippled/db/*
    

    警告: フォルダーを削除する前に、保持したいファイルがそのフォルダーに含まれていないことを確認してください。通常は安全にrippledサーバーのデータベースファイルをすべて削除できますが、この操作は、設定されているデータベースフォルダーがrippledのデータベース以外には使用されていない場合にのみ行ってください。

  7. rippledサーバーを起動し、インポート可能なデータベースダンプがある場合にはインポートします。

    [Import_db]で構成されている読み取り対象データベースダンプがある場合は、--import コマンドラインオプションを指定してサーバーを明示的に起動します。

    $ /opt/ripple/bin/rippled --conf /etc/opt/ripple/rippled.cfg --import
    

    大量のデータベースダンプのインポートには数分から数時間かかることがあります。インポート中はサーバーは完全には起動せず、ネットワークと同期しません。インポートの状況を確認するには、サーバーログを参照してください。

    データベースダンプをインポートしない場合は、サーバーを通常の方法で起動します。

    $ sudo systemctl start rippled
    
  8. [import_db]スタンザをサーバーの構成ファイルに追加した場合は、インポートの完了後にそのスタンザを削除してください。

    このようにしないと、次回の再起動時にサーバーが同じデータを再びインポートしようとします。

  9. server_infoメソッドを使用して、サーバーの利用可能な履歴を監視します。

    complete_ledgersフィールドに表示される利用可能なレジャーの範囲は、時間の経過とともに増加します。

    本番環境のXRP Ledgerの履歴で最も古い利用可能なレジャーバージョンは、レジャーインデックス32570です。レジャー履歴の最初の約2週間分は、当時のサーバーのバグが原因で失われています。Test Netやその他のチェーンでは通常、履歴の最初のバージョンはレジャーインデックス1です。