Skip to main content
Helius TypeScript SDK を使用するエージェント向けのベストプラクティスと推奨パターン。インストールと開始については、概要を参照してください。

エージェント向けの推奨事項

2段階のルックアップの代わりに getTransactionsForAddress を使用

getTransactionsForAddress はシグネチャのルックアップとトランザクションの取得を1回の呼び出しでサーバー側フィルタリングと組み合わせています。時間/スロットの範囲、トークンアカウントのフィルタリング、ページネーションをサポートしています。

標準送信には sendSmartTransaction を使用

自動的にシミュレーションし、計算ユニットを推定し、優先手数料を取得して確認します。ComputeBudget 命令を手動で構築しないでください — SDK が自動的にそれらを追加します。

超低遅延には Helius Sender を使用

時間が重要なトランザクション(アービトラージ、スナイピング、清算)には、sendTransactionWithSender を使用してください。これは、Helius の複数地域のインフラストラクチャと Jito を経由します。

複数の資産には getAssetBatch を使用

複数の資産を取得する場合は、バッチ処理を行ってください。ループで getAsset を呼び出さないでください。

ポーリングの代わりにウェブフックまたは WebSockets を使用

ループで getTransactionsForAddress をポーリングしないでください。サーバー間通知にはウェブフックを、クライアントサイドのリアルタイムストリーミングには WebSockets を使用してください。

ページネーション

SDK はメソッドに応じて異なるページネーション戦略を使用します。

トークン/カーソルベース(RPC V2 メソッド)

ページベース(DAS API)

tokenAccounts フィルタ

getTransactionsForAddress をクエリするとき、tokenAccounts フィルタはトークンアカウントのアクティビティを含めるかどうかを制御します:

changedSinceSlot — インクリメンタルアカウントフェッチング

changedSinceSlot は特定のスロット以降に変更されたアカウントのみを返します。同期やインデックス作成ワークフローに便利です。getProgramAccountsV2、getTokenAccountsByOwnerV2、getAccountInfo、getMultipleAccounts、getProgramAccounts、getTokenAccountsByOwner によってサポートされています。

一般的なミス

  1. transactionDetails: "full" はデフォルトではありません — デフォルトでは getTransactionsForAddress はシグネチャのみを返します。完全なトランザクションデータを取得するには、transactionDetails: "full" を設定してください。
  2. sendSmartTransaction には ComputeBudget 命令を追加しないでください — SDK が自動的にそれらを追加します。独自に追加すると重複命令やトランザクションの失敗が発生します。
  3. 優先手数料はマイクロラムポート単位です — ラムポートではありません。getPriorityFeeEstimate の値は SetComputeUnitPrice に適した単位で既に提供されています。
  4. DAS のページネーションは1始まりです — page: 1 が最初のページであり、page: 0 ではありません。
  5. blockTime は Unix 秒であり、ミリ秒ではありません — blockTime でフィルタリングする場合は Math.floor(Date.now() / 1000) を使用してください。
  6. getAsset はデフォルトでファンジブルトークンを非表示にします — それらを含めるには options: { showFungible: true } を渡してください。
  7. WebSocket ストリームはクリーンアップが必要です — 常に AbortController シグナルを使用し、接続リークを避けるために完了したときに helius.ws.close() を呼び出してください。
  8. トランザクションをフェッチする際にmaxSupportedTransactionVersion: 1を設定します。 トランザクションv1では、getTransaction、getBlock、およびgetTransactionsForAddressを使用すると、エラー-32015が発生します。v1トランザクションでは、優先手数料はmessage.transactionConfig.priorityFeeであり、lamportsでの合計です。スキャンするComputeBudget命令はありません。Transaction v1 supportを参照してください。

エラーハンドリングとリトライ

SDKは、メッセージ文字列にHTTPステータスコードが埋め込まれたネイティブErrorオブジェクトをスローします(例: "API error (429): ...")。エラーオブジェクトには.statusプロパティがないため、ステータスの検出にはメッセージ解析が必要です。