ローカルPCでDockerを使ってRippledサーバーを構築し、XRPL Testnetに接続する

ローカルPCでDockerを使ってRippledサーバーを構築し、XRPL Testnetに接続する手順 Docker

XRPLプライベートネットワークをDockerで構築で、プライベートネットワーク上でrippledサーバーを構築してテスト送金まで行いましたが、外部環境との接続を確認したいために、今回は、XRPLのTestnetへの接続を試みました。

この記事では、Windows 11上でWSL2とDockerを使い、ローカルPCでRippledサーバーを稼働させてXRPLのTestnetに接続する方法を説明しています。
現時点では、XRPL Testnetへの接続まで確認できましたが、同期まで確認できおらず、問題判別中です。

ローカルPC上にRippledサーバーを構築する

Windows 11にDocker Desktopをインストール後、WSL2の環境にUbuntuをセットアップして、Dockerを使ってRippledサーバーを構築します。

全体の流れ

Windows 11でRippledサーバーを構築するには、主に以下の3つのステップを踏みます。

  1. Docker Desktopのインストール:
    まず、Windows 11にDocker Desktopというソフトウェアをインストールします。
    これは、アプリケーションを「コンテナ」という独立した環境で動かすためのツールです。
    参考リンクWindowsにDocker Desktopをインストールする
  2. WSL2とUbuntuの準備:
    Docker Desktopは、その動作にWSL2 (Windows Subsystem for Linux 2)という技術を利用します。
    WSL2はWindows上でLinux環境を動かすためのもので、この中にUbuntuというLinuxディストリビューションをセットアップします。
    基本的に、Docker Desktopをインストールする過程でこれらは自動的に設定されます。
    参考リンクWSL を使用して Windows に Linux をインストールする方法
  3. Rippledサーバーの構築:
    準備が整ったら、Dockerを使ってRippledサーバーを動かします。
    これにより、Rippledサーバーがコンテナとして隔離された環境で動作するため、Windowsのシステムに影響を与えることなく、安定してサーバーを運用できます。

要するに、Windows 11にDockerを導入し、その上でRippledサーバーを「コンテナ」として実行するという流れになります。

以下のRippledサーバーの構築手順に進む前に、参考リンクを参照して、Docker Desktopをインストールし、WSL2環境にUbuntuをセットアップしてください。

Rippledサーバーの構築

WSLのUbuntuターミナルを開き作業を行います。

Rippled Dockerイメージを入手する

Rippledの設定ファイルを準備する

最初に、作業ディレクトリを作成し移動します。

nanoエディタを使って、設定ファイル(rippled.cfg)を作成します。

rippled.cfg設定内容

以下をコピー&ペーストして使います。

rippled.cfg内容の解説

DockerでRippledコンテナを起動する

以下のコマンド入力し、コンテナを起動する。

  • -d:バックグラウンドで起動
  • --name xrpl-testnet:コンテナ名
  • -p 5005:5005:RPCポートの公開
  • -v ~/xrpl/testnet/rippled.cfg:/etc/opt/ripple/rippled.cfg:設定ファイルのマウント

以下は、Ubuntuターミナル画面。

コンテナの起動確認を行う

Rippledサーバーへのアクセス確認

curlを用いて以下のコマンドを入力してRPCへのアクセスを確認します。

レスポンスの成功例

以下は、実際のUbuntuターミナル画面。

XRPL Testnetとの同期確認

以下のコマンドで、Rippledサーバーの状態を確認する。

レスポンス例server_info (rippled)

{
  "result": {
    "info": {
      "build_version": "1.12.0", // Rippledサーバーのバージョン
      "complete_ledgers": "32570-82521701", // サーバーが保持しているレジャーの範囲
      "hostid": "LEST", // ホストのID(サーバー名など)
      "initial_sync_duration_us": "190181187", // 初回同期にかかった時間(マイクロ秒)
      "io_latency_ms": 1, // I/Oレイテンシ(ミリ秒)
      "jq_trans_overflow": "0", // 処理待ちトランザクションのオーバーフロー回数
      "last_close": { // 最後にレジャーがクローズされた情報
        "converge_time_s": 3.001, // 収束にかかった時間(秒)
        "proposers": 35 // プロポーザの数
      },
      "load_factor": 1, // 現在の負荷係数
      "network_id": 0, // ネットワークID
      "peer_disconnects": "4", // ピアとの切断回数
      "peers": 42, // 接続されているピアの数
      "server_state": "full", // サーバーの現在の状態 (e.g., "full", "syncing", "tracking")
      "state_accounting": { // サーバーの状態遷移に関する統計
        "connected": {
          "duration_us": "10000000",
          "transitions": 1
        },
        "full": {
          "duration_us": "50000000",
          "transitions": 1
        }
      },
      "uptime": 86400, // サーバーの稼働時間(秒)
      "validated_ledger": { // 最新の検証済みレジャーの情報
        "age": 3, // レジャーがクローズされてからの時間(秒)
        "base_fee_xrp": 0.00001, // 基本手数料(XRP)
        "hash": "DF8467D2B9F4C0D4A8E0A0C0A0A0C0A0A0C0A0A0C0A0A0C0A0A0C0A0A0C0A0A0", // レジャーのハッシュ
        "reserve_base_xrp": 20, // アカウントの最低準備金(XRP)
        "reserve_inc_xrp": 5, // オブジェクトごとに増える準備金(XRP)
        "seq": 82521701 // レジャーシーケンス番号
      },
      "validation_quorum": 25 // 検証クォーラム
    }
  },
  "status": "success",
  "type": "response"
}
同期の進行状況確認

Server State の値と意味
正常な順序ではdisconnectedconnectedsyncingtrackingfullの順で進行します。

disconnected(切断状態)
オフラインモードで動作中、またはネットワークアクセスができない状態
サーバーがXRP Ledgerのピアツーピアネットワークに接続されていない
connected(接続状態)
ピアツーピアネットワークと通信できるが、共有レジャー状態を追跡するのに十分なデータをまだ持っていない
サーバーがネットワークに接続されていると認識している状態
syncing(同期中)
通常、起動後にレジャーの状態に同期するまで約5-15分かかる
サーバーが現在レジャーバージョンで遅れている状態
tracking(追跡中)
ネットワークの現在状態に追いついている
サーバーがネットワークと合意している状態
full(完全状態)
バリデーターとして設定されていない可能性
サーバーがネットワークと完全に同期しており、バリデーションに参加できるが、実際には参加していない状態
validating(バリデーション中)
サーバーが現在レジャーのバリデーションに参加している状態
proposing(提案中)
サーバーがレジャーのバリデーションに参加し、現在独自のバージョンを提案している状態

以下は、実際のUbuntuターミナル画面。

実際には、時間待っても、server_stateがconnectedのままで、XRPL Testnetへの同期は確認できませんでした。

リップルの問題診断

Diagnosing Problems with rippledで、問題を判別します。

サーバーがconnected数時間にわたってこの状態のままであったり、または
connected状態から元の状態に戻ったりする場合は、通常、サーバーがネットワークの他の部分に対応できていないことを示しています。
最も一般的なボトルネックは、ディスクI/O、ネットワーク帯域幅、およびRAMです。

システム要件

Recommended Specificationsを参照。

最小仕様
テスト目的で、次の最小要件を満たす市販ハードウェア上で XRP Ledger サーバーを実行できます。RAM: 16 GB以上。
オペレーティング システム: macOS、Windows (64 ビット)、またはほとんどの Linux ディストリビューション (Red Hat、Ubuntu、Debian をサポート)。
CPU: 64 ビット x86_64、4 コア以上。
ディスク:SSD / NVMe(持続10,000 IOPS以上 – バーストやピーク時を除く)。
データベースパーティション用に最低50GB。
Amazon Elastic Block Store(AWS EBS)はレイテンシが高すぎて安定した同期が不可能なため、使用しないでください。

タイトルとURLをコピーしました