クイックスタート
1
アクセスの取得
Parsed Streamsはクローズドベータです。HeliusチームがプロジェクトIDをホワイトリストに追加し、接続エンドポイントを共有します。クローズドベータへの参加はこちらから申し込み。認証は、あなたのプロジェクトの API キーを
api-key クエリパラメータ(または x-api-key ヘッダー)として渡します。2
接続
wscat
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 を使用します。通知
サブスクリプションごとに一致するトランザクションごとの通知。デフォルトの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 クローズコードによって閉じられることがあります—それぞれが何を意味し、どのように回復するかについては再接続の処理を参照してください。