Skip to main content
このガイドでは、実際のフィルターをステップバイステップで構築します:プログラムディスカバリーを使用してウォレットの木星スワップを観察し、購読を開始する前にフィルターが正しいことを確認します。
1

Look Up the Program

推測した命令名は、フィルターが何にも一致しないままになる最も一般的な原因です。まず describeProgram を呼び出し、マッチャーが比較する正確な名前を取得してください。これは現在 wss://fs-beta.helius-rpc.com/?api-key=<API_KEY> でのみ利用できるため、サブスクリプション接続ではなく、そちらに送信してください。
Request
Response
カタログ名よりもプログラムのアドレスを優先する方がよいです。同じ名前を共有するカタログエントリが複数存在することがあり、名前のルックアップはプログラムの古いバージョンに解決されることがあります。routeとshared_accounts_routeは、木星v6スワップの大部分をカバーする2つの命令なので、それらにフィルターを設定します。
2

フィルターを作成する

プログラムID、前のステップの命令名、監視するウォレットを組み合わせます。フィールドはANDで組み合わされるため、このフィルターはウォレットのSOLアカウントに関わるルート命令に一致します。
accounts.rolesは、user_transfer_authorityを命令中のウォレットの正確な位置に固定し、accounts.includeだけよりも厳密です。単なるアドレスの一致では、命令の他の場所で無関係なアカウントとしてウォレットが現れることもあります。役割名は正確に一致するため、describeProgramのrolesリストからコピーし、推測しないでください。includeCpi: true(デフォルト)はそのままにしておいてください。スワップの実際のトークン動きは内側の命令で発生します。
3

購読し、通知を処理する

フィルターを使って購読を開き、次に一致した命令のデコードされた引数を読みます。
matchedIndexes に該当する指示にのみ注目し、トランザクション内の他のすべてはスキップします。読み取る前に decoded が存在することを確認してください。インデックスされていないプログラムバージョンのルート指示は、decoded: null と生のフィールドを伴って到着します。

次のステップ

フィルターフィールドのリファレンス

すべてのフィルターフィールド、オプション、および制限。

再接続の処理

切断やデプロイを超えて、この購読を生かし続けます。