Solanaの全履歴を自分のサーバーに無料で保存する方法

Solana ブロックチェーンの過去の全取引やアカウント履歴を自分のサーバーに保存し、自由に分析できる環境を無料で構築したいなら、オープンソースツールの組み合わせで実現できる。ブロックチェーンの全データを「バックフィル」(後追いで埋めること)するパイプラインを自分で組めば、外部の高額なインデクサーサービスに依存せず、制限のないクエリ環境が手に入る。

Solana の全履歴を自分で保持するメリットとは

Solana の全履歴を自分で保持するメリットとは

Solana は非常に高速なブロックチェーンであり、取引データやアカウント状態の履歴は膨大だ。この巨大なデータセットを手元に置いておくと、過去の特定ブロックにおける残高照会、ウォレットの全活動追跡、オンチェーンデータを使った独自分析などを好きなタイミングで実行できるようになる。

通常、こうした履歴データへアクセスするには RPC プロバイダーの有料プランを使うか、高価なハードウェアを伴う自前ノード運用が必要になる。しかし、あらかじめアーカイブされたデータとリプレイエンジンを活用すれば、一般的なサーバーや自宅のマシンでも全履歴の再構築が可能だ。

履歴バックフィルに必要なオープンソースツール

履歴バックフィルに必要なオープンソースツール

以下の3つが中核となる。いずれも無料で利用でき、互いに連携するよう設計されている。

  • Old Faithful(オールド・フェイスフル)── Solana の全台帳(ジェネシスブロックからの完全な履歴)を CAR ファイル形式で提供するパブリックアーカイブ
  • Jetstreamer(ジェットストリーマー)── Anza 社が開発したオープンソースのリプレイエンジン。CAR ファイルを読み込んで元のブロックチェーン状態を再実行する
  • Superbank(スーパーバンク)── ClickHouse データベース向けのスキーマと、データストリームを自動的に格納するプラグインを提供する

要するに、「アーカイブされた生データ(Old Faithful)」を「リプレイエンジン(Jetstreamer)」で解凍・再生し、「分析に適したデータベース(Superbank)」に書き込む流れだ。それぞれが自分の役割に特化しているため、自分でゼロからデータ処理基盤を組む必要はない。

Old Faithful のアーカイブから台帳データを取得する

Old Faithful のアーカイブから台帳データを取得する

Solana の全履歴を一からダウンロードするのは現実的ではない。Old Faithful はコミュニティに無償公開された CAR アーカイブであり、ダウンロードして使う分には一切の制限がない。ファイルは複数のミラーから高速で取得できる。

CAR ファイルはブロックチェーンのスナップショットではなく、IPFS でも使われるコンテントアドレス可能なアーカイブ形式だ。スロット単位などで分割されており、必要な範囲だけを段階的に取得できる。最初のダウンロード時はストレージ容量(現在の完全履歴は数十 TB 規模)に注意が必要だが、時間をかければ個人用ハードウェアでも扱える範囲に収まる。

Jetstreamer でレジャーを高速リプレイする

Jetstreamer でレジャーを高速リプレイする

取得した CAR ファイルは単なる圧縮データの塊だ。これを Solana の取引履歴として意味のある形に戻すために Jetstreamer を使う。

Jetstreamer は Anza によって開発されたリプレイエンジンで、CAR アーカイブを読み込んで取引を再実行し、アカウント状態の変化やトークン転送の詳細を復元する。特徴的なのは並列デコード機能で、1秒間に400万トランザクション以上を処理できることだ。従来の逐次リプレイに比べて格段に速く履歴を埋められる。

また、速度制限やリクエストごとの課金が一切ないため、自分のペースでデータを処理できる。公式の CLI(コマンドラインインターフェース)を使えば、YAML 設定ファイルを書くだけで起動できる。

Superbank スキーマを使って ClickHouse に格納する

Superbank スキーマを使って ClickHouse に格納する

Jetstreamer が出力したデータをそのままファイルに書き出すこともできるが、検索や集計を効率的に行うにはデータベースに取り込むのが一般的だ。Superbank は ClickHouse 向けの定義済みスキーマと、データをストリーミング挿入するプラグインを提供している。

ClickHouse は列指向の分析データベースで、時系列の大量データを扱うのに向いている。Superbank のスキーマは Solana のトランザクション構造に合わせてテーブルが設計されており、導入後すぐにクエリを実行できる。自分でスキーマを設計する手間が省けるのが利点だ。

保存した履歴を実際にクエリする方法

保存した履歴を実際にクエリする方法

データベースに格納された Solana 履歴は、複数の方法で問い合わせられる。

  • 通常の SQL(ClickHouse の方言)を使った自由な分析
  • JSON-RPC インターフェース(gTFA 経由)を立てて、ウォレットや dApp からもアクセスできる形にする
  • gRPC による低レイテンシなストリーミング取得

たとえば「あるウォレットアドレスが特定の期間にやり取りしたすべての SPL トークン推移」を知りたい場合、SQL で `transfers` テーブルに対してフィルタと集計をかけるだけで結果が得られる。外部サービスに API キーを渡す必要もなく、データは手元に残る。

よくある質問

完全な履歴を保存するにはどれくらいのディスク容量が必要か

2026年7月時点で、Solana の完全な台帳履歴は数十 TB に達している。標準的な個人向け NAS や中古のサーバーでは不足する可能性があるため、必要に応じて特定の期間だけをバックフィルする部分的な構築も検討できる。

データのダウンロードにかかる時間はどのくらいか

ネットワーク帯域とストレージの書き込み速度に依存する。ギガビット回線を使っても、全履歴のダウンロードには数日かかることがある。途中で中断しても再開できる仕組みを用意しておくとよい。

リプレイ中にエラーが発生した場合の対処法は

多くの場合、CAR ファイルの破損や不完全なダウンロードが原因だ。チェックサムを確認し、必要に応じて Old Faithful の別のミラーから再取得する。Jetstreamer のログ出力を確認すると、エラーの発生箇所がスロット番号で特定できる。

構築した環境を他の人と共有しても問題ないか

問題ない。使用しているすべてのツールはオープンソースであり、ライセンスに従えば自由に共有・再配布できる。ただし、公開サーバーとして運用する場合は負荷やセキュリティ設定に配慮する必要がある。

バックフィルを途中で止めて後から再開できるか

可能だ。Jetstreamer は処理済みスロットの状態を保持できるため、中断前の続きからリプレイを再開できる。Superbank への挿入も冪等性を考慮した設計になっており、重複データが発生しにくい。

この記事のポイント

  • Solana の全履歴データを自前で保持すれば、外部サービスに依存しない自由な分析が可能になる
  • Old Faithful(アーカイブ)、Jetstreamer(リプレイエンジン)、Superbank(ClickHouse スキーマ)の3つで無料パイプラインが組める
  • Jetstreamer の並列処理により、毎秒400万トランザクション超の速度でバックフィルできる
  • 保存したデータは SQL、JSON-RPC、gRPC のいずれでもクエリできる
  • 完全履歴の保存には数十 TB のストレージが必要で、ダウンロードに数日かかる場合がある
共有:

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)