メインコンテンツへスキップ
LaserStream SDK を使用して、すべての Pump.fun アカウントの更新とトランザクションをリアルタイムでストリームします。このページでは、エンドツーエンドで実行できる完全な TypeScript スクリプトを説明します:各トランザクションが着地するたびに印刷し、1分ごとにロール統計(スループット、ユニークな手数料支払者、SOLでの総手数料)を報告し、再接続を自動で保持します。 これは、取引ボット、分析ダッシュボード、アラートパイプラインのような Pump.fun の継続的な可視性を必要とするものの有用な出発点です。データの形を探求し、その上に何か特化されたものを構築することもできます。
前提条件: Helius API key (Mainnet LaserStream 用のビジネスまたはプロフェッショナルプラン)と Node.js 18+。アカウントサブスクリプショントランザクションモニタリング に精通していると役立ちますが、必須ではありません。

セットアップ

新しいプロジェクトを作成し、SDK + bs58 (トランザクション署名をデコードするために使用)をインストールし、APIキーを設定します:
このスクリプトが実行される場所に最も近いエンドポイントを選択します — LaserStream 地域を参照してください。

スクリプト

これを index.ts として保存し、npx ts-node index.ts を実行します:

スクリプトの機能

一つのサブスクリプション、二つのフィルターブロック

一つの subscribe(...) 呼び出しには、二つの名前付きフィルタグループがあります:
  • accounts フィルターは、Pump.fun プログラムによって所有されるすべてのアカウント(ボンディングカーブ、ミント状態など)を、そのデータが変更されるたびに受け取ります。
  • transactions フィルターは、Pump.fun プログラムと相互作用するすべてのトランザクションを受け取ります。vote: false, failed: false フラグは、処理される前に投票や失敗したトランザクションを取り除きます。
どちらも単一の gRPC ストリームを介して到着するため、SDK は管理する接続が一つだけです。万が一切断されても、SDK は自動的に再接続し、両方のフィルターからの更新を受け取り続けます。

生データの読み込み

ペイロード内のいくつかの値は、使いやすくするために少し変換が必要です:
  • tx.signatureBuffer です。これを bs58.encode(...) を通じて実行すると、エクスプローラーや getTransaction 応答で見る base58 署名が得られます。
  • tx.meta.fee は u64 が文字列として格納されており、JavaScriptでの計算における精度の損失を防ぐためにNumber.MAX_SAFE_INTEGER より大きな値を保持します。計算を行う前に Number(...) でこれをラップします。同じ文字列-対-u64 の規則は、複数のブロックレベルのフィールドにも適用されます — 完全なデータ形状については スロット & ブロックモニタリング を参照してください。

ロール統計

setInterval は、60秒ごとにスナップショットを印刷します:総取引、成功と失敗の比率、スループット、ユニークな手数料支払者、SOLでの総手数料。スクリプト終了前に最後のスナップショットを取得するには、Ctrl+C を押します。

スクリプトの拡張

さらに進めるための方向性:
  • インストラクション識別子をデコード して取引を buy / sell / create としてラベル付けする — 分析パターンについては トランザクションデータのデコード を参照してください。
  • ロール統計をデータベースに永続化 する(Postgres, Redis, ClickHouse)インメモリの Set / カウンターの代わりに使用します。
  • しきい値に達した際にアラート を設定する — 大規模な手数料支払者、突然のボリュームスパイク、新しいボンディングカーブアカウント。
  • 起動時に見逃した活動を再生 するには、SubscribeRequestfromSlot を設定します(過去24時間まで — 履歴再生 を参照)。
  • スロット & ブロックモニタリングと組み合わせて ブロックレベルでのコンテキストを追加します。

次のステップ

トランザクションモニタリング

このスクリプトが使用する一般的なトランザクションフィルタリングパターン。

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

バイナリトランザクションペイロードを読みやすい Solana トランザクションに解析します。

アカウントサブスクリプション

特定のアカウント状態の変更をフィルターで監視します。

履歴再生

開始スロットから過去24時間の Pump.fun アクティビティを再生します。