Skip to main content
preprocessedSubscribe は署名されたトランザクションを processed コミットメントレベルに達する前にストリームするため、デシュレッディングのインフラを必要とせずに、トランザクションがバリデータに届くときにシュレッドからデコードされます。 このガイドでは、取引プログラムを実行前に監視し、フィードを重複排除し、サーバーのバックプレッシャー制限内に留まり、処理済みデータと照合してから実行するモニターを構築します。
事前処理されたトランザクションはすべての有料プランで利用でき、1メッセージあたり0.1クレジットがかかり、1つのAPIキーで最大10の同時接続が可能です。

サブスクリプションをターゲットに絞る

フィルターされていないストリームはありません:accountIncludeaccountRequired は少なくとも1つのアカウントをその間に指定する必要があります。取引モニターでは、取引するプログラムを含め、余計なノイズを除外してください。そうしないと余計なコストがかかります:
フィルターはANDで組み合わせられ、各リストは最大5,000のアドレスを受け入れ、Heliusはサーバー側でアドレスのルックアップテーブルを解決するため、ALTを通じてロードされたアカウントも一致します。特定のウォレットとプログラムとのインタラクションを監視するには、両方をaccountRequiredフィールドに入れます。

フレームをデコードし、署名で重複排除

通知はバイナリフレームとして届きます:73バイトのプレフィックスに続いて、bincodeでシリアル化されたトランザクションです。プレフィックスに署名が含まれているため、本体をデコードせずに重複排除できます。このストリームは複数の実行前ソースを集約しており、同じトランザクションが複数回届くことがあります:
monitor.js

受信ループをストリームより速く保つ

Heliusは遅い消費者に無期限にバッファリングしません:サーバー側で4,000以上のメッセージがバックアップされた場合、接続は終了されます。そのため、上記のハンドラは73バイトのプレフィックスのみを読み取り、エンキューするという仕様です。 デシリアライズと戦略ロジックは別のループで実行されます:
もしキューが無限に成長する場合は、フィルターを強化してください。クライアント側で破棄するトランザクションも、1件あたり0.1クレジットがかかり、バックプレッシャー制限にカウントされます。

処理済みデータと照合

事前処理されたトランザクションは、送信者が何をしようとしたかを示しますが、実際に何が起こったかは示しません。実行ステータス、残高変動、ログは含まれておらず、失敗したり、ドロップされたり、異なるフォークに着陸することがあります。配信は最善の努力で行われ、履歴のリプレイはないため:
  • あなたの戦略が何かを事実として記録する前に、transactionSubscribeprocessed または confirmed コミットメントと照合します。
  • 切断時には、隙間を受け入れながらただちに再サブスクライブしてください。バックフィルするリプレイがないためです。
  • 取引の意図ではなく、リアルタイムのアカウント状態が必要な場合、それは実行後にのみ存在します:LaserStream gRPCprocessedで使用してください。

関連ガイド

preprocessedSubscribe リファレンス

完全なペイロードレイアウト、フィルタールール、バックプレッシャー、そして価格設定

事前確認での取引

スケジューラ自体からのHeliusが提供する最早のトランザクションシグナル