Skip to main content
Parsed Streams が初めてですか?まずメンタルモデルを読んでください。フィルターがなぜそのように見えるのかを説明しています。

クイックスタート

1

アクセスの取得

Parsed Streamsはクローズドベータです。HeliusチームがプロジェクトIDをホワイトリストに追加し、接続エンドポイントを共有します。クローズドベータへの参加はこちらから申し込み認証は、あなたのプロジェクトの API キーを api-key クエリパラメータ(または x-api-key ヘッダー)として渡します。
2

接続

wscat
キーが欠落しているか、無効であるか、ホワイトリストに登録されていない場合は、HTTP 401 で拒否されます。プロジェクトが接続上限に達している場合は HTTP 429 になります。
3

フィルターでサブスクライブ

フィルターとオプションを使用して parsedTransactionSubscribe を送信します。
応答 result は整数のサブスクリプション ID です。
4

通知を読む

マッチするトランザクションはすべて、すでにデコードされた parsedTransactionNotification として到着し、フィルターがヒットした命令を指す matchedIndexes が含まれています。完全な形式は通知を参照してください。
5

サブスクライブ解除

または接続を閉じるだけで、すべてのサブスクリプションが削除されます。

ガイド

Jupiter Swaps を追跡

信頼できるフィルターを構築するために describeProgram を使用します。

Pump.fun Mints を追跡

各新しい Pump.fun トークンを記録する再接続対応のリスナーです。

再接続処理

アイドルタイムアウトやデプロイを乗り越え、見逃したものを正確に補完します。

プロトコルリファレンス

Parsed Streams は、単一の WebSocket 接続を通じて JSON-RPC 2.0 を使用します。各リクエストは同じ id に応じて応答します。サブスクリプションは、サブスクライブ解除または切断があるまで parsedTransactionNotification メッセージをプッシュします。

サブスクライブ

フィルターとオプションを使用して parsedTransactionSubscribe を送信します。応答 result は整数のサブスクリプション ID です。
Request
Response

フィルターフィールド

programs または accounts.include のいずれかが必要です。設定したフィールドは AND で結合されます:命令はすべてを満たす必要があります。
string[]
一致させるプログラムID(base58アドレス、名前ではありません)。インストラクションがこのリストにあるプログラムの場合に一致します。リスト内のOR。
string[]
デコードされたインストラクション名。最初に完全一致し、その後大文字と小文字を区別しないフォールバックが行われます。カタログが識別できる名前のインストラクションのみ一致しますので、名前はdescribeProgramから取ってください。
string[]
アカウントアドレス。これらのいずれかがアカウントリストに登場すればインストラクションが一致します。リスト内のOR。デコードされていないインストラクションにも機能します。プログラムID自体はここではアカウントとみなされません。
object
デコードされたアカウントロール名からアドレスへのマップ。各エントリが保持される必要があります(エントリ間でAND)。インストラクションがデコードされている必要があります。ロール名は正確に一致する必要があるので、describeProgramからコピーしてください。
boolean
デフォルト:"false"
失敗したトランザクションのインストラクションを含めます。
boolean
デフォルト:"true"
内部(CPI)インストラクションが一致対象です。トップレベルのインストラクションのみを一致させるにはfalseを設定します。
フィルターまたはオプション内の不明なフィールドは -32602 で拒否され、無視される代わりに何もマッチしません。

オプション

2番目のパラメータはオプションです。
string
デフォルト:"confirmed"
confirmed のみがサポートされています。
string
デフォルト:"full"
各通知に含まれる内容。full:トランザクション全体、すべての命令、フィルターヒットを指す matchedIndexes を含みます。matched:一致した命令のみ、インデックスリストなし。raw:一致した命令のみ、その位置に還元されて、それぞれの programId、base58 の data バイト、デコードされたフィールドなし、accountKeys 配列なし。帯域幅がコンテキストよりも重要な場合は matched、命令データを自分でデコードし、バイトのみを必要とする場合は raw を使用します。
プロジェクトは最大 100 同時接続 を保持することができ、これはすべての API キー間で共有されます。

通知

サブスクリプションごとに一致するトランザクションごとの通知。デフォルトの details: "full" とともに:
これを読む:
  • transaction は完全なコンテキストです。feeはlamportsです。accountKeysはキーリスト全体です。feePayerは常にaccountKeys[0]です。errorはJSON形式のトランザクションエラーを保持します。
  • summary は一意の形状を持ち、人間が読みやすい形式と構造化されたペイロードを含みます。各認識されたインストラクションには同じ形状のsummaryがあります。
  • nativeTransfers と**tokenTransfers**はトランザクション全体から抽出されたSOLとトークンの動きをリストします。
  • instructions は、トランザクションの全てのインストラクションです。各エントリは位置を持ちます。これらを使用し、配列位置を使用しないでください。
  • matchedIndexes はフィルタが実際にヒットしたインデックスです。
  • decoded 名はsnake_case です(例:in_amount)。u64値はJavaScriptに収まりません。
  • blockTime は現在常にnullです。
  • 一つのトランザクション内にはデコードされたインストラクションとされていないインストラクションの混在が期待されます。
details: "raw"を使用するとvalueはトランザクションメタとブロブに縮小されます。

サブスクライブ解除

サブスクリプションが存在し、自分のものであれば true を返します。通知は即座に停止します。接続を閉じるとすべてのサブスクリプションが削除されます。

発見

この種の API で最も一般的な失敗は、有効だが何も一致しないフィルターです。通常、推測された命令やロール名です。describeProgram は、マッチャーが比較する正確な名前を返すことでそれを防ぎます:
Request
Response
プログラムアドレスまたはカタログ名を渡すことができますが、住所を優先してください:名前はプログラムバージョン間で曖昧になる可能性があります(複数のカタログエントリが同じ jupiter という名前を持ちます、名前検索は古いものを解決することがあります)。名前で検索する場合は、result.id がサブスクライブしようとしているプログラムであることを確認してください。 推奨フロー:describeProgram を使用して正確な命令名とロール名を取得し、それらの名前を使用してフィルターを構築し、次にサブスクライブします。Track Jupiter Swaps ガイドはこれを端から端まで説明します。

制限

エラー

エラーは JSON-RPC 2.0 に従います:{ "error": { "code": <int>, "message": "<text>" }, "id": <id> }。メッセージは何が間違っていたか、どこで間違っていたかを正確に言います。 接続はまた WebSocket クローズコードによって閉じられることがあります—それぞれが何を意味し、どのように回復するかについては再接続の処理を参照してください。

クライアント例