新登場:Solana Privacy Ringsがmainnetで利用可能になりました
LaserStream のご紹介
ブログ/更新情報

LaserStream のご紹介:次世代の Solana データストリーミング

シニアソフトウェアエンジニア、HeliusXのPedro ManticaLinkedInのPedro Mantica
インテグレーションエンジニアXのGuneyLinkedInのGuney
読了時間:5分
目次

    LaserStream は、専用ノードで稼働する gRPC のドロップイン代替です。48 時間分の履歴リプレイと自動再接続により、Solana 上のあらゆるチームが、専用インフラを運用する場合の数分の1のコストで、トランザクション、スロット、ブロック、アカウントの変更をストリーミングできます。

    LaserStream とは?

    LaserStream は、信頼性が高く低レイテンシな Solana データを必要とする開発者向けに特化して構築された次世代ストリーミングサービスです。トランザクション、スロット、ブロック、アカウントなどのオンチェーンイベントを、業界最高水準の信頼性、パフォーマンス、柔軟性でアプリに直接配信します。

    LaserStream は複数の Solana ノードに接続してデータを集約し、単一の専用ノードに依存することなく、フロントエンドアプリやバックエンドデータベースへストリーミングします。

    このシンプルで冗長性と拡張性に優れた構成により、専用インフラを管理する必要がなく、レイテンシがより安定し、更新を取りこぼすこともありません。

    LaserStream は履歴リプレイにも対応しています。サブスクリプションが一時停止または切断された場合でも、過去 48 時間分の履歴データを取得して追いつくことができます。

    LaserStream の仕組み

    各 LaserStream サーバーは複数の Solana ノードに接続し、受信データの重複を排除します。また、直近のスロットをバッファに保持するため、開発者は過去のスロットをリプレイできます。

    高可用性、データの正確性、スケーラビリティを確保するため、LaserStream は 7 つのリージョンにデプロイされています。各リージョンでは、冗長性を確保するために複数のサーバーが稼働しています。

    あるリージョン内のサーバーが停止すると、トラフィックはそのリージョン内で次に利用可能なサーバーへ自動的にリダイレクトされます。

    そのため、サーバーのメンテナンス中や予期しない障害時でも、アプリケーションは高品質なデータフィードへの接続を維持できます。

    LaserStream の機能

    LaserStream は専用ノードのドロップイン代替であり、gRPC を使用するプロダクトに多くの独自メリットを提供します。

    履歴リプレイと自動再接続

    WebSockets と gRPC によくある問題の一つが、ソケットの切断とデータの取りこぼしです。LaserStream は、自動再接続と履歴リプレイによってこの問題を解決します。

    LaserStream では最大 48 時間前のスロットをリプレイできるため、接続が切断されても重要なデータを失いません。再接続を管理したり、予期しない障害で取りこぼしたブロックを補完したりするためのカスタムコードは、もう必要ありません。

    高い冗長性と信頼性

    Solana データストリーミングサービスにとって、信頼性とデータの正確性は妥協できない要件です。LaserStream は、複数の Solana ノードに支えられたサーバークラスターを世界各地に分散配置しています。これにより、データストリームが中断されることなく、常に正確なデータを受信できます。

    • 世界各地に分散したクラスターによる高可用性を標準装備
    • クラスターはフランクフルト、アムステルダム、ソルトレイクシティ、東京、シンガポール、ピッツバーグ、ニューアークの 7 リージョンに分散
    • 各リージョンで複数の LaserStream サーバーを稼働
    • 耐障害性を確保するため、各サーバーを複数の Solana ノードでサポート
    • ロードバランサー経由でクライアントを自動的にリダイレクトし、シームレスなフェイルオーバーを実現

    手動のフェイルオーバーも、データ消失の心配も不要です。ストリーミングが途切れることはありません。

    ネイティブに近いパフォーマンス

    リアルタイムのデータストリーミングでは時間が重要であり、収益性の高い取引の成否を分けることがあります。

    LaserStream は、Solana が最も混雑するエポックでも、高速かつ安定して動作するよう構築されています。マルチリージョンのリレーメッシュがリアルタイムのレイテンシを継続的に確認し、各サブスクリプションを最速の経路へルーティングします。これにより、配信ジッターをミリ秒単位に抑えながら、毎秒数万件のメッセージを処理できます。

    上流ノードまたはリージョン全体に一時的な障害が発生した場合、接続は数ミリ秒で次のリレーへ切り替わり、取りこぼしたスロットを最大 48 時間分まで自動的にリプレイします。イベントを見逃すことはありません。

    その結果、欠落のない高スループットなストリームを利用でき、稼働状況ではなく戦略に集中できます。

    すぐにセットアップ可能

    これまで、トレーダーやレイテンシに敏感なアプリケーションがリアルタイム更新をストリーミングするには、Geyser プラグインを実行する専用ノードが必要でした。しかし、専用ノードの運用は複雑で時間がかかるうえ、希望するロケーションの在庫状況にも左右されます。

    LaserStream なら、gRPC ストリーム用のノードを自らプロビジョニング、設定、監視、管理する手間がなくなります。さらに、より優れたパフォーマンスと開発者に使いやすい機能を利用できます。

    LaserStream は Enhanced WebSockets および gRPC と完全に互換性のある使い慣れたインターフェースを採用しているため、現在の構成をシームレスに置き換えられます。

    複雑な移行は不要です。新しい構文も必要ありません。

    既存の gRPC URL を LaserStream URL に置き換えるだけで、最高のパフォーマンスと信頼性を体感できます。

    高度なフィルタリング

    Solana の膨大なデータを選別するには、最も重要な情報だけを受信できる、包括的で柔軟なフィルタリングオプションが必要です。

    LaserStream なら、データを正確に制御できます。特定のアカウント、アカウント所有者、トランザクションステータス、ブロックメタデータ、スロットなどで簡単にフィルタリングできます。その他の条件にも対応しています。

    より手頃な料金

    専用ノードは月額 $2,900 からで、スタートアップやコストを重視するアプリケーションには大きな負担となる場合があります。LaserStream なら、Helius の Professional プラン(月額 $999)を利用するすべてのチームが、高性能なリアルタイムデータストリームにアクセスできます。

    詳細は、プランと料金のページをご覧ください。

    LaserStream の利用を開始する方法

    以下のクイックスタートガイドでは、LaserStream SDKを通じて gRPC で接続する方法を説明します。

    gRPC クイックスタート

    以下の手順で LaserStream の利用を開始できます。

    1. 新しいプロジェクトを作成する

    コード
    mkdir laserstream-grpc-demo
    cd laserstream-grpc-demo
    npm init -y

    2. 依存関係をインストールする

    コード
    npm install helius-laserstream
    npm install --save-dev typescript ts-node
    npx tsc --init

    3. API キーを取得する

    ダッシュボードのエンドポイントページで API キーを生成し、エンドポイントを選択します。

    4. サブスクリプションスクリプトを作成する

    index.ts という名前のファイルに、次のコードを追加します。

    コード
    import { subscribe, CommitmentLevel, LaserstreamConfig, SubscribeRequest } from 'helius-laserstream'
    
    async function main() {
      const subscriptionRequest: SubscribeRequest = {
        transactions: {
          client: {
            accountInclude: [‘pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA’],
            accountExclude: [],
            accountRequired: [],
            vote: false,
            failed: false
          }
        },
        commitment: CommitmentLevel.CONFIRMED,
        accounts: {},
        slots: {},
        transactionsStatus: {},
        blocks: {},
        blocksMeta: {},
        entry: {},
        accountsDataSlice: [],
        // Optionally, you can replay missed data by specifying a fromSlot:
        // fromSlot: '224339000'
        // Note: Currently, you can only go back 48 hours
      };
    
      // Replace these values with your actual Laserstream API key and endpoint
      const config: LaserstreamConfig = {
        apiKey: 'your-api-key',
        endpoint: 'your-endpoint',
      }
    
      await subscribe(config, subscriptionRequest, async (data) => {
        console.log(data);
      }, async (error) => {
        console.error(error);
      });
    }
    
    main().catch(console.error);

    5. 実行して結果を確認する

    コード
    npx ts-node index.ts

    確定済みトランザクションにアカウント pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA が関係するたびに、コンソールにトランザクションの更新が表示されます。

    過去のデータをリプレイする場合は、fromSlot パラメーターのコメントを解除し、開始する直近のスロットを指定します。

    その他のガイドや例については、LaserStream for gRPC のドキュメントをご覧ください。

    LaserStream の提供状況

    LaserStream gRPC は、Developer プラン(月額 $49)以上を利用するすべての Helius ユーザーが Devnet で利用できます。Business プラン(月額 $499)以上のユーザーは、Mainnet でも LaserStream gRPC を利用できます。

    アップグレードまたは移行の前に Solana mainnet で LaserStream を評価したい場合は、無料トライアルをリクエストしてください。

    LaserStream のサポート

    問題が発生した場合、質問がある場合、または全般的なフィードバックをお寄せいただける場合は、DiscordまたはTelegramからお問い合わせください。ご意見を伺い、問題解決をサポートできれば幸いです。

    謝辞

    Kirill Fomichev に心より感謝します。LaserStream は、彼の優れた Richat プロジェクトをカスタムフォークしたものです。

    Heliusを購読

    Solana開発の最新情報や新しい記事の公開通知を受け取れます