Solana Geyser gRPC - クイックスタート

SLV をインストール

bash
curl -fsSL https://storage.slv.dev/slv/install | sh

$ slv b init

slv b init
slv b init のコマンドひとつで、高速ストリーム通信を活用したSolana向けのボット開発環境をすぐに構築できます。
bash
slv b init
  • TypeScriptでGeyserを使いたい場合は geyser-ts
  • RustでGeyserを使いたい場合は geyser-rust

ICMP レイテンシープローブの送信元を許可

gRPC のリージョン選択では、ERPC が以下のプロキシホストから登録済み IP へ ICMP レイテンシープローブを送信します。記載されているすべての送信元 IP からの受信 ICMP エコー要求を許可してください。ファイアウォール(ufw、クラウドファイアウォール、セキュリティグループなど)でブロックされると、測定値が 9999ms となり、最適でないリージョンが選択される場合があります。同一リージョン内の複数の IP は、それぞれ別のプローブホストです。すべての IP を許可する必要があります。
リージョンICMP 送信元 IP
🇳🇱 Amsterdam82.21.43.34, 151.244.92.36
🇺🇸 New York151.243.244.5
🇩🇪 Frankfurt151.241.178.20, 151.241.178.34, 151.241.178.21
🇬🇧 London151.241.65.4
🇯🇵 Tokyo143.20.238.66
🇸🇬 Singapore151.245.186.2
🛰️ Far Point143.20.238.73

Burst gRPC エンドポイント

Geyser gRPC Burst は、低レイテンシな Solana ストリーム用途向けの ERPC 共用 gRPC プランです。通常の gRPC サービスと同じ Yellowstone/Geyser gRPC インターフェースを利用するため、既存の gRPC クライアントは account、transaction、slot、block の購読をそのまま利用できます。
Burst は、レイテンシーに基づくリージョン選択に、上記と同じリージョン別 ICMP プローブ送信元を使用します。以下のアドレスは Burst クライアントエンドポイントの IP であり、ICMP プローブの送信元ではありません。アウトバウンドファイアウォールが選択されたエンドポイントへの接続を制限している場合にのみ許可してください。
RegionBurst DomainIP Address
🇩🇪 Frankfurtgrpc-fra1-burst.erpc.global64.130.41.234
🇳🇱 Amsterdamgrpc-ams1-burst.erpc.global64.130.55.180
🇺🇸 New Yorkgrpc-ny6-burst.erpc.global64.130.59.217
実際に利用するエンドポイントは、IP 登録後に ERPC Web ダッシュボードに表示されるものを使用してください。Burst は full Geyser gRPC ストリームです。Direct Shreds / ShredStream は、raw shred data を扱う UDP ベースの別プロダクトです。

Geyser クライアント例 – TypeScript

  1. .env.sample のファイル名を .env に変更します
  2. .env ファイルの値を実際のものに変更してください:
ini
GEYSER_ENDPOINT=http://grpc-ams1.erpc.global
SOLANA_RPC_ENDPOINT="https://edge.erpc.global?api-key=YOUR_API_KEY"
ご注意ください:
こちらのエンドポイントはサンプルであり、そのまま使用することはできません。実際のエンドポイントはご自身で取得・設定してください。
  1. 依存パッケージをインストールし、スクリプトを実行します:
bash
pnpm i
pnpm dev
Geyser TypeScript VSCode

Geyser クライアント例 – Rust

  1. .env.sample のファイル名を .env に変更します
  2. .env ファイルの値を実際のものに変更してください:
ini
GEYSER_ENDPOINT=http://grpc-ams1.erpc.global
SOLANA_RPC_ENDPOINT="https://edge.erpc.global?api-key=YOUR_API_KEY"
ご注意ください:
こちらのエンドポイントはサンプルであり、そのまま使用することはできません。実際のエンドポイントはご自身で取得・設定してください。
  1. クライアントを実行します:
bash
RUST_LOG=info cargo run
Geyser Rust VSCode
ダッシュボードはこちら: https://dashboard.erpc.global/ja

Solana Stream SDK

Solana Stream SDK
slv b init コマンドでダウンロードされるスターターコードで使用されている Geyser アダプターは、オープンソースの Solana Stream SDK によって提供されています。
Rust と TypeScript の両方に対応しており、Geyser の購読やトランザクション処理、アカウント更新イベントのリアルタイム監視など、Solana ストリーム通信を効率的に実装できます。
スターターとして入手できるコードは、そのままこの SDK の実例となっており、自身のボット開発や独自ロジックの拡張にも活用できます。
詳細はこちらの GitHub リポジトリをご覧ください:
https://github.com/ValidatorsDAO/solana-stream