コンテンツへスキップ
0%

Solana Geyser Pluginとは? 開発者向け2026年版ガイド

Alchemy team headshot

執筆者 Alchemy

2026年5月20日 公開読了時間 2 分

Solana Geyser Plugin データスタック

TL;DR: Geyser、Yellowstone、そしてストリーミングを使うべきタイミング

  • Geyser: バリデータ側のプラグインで、アカウント更新、スロット、トランザクション、ブロック、エントリを外部システムにプッシュする。ポーリングは不要。
  • Yellowstone gRPC: 現在多くのビルダーが使用しているネットワークプロトコル。Geyserをラップし、ストリームをネットワーク経由で公開する。
  • ストリーミングを使うべき場合: すべてのアカウント書き込みが必要な場合、サブ秒単位の確認が必要な場合、あるいはgetProgramAccountsをループで呼んでいる場合(インデクサ、MEV、フィルエンジン、AMMモニタなど)。
  • RPCを使うべき場合: 単発の読み取り(残高、単一のトランザクション、現在のスロットなど)。
  • Alchemy: バリデータ + Geyser + Yellowstone互換gRPCを運用。平均配信遅延5〜15ms、マルチノード冗長構成、月額最低料金なしで$75/TBから。

1つのセクションしか読まないなら、When should your team care about Geyser?を読んでほしい。

Solana Geyser Pluginは、バリデータ側のインターフェースで、リアルタイムの状態変化(アカウント更新、スロットステータス、トランザクション、ブロック、エントリ)をSolanaバリデータからデータベース、メッセージキュー、インデクサなどの外部システムにストリーミングする。

Geyserはバリデータ内部の仕組みだ。現在多くのビルダーが実際にやり取りするプロトコルである**Yellowstone gRPC**は、Geyserの上に位置し、それらのストリームをネットワーク経由で公開するため、アプリは自前でバリデータを動かさなくても消費できる。単発のクエリにはSolana RPCを使う。すべてのアカウント変更、トランザクション、スロットをリアルタイムで、getProgramAccountsをループで呼び出すことなく必要とする場合は、Yellowstone互換のGeyserストリームを使う。

Solana Geyser Pluginの2023年以降の変化

Geyserは、バリデータ内のプラグイントレイトとしてSolana 1.9で導入された。2023年時点では、ほとんどのチームがPostgreSQLやKafkaプラグインを直接コンパイルした自前のバリデータを運用していた。そのパターンは今では稀だ。

それ以降:

  • Yellowstone gRPC(元々Triton Oneが開発、現在はコミュニティが保守)が、Geyserをラップしてストリームをネットワーク経由で公開する標準プロトコルとして登場した。今日「Geyserプロバイダー」と呼ばれるものの多くは、実際にはYellowstone互換のgRPCを販売している。
  • マネージドプロバイダーAlchemy、Helius、Tritonなど)が、バリデータとGeyserプラグインの運用を代行し、APIキーの背後にストリーミングエンドポイントを公開している。
  • Substreams、Carbon、その他各種の独自スタックといったインデクシングパイプラインは、RPCをポーリングする代わりにYellowstoneストリームを消費する。

ブログやドキュメントにまだ「PostgreSQLプラグインをバリデータにコンパイルする」と書かれているなら、そのワークフローは存在するものの、もはやほとんどのチームが取る道ではない。これらのスタックを運用しているプロバイダーの比較については、top Solana RPC providers guideを参照してほしい。

Solana Geyser Pluginが実際にやっていること

Geyserプラグインは、バリデータが起動時にロードする共有ライブラリだ。バリデータはGeyserPlugin traitを実装しており、オンチェーンで何か起きるたびにプラグインを呼び出す。プラグインはそのデータをどう扱うかを決める。データベースに書き込む、キューにプッシュする、gRPCストリームに流す、破棄する、といった具合だ。

バリデータがプッシュし、プラグインが反応する。それが全体のモデルだ。ポーリングもRPC呼び出しもレート制限もない。データはバリデータが処理した瞬間に届く。

ストリーミングされる内容

Geyserは以下のフックを公開する:

  1. アカウント更新: すべてのアカウントへのすべての書き込みを、スロット、書き込みバージョン、完全なアカウントデータとともに。
  2. スロットステータスの変化: processedconfirmedrooted
  3. トランザクション: ログや内部命令を含む完全なトランザクション詳細を、バリデータが確認した時点で。
  4. ブロック: 報酬、親スロット、エントリ数を含むブロックメタデータ。
  5. エントリ: サブブロック単位(PoHエントリ)。最もレイテンシに敏感なコンシューマーに有用。

プラグインは任意のサブセットを購読できる。Yellowstone gRPCは同じ一連のフックを、サーバー側フィルタリング(アカウント、プログラム、オーナー、署名、データスライスによる)付きのサブスクリプションストリームとして公開する。

Geyserを気にすべきなのはどんなチームか

以下のいずれかが当てはまる場合は、Geyserベースのストリームを使う:

  • あるプログラム(AMM、オーダーブック、レンディングマーケットなど)のすべてのアカウント書き込みが必要な場合。getProgramAccountsでは遅すぎる上にコストがかかりすぎる。
  • インデクサ、フィルエンジン、MEVボット、リアルタイム分析パイプラインを構築している場合。
  • サブ秒レイテンシのトランザクション確認イベントが必要な場合。
  • 大規模なデータセットをページネーションしていて、それにRPCクレジットを消費している場合。
  • プログラムの状態について、順序が保証され欠落のない履歴が必要な場合。

以下の場合はおそらくGeyserは不要だ:

  • 単発の読み取り(トークン残高、単一トランザクションの照会、現在のスロットなど)をしている場合。RPCが適切なツールだ。
  • アプリがユーザー主導のクエリに対して読み取り中心であり、書き込みストリームの消費が中心ではない場合。

Geyser、Yellowstone、gRPC、インデクサがどう組み合わさるか

現代のSolanaデータスタックは4層構造だ:

Layer
What it is
Who runs it

Validator

トランザクションを処理するSolanaノード

バリデータオペレーター(もしくはあなたのプロバイダー)

Geyser plugin

状態変化のコールバックを受け取る、バリデータにロードされるライブラリ

バリデータにコンパイルされて組み込まれる

Yellowstone gRPC

Geyserの上に構築された標準化されたストリーミングプロトコル

プロバイダーのエンドポイントによって公開される

Indexer / consumer

あなたのアプリ、データベース、パイプライン

あなた自身

現代のSolanaアプリのほとんどは、バリデータやGeyserプラグインに直接触れることはない。Yellowstone gRPC接続を開き、関心のあるスライス(プログラム、オーナー、署名などでフィルタリング)を購読し、構築した任意のストレージや処理層にイベントをストリーミングする。ストリーミングプロバイダーがバリデータを運用し、Geyserプラグインをロードし、その接続の反対側でYellowstoneを公開する。

Yellowstone互換gRPCはRust、TypeScript、Go、そして.protoをコンパイルできるあらゆる言語で広くサポートされているため、プロバイダー間の移行は通常URLとキーの入れ替えで済む。

AlchemyがSolanaの現代的なデータスタックにおいて果たす役割

Alchemyは、バリデータ、Geyserプラグイン、Yellowstone互換gRPC層をあなたの代わりに運用する。プロバイダーを検討する際に知っておく価値のある点をいくつか挙げる:

  • Yellowstone互換gRPC: Rust、TypeScript、Goでドロップイン互換。移行はURLの変更のみ。
  • 平均配信遅延5〜15ms: レイテンシに敏感なコンシューマー向けのファーストスロットデータ保証。
  • 48時間分のブロックリプレイと6,000以上の履歴スロット: 必要に応じて復元可能なので、短時間の切断や再起動でもデータを失わない。
  • マルチノード冗長構成: すべてのサブスクリプションが複数のアップストリームノードにファンアウトされるため、単一の遅いノードや停止したノードがストリームに現れることはない。
  • リージョナルエンドポイント: US East、US West、EU Central、Asia-Pacific。
  • ストリーミングした分だけ支払う: 月額最低料金なしでTBあたり$75。
  • Prometheus互換メトリクス: Alchemyのダッシュボードに組み込まれたストリーム単位のテレメトリ。

AlchemyのSolanaスタックは、DexterLabやBware Labsの主要なSolanaエンジニアと協力してゼロから構築され、Phantom、Solflare、Robinhood、OpenSea、Circleを支えている。

よくある質問

Solana Geyser Pluginとは何か?

Geyser Pluginは、バリデータ側のインターフェースで、リアルタイムの状態変化(アカウント更新、スロットステータス、トランザクション、ブロック、エントリ)をSolanaバリデータから外部システムにストリーミングする。これはプッシュモデルであり、データが届くとバリデータがプラグインに通知する。ポーリングもRPCのオーバーヘッドもない。

GeyserとYellowstoneの違いは何か?

Geyserはバリデータ内部のプラグインインターフェースだ。Yellowstoneは(gRPCの上に構築された)ネットワークプロトコルで、Geyserストリームをリモートクライアントに公開する。今日ほとんどのビルダーはGeyserに直接触れるのではなく、Yellowstoneとやり取りしている。彼らは、自前のバリデータにGeyserプラグインをコンパイルするのではなく、ストリーミングプロバイダーが運用するYellowstone gRPCエンドポイントに接続する。

RPCではなくGeyser/Yellowstoneを使うべきなのはいつか?

すべてのアカウント書き込み、すべてのトランザクション、すべてのスロットをリアルタイムで必要とする場合はストリーミングを使う。これはインデクサ、MEVボット、フィルエンジン、AMM/オーダーブックモニタ、リアルタイム分析でよくあるケースだ。単発の読み取り(残高、単一のトランザクション、単一のアカウントなど)にはRPCを使う。getProgramAccountsをループで呼び出していることに気づいたら、それがストリーミングに切り替えるべきサインだ。

Geyserを使うために自前でバリデータを運用する必要はあるか?

いいえ。2023年時点ではそれが一般的だったが、2026年にはほとんどのチームが、バリデータとGeyserプラグインの運用を代行してくれるプロバイダーのマネージドYellowstone互換gRPCエンドポイントを使っている。セルフホスティングは、規制上あるいは主権上の要件があるチーク向けに残されている。

Geyser/Yellowstoneのサブスクリプションで何をストリーミングできるか?

アカウント更新、スロットステータスの変化(processed/confirmed/rooted)、ログと内部命令を含むトランザクション、ブロックメタデータ、PoHエントリだ。Yellowstone gRPCは、アカウント、プログラム、オーナー、署名、データスライスによるサーバー側フィルタリングをサポートしているため、ストリームにはアプリが必要とするものだけが流れる。

Yellowstoneプロバイダー間で移行するにはどうすればよいか?

Yellowstoneは標準化されたプロトコルなので、ほとんどの移行はURLとAPIキーの変更で済む。新しいプロバイダーが使用中のストリームとフィルタをサポートしているか確認し、ステージングでテストし、トラフィックを段階的に移行する。再接続時のバックフィル動作はプロバイダーによって異なるため、本番のワークロードを切り替える前に確認しておくこと。

Geyser/Yellowstoneストリーミングのコストはどのくらいか?

価格モデルはプロバイダーによって異なる。TBあたりの価格設定(Alchemy: 月額最低料金なしで$75/TBから)は、バースト性のあるワークロードに対して最も予測しやすい。プロバイダーによっては、データを含む月額プランにgRPCをバンドルしていることもあり、これは安定した量では安く済む場合もあるが、トラフィックが急増すると高くつくこともある。導入前には必ず、実際のサブスクリプションフィルタに対してベンチマークを取ること。

Solana上で構築する準備はできているか? Alchemy's Yellowstone-compatible gRPCでストリーミングする: ドロップイン互換、マルチノード冗長構成、そして月額最低料金なしで$75/TB。

Background gradient

ブロックチェーンで魔法を生み出す

Alchemyは、最も強力なweb3開発者向けプロダクトとツールを、豊富なリソース、コミュニティ、そして卓越したサポートと組み合わせて提供します。