メインコンテンツへスキップ
LaserStreamはGeyserノードとまったく同じ配信保証を提供します。このガイドでは、LaserStreamストリームのメッセージ配信の動作について何を期待できるかを説明します。
これらの保証は標準サブスクリプション(トランザクション、アカウント、スロット、ブロック)に適用されます。事前処理されたトランザクション(シュレッド配信の一部)は、別のベストエフォート配信保証の下で動作します。

1回だけの配信

LaserStreamは1回だけの配信を保証します。各メッセージはストリームに1度だけ配信され、重複したメッセージを受け取ったり、メッセージがスキップされることはありません。 LaserStreamは複数のSolanaノードに同時に接続し、ストリームに転送する前に受信データを重複排除することでこれを実現します。このマルチノードアーキテクチャにより、単一障害点が排除され、最大の稼働時間が確保され、配信の正確性が損なわれることはありません。

認識レベルによるメッセージ順序付け

配信の順序付けはメッセージの認識レベルに依存します。

確認済みと最終化済み

すべての確認済みおよび最終化済みメッセージは順序通りに配信されます。これらの認識レベルにより、オンチェーン状態の一貫した連続的なビューを提供します。

処理済み

すべての処理済みメッセージは、フォークがない限りスロットの昇順で送信されます。フォークが発生した場合、ネットワークが正史チェーンに再編成されるため、スロット順序が一時的に逸脱することがあります。フォークが解決されると、昇順が再開されます。
処理済みの認識レベルでは、処理されたスロットが後にスキップされたりフォークされたりする可能性がわずかにあります。Geyserはフォークによって取り消された更新に対して明示的なロールバック通知を送信しません。アプリケーションが処理レベルのデータを消費する場合、いくつかの更新が最終的に放棄されたスロットに属している可能性があることを考慮する必要があります。確実性を必要とするアプリケーションには、確認済みまたは最終化済みの認識レベルを使用してください。

スロット内の順序付け

単一スロット内では、LaserStreamはアカウントの更新とトランザクションを次の保証とともに配信します。

アカウント更新がトランザクションより先

各トランザクションについて、それが引き起こすアカウント更新はトランザクション自体よりも先に配信されます。

トランザクション間の順序付け

LaserStreamはAgaveのGeyserプラグインと同じ順序を維持します。異なるトランザクションからの更新が決定論的な順序で到着するかどうかは、その書き込みロックに依存します。
  • 同じ書き込みロック(例:同じRaydiumプールでの3つの取引):常に決定的です。Agaveがこれらを同じアカウントに書き込むため逐次実行します。
  • 異なる書き込みロック(例:2つの無関係なトランザクション):必ずしも決定的ではありません。Agaveはこれらを並行して実行でき、その更新がストリーム内で混ざる可能性があります。
ブロック/トランザクションインデックスをトランザクションデータから使用して、書き込みロックに関係なく、完全に決定論的な順序を再構築します。

書き込みバージョンの正規化

LaserStreamはそのマルチノードアーキテクチャ全体で書き込みバージョンを正規化します。生のGeyserやYellowstoneとは異なり、書き込みバージョンは各ノードでローカルで異なることがありますが、LaserStreamは、処理レベルのアカウント更新の順序付けに信頼できる一貫した書き込みバージョンを提供します。
一時的な例外: 512KBを超えるアカウントはパフォーマンス上の理由からGeyserプラグインで現在バッファリングされており、それらのアカウントに対する決定的な順序付けに影響を与える可能性があります。この制限はすぐに削除される予定です。

スロット通知

処理済みスロット通知は、そのスロットに対するすべてのメッセージが配信された後に到着します。つまり、処理済みスロット通知を受け取った場合、そのスロットに関連するすべてのトランザクションおよびアカウント更新データがすでにストリームに送信されていることを確認できます。スロット通知を、スロットデータをフラッシュまたはリリースするためのシグナルとして使用できます。

切断時のデータの継続性

LaserStreamは最近のスロットデータのバッファを維持し、過去24時間(約216,000スロット)のデータを履歴再生できます。アプリケーションが切断した場合、再接続して最後に処理されたスロットからデータを逃すことなく再開できます。 LaserStream SDKクライアントを使用する場合、このリカバリは自動的に処理されます。クライアントはスロット番号によってストリーミング位置を追跡し、シームレスに再接続します。手動の再接続ロジックは不要です。

認識レベルの参照