メインコンテンツへスキップ
Preconfirmations のサブスクリプションを開始します。これは、エントリに収集されて shred に変換される前に配信されるトランザクションです。Helius が提供するトランザクションシグナルの中で、レイテンシーが最も低いものです。1 つのサブスクリプションで、Helius の Preconfirmations と BAM の Preconfirmations の両方をストリーミングします。Helius の Preconfirmations は、リーダーがトランザクションを実行した瞬間に、その実行ステータスとともに送信されます。BAM の Preconfirmations は、バリデータがトランザクションの実行を確約した時点で送信されます。いずれかのソースを選択するには、includeSource を使用します。

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
必須
api-key クエリパラメーターとして渡す Helius API キーです。Preconfirmations はすべての有料プランで利用できます。

Body

array
オプション。HeliusとBAMのどちらのトランザクションも受け取るにはparamsを省略します。ストリームを絞り込むには、最初の要素としてフィルターオブジェクトを渡してください — フィルタリングはサーバー側で行われるため、必要なトランザクションだけに対価を払い、受け取ります。
無効なソース、公開鍵、署名、命令フィルター、またはリージョンコードを指定すると、JSON-RPC エラー -32602(無効なパラメータ)が返されます。includeSource と非推奨の includeBam フィールドを組み合わせた場合も、-32602 が返されます。命令フィルターが検査するのはトップレベル命令のみです。クロスプログラム呼び出し(CPI)を介して呼び出された命令には一致しません。memcmp の終了オフセットと dataSize は、4,096 バイトを超えてはなりません。 アカウントフィルターは、トランザクションの静的アカウントキーだけでなく、より広い範囲に一致します。Helius は v0 のアドレスルックアップテーブルをサーバー側で解決するため、accountInclude、accountExclude、accountRequired は、トランザクションが ALT を介して読み込むアカウントにも一致します。

リージョンコード

Helius の Preconfirmations では、リージョンは Helius がトランザクションを取り込んだ場所です。BAM の Preconfirmations では、Helius が取り込んだ場所ではなく、Preconfirmation を送信したリージョンの BAM エンドポイントです。BAM のシンガポールとダラスのエンドポイントは、それぞれ sgp と dal に対応します。

レスポンス

integer
サブスクリプション ID(サブスクリプション解除に必要)

通知

JSON の確認応答後、通知は(JSON ではなく)バイナリ WebSocket フレームとして配信されます。Helius と BAM の Preconfirmations は同じレイアウトを使用します。各フレームは、単一のトランザクションを格納したパック済みバイトレイアウトです。 ペイロードにはソースフィールドがありません。他のソースも 0 を報告する可能性があるため、tx_index = 0 から BAM 由来だと推測しないでください。
必ず最初に version バイトを読み取り、確認してください。 現在は 1 です。 Helius がペイロード形式を更新する必要がある場合、バージョンが増加します。スキーマが変更されても デコーダーが引き続き動作するように、バージョンに基づいて処理を分岐してください。
Preconfirmation は早期シグナルであり、保証ではありません。トランザクションはまだオンチェーンに取り込まれておらず、失敗または破棄される可能性があります。最終確定として扱う前に、標準のコミットメントチェックで取り込みを確認してください。

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

トランザクションのバイト列は、バリデータがシリアライズしたものが、トランザクションのバージョンに対応する標準ワイヤーエンコーディングのまま転送されます。レガシーおよび v0 トランザクションは、bincode が生成する署名優先レイアウトを使用します。トランザクション v1(SIMD-0385)は、末尾に署名を配置するメッセージ優先レイアウトを使用するため、bincode は v1 ペイロードで失敗します。 すべてのバージョンを処理できるデコーダーを使用してください。Rust では、agave-transaction-view がレガシー、v0、v1 のトランザクションをインプレースで解析できるため、推奨オプションです。現行の Solana SDK VersionedTransaction と wincode の組み合わせも使用できます。JavaScript では、使用するライブラリのバージョンがトランザクション v1 をサポートしていることを確認してください。Rust の例については、ガイドを参照してください。

重複通知

Helius と BAM の Preconfirmations は、ソースをまたいでではなく、ソースごとに重複排除されます。一部のトランザクションは両方を介して Helius に到達するため、同じ署名を 2 回受信する場合があり、2 つのコピーが異なるスロットを報告することもあります。クライアント側で署名に基づいて重複を排除し、トランザクションによってトリガーされるアクションを冪等にしてください。ガイドを参照してください。

料金

Preconfirmations は、Developer、Business、Professional、Enterprise のすべての有料プランで利用できます。無料プランは対象外です。詳細については、クレジットをご覧ください。 メッセージが配信されなかったスロットのクレジット消費は、そのスロットが Preconfirmations のカバレッジ対象であってもゼロです。スロットで少なくとも 1 件のメッセージが配信された場合、開いている各 preconfSubscribe サブスクリプションには、300 クレジットまたは配信メッセージ 1 件あたり 10 クレジットのいずれか多い方が請求されます。カバレッジ対象外のスロットは無料です。ソースおよびリージョンごとの課金対象条件については、料金をご覧ください。 同時実行される各サブスクリプションは、少なくとも 1 件のメッセージを受信すると、それぞれ個別に課金されます。不要になったサブスクリプションは、preconfUnsubscribe で閉じてください。includeSource: ["helius"] を指定すると、BAM のみを対象とするカバレッジ対象スロットは課金から除外されます。regionInclude を設定すると、選択したリージョン外のカバレッジ対象スロットは、そのサブスクリプションでは無料になります。一致するスロットは、サブスクリプションが少なくとも 1 件のメッセージを受信した場合にのみ課金されます。 課金は一意の署名単位ではなく、メッセージ単位です。Helius と BAM の両方から配信されたトランザクションは、2 件としてカウントされます。Helius の Preconfirmations のみが必要な場合は、includeSource: ["helius"] を設定してください。
コストを管理するには、可能な場合はアカウントフィルターを 1 つのサブスクリプションにまとめ、regionInclude を使用して必要なリージョンのみに課金を限定し、BAM が不要な場合は includeSource: ["helius"] を設定してください。また、Helius Dashboardでクレジットを監視してください。

関連情報

Preconfirmations Overview

Preconfirmations とは何か、バリデータパイプラインのどこに位置するかを説明します。

preconfUnsubscribe

ID を指定してサブスクリプションを停止します。