エージェント向けの推奨事項
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 によってサポートされています。
一般的なミス
-
transactionDetails: "full"はデフォルトではありません — デフォルトではgetTransactionsForAddressはシグネチャのみを返します。完全なトランザクションデータを取得するには、transactionDetails: "full"を設定してください。 -
sendSmartTransactionには ComputeBudget 命令を追加しないでください — SDK が自動的にそれらを追加します。独自に追加すると重複命令やトランザクションの失敗が発生します。 -
優先手数料はマイクロラムポート単位です — ラムポートではありません。
getPriorityFeeEstimateの値はSetComputeUnitPriceに適した単位で既に提供されています。 -
DAS のページネーションは1始まりです —
page: 1が最初のページであり、page: 0ではありません。 -
blockTimeは Unix 秒であり、ミリ秒ではありません —blockTimeでフィルタリングする場合はMath.floor(Date.now() / 1000)を使用してください。 -
getAssetはデフォルトでファンジブルトークンを非表示にします — それらを含めるにはoptions: { showFungible: true }を渡してください。 -
WebSocket ストリームはクリーンアップが必要です — 常に AbortController シグナルを使用し、接続リークを避けるために完了したときに
helius.ws.close()を呼び出してください。
エラーハンドリングとリトライ
SDK は HTTP ステータスコードをメッセージ文字列に埋め込んだネイティブのError オブジェクトをスローします(例: "API error (429): ...")。エラーオブジェクトには .status プロパティがないため、ステータスの検出にはメッセージの解析が必要です。