Skip to main content
Preconfirmationsへの購読を開始します — エントリに収集されシュレッドに変換される前のスケジュールされたトランザクション段階で配信されるトランザクションです。これはHeliusが提供する最も低遅延のトランザクション信号です。1回の購読でHeliusプレコンファメーションとBAMプレコンファメーションの両方をストリームします; includeBam: falseを設定してHeliusプレコンファメーションのみを受け取ります。

Endpoints

preconfSubscribe is served from the Helius Gatekeeper endpoint:
  • wss://beta.helius-rpc.com/?api-key=<API_KEY>
The beta hostname refers to the Gatekeeper rollout, not the maturity of Preconfirmations — it will become the standard endpoint as traffic migrates to Gatekeeper.
ストリームは連続していません。HeliusまたはBAMを実行するネットワークステークのシェアに応じてカバレッジがスケールするため、メッセージのないスロットが発生することを予測し、これらのギャップを優雅に処理します。詳細はCoverageをご覧ください。

Authorizations

string
必須
Your Helius API key, passed as the api-key query parameter. Requires a Professional plan or higher.

Body

array
オプションです。paramsを省略すると、HeliusとBAMからのすべてのスケジュールされたトランザクションを受け取ります。ストリームを狭めるために、最初の要素としてフィルターオブジェクトを渡します—フィルタリングはサーバー側で行われるため、関心のあるトランザクションのみを受け取り、支払うだけです。
無効なアカウント値または認識されない地域コードは、JSON-RPCエラー-32602(無効なパラメータ)を返します。 アカウントフィルターは、トランザクションの静的なアカウントキー以上のものに一致します — Heliusはサーバー側でv0 アドレスルックアップ表を解決し、accountIncludeaccountExclude、およびaccountRequiredもトランザクションがALTを通じてロードするアカウントに一致します。

地域コード

Heliusプレコンファメーションの場合、地域はHeliusがトランザクションを取り込んだ場所です。BAMプレコンファメーションの場合、それはプレコンファメーションを発行した地域のBAMエンドポイントであり、Heliusがそれを取り込んだ場所ではありません。BAMのシンガポールおよびダラスのエンドポイントはsgpおよびdalにマップされます。

レスポンス

integer
購読ID(購読解除に必要)

通知

JSONの受理通知後、通知はバイナリのWebSocketフレームとして配信されます(JSONではありません)。HeliusとBAMプレコンファメーションは同じレイアウトを共有しています。各フレームは1つのスケジュールされたトランザクションを運ぶパックされたバイトレイアウトです。 ペイロードにソースフィールドはありません。Heliusプレコンファメーションも同じ値を持つことができるため、tx_index = 0およびstatus = 2からBAMの起源を推測しないでください。
実行ステータスを持っているのはHeliusプレコンファメーションのみです。 Helius プレコンファメーションはバリデーターが提供する場合に0(失敗)や1(成功)を報告し、利用 できない場合にのみ2を報告します。BAMプレコンファメーションは常に 2(不明)を報告するため、statusだけでBAM由来の トランザクションが成功したかどうかを判断することはできません。実行ステータスに依存する戦略を立てる場合は、 includeBam: falseを設定するか、オンチェーンで結果を確認してください。
常にversionバイトを最初に読み取り、チェックしてください。 現在は1です。もし Heliusがペイロードフォーマットを更新する必要が生じた場合、バージョンがインクリメントされます — スキーマの変更に応 じてデコーダーが動作を維持するようにブランチしてください。
プレコンファメーションは初期のシグナルであり保証ではありません。トランザクションはまだオンチェーンに着地しておらず、失敗したりドロップされたりすることがあります。最終的なものとみなす前に、標準のコミットメントチェックを通じて着地を確認してください。

トランザクションのデコード

トランザクションのバイトは、バリデーターがシリアライズしたとおりに正確に転送され、トランザクションのバージョンに対する標準のワイヤーエンコーディングでエンコードされています。レガシーおよびv0のトランザクションはbincodeが生成するシグネチャ優先レイアウトを使用します。トランザクションv1(SIMD-0385)はメッセージ優先レイアウトで、シグネチャは末尾に置かれ、bincodeはv1ペイロードに対しては機能しません。 すべてのバージョンに対応するデコーダを使用してください。Rustでは、agave-transaction-viewはレガシー、v0、およびv1トランザクションをその場でパースし、推奨オプションです; wincodeは現在のSolana SDK VersionedTransactionでも機能します。JavaScriptでは、必ずライブラリバージョンがトランザクションv1をサポートしていることを確認してください。Rustの例はガイドをご覧ください。

重複通知

HeliusとBAMプレコンファメーションはソースごとに重複排除され、ソース全体ではありません。少量のトランザクションが両方の経路でHeliusに届くことがあるため、同じシグネチャを2回受け取ることができ、2つのコピーが異なるスロットを報告する可能性があります。クライアントでシグネチャによる重複排除を行い、トランザクションをトリガーとしてアクションを冪等にしてください。詳細はガイドをご覧ください。

価格

プレコンファメーションはプロフェッショナルプラン以上が必要で、1メッセージにつき10クレジットかかります—1メッセージはストリームされたトランザクションごとです。詳細はクレジットをご覧ください。 請求はユニークなシグネチャごとではなく、メッセージごとに行われます。HeliusとBAMの両方から配信されたトランザクションは2回カウントされます。includeBam: falseを設定すれば、Heliusプレコンファメーションのみを受け取ることができます。

関連

プレコンファメーション概要

プレコンファメーションとは何か、およびバリデーターパイプラインのどこに位置するかを説明します。

preconfUnsubscribe

idで購読を停止します。