メインコンテンツへスキップ
Enhanced Transactions APIはメンテナンスモードのレガシープロダクトです。動作はしますが、新しいパーサータイプや機能は追加されません。新しいビルドには、トランザクション履歴とバックフィルにはgetTransactionsForAddressを、人が読みやすいウォレットデータの取得にはWallet APIを使用してください。

概要

Transaction Historyエンドポイントは、任意のSolanaアドレスの人が読みやすい取引履歴を返します。生のインストラクションデータやアカウントリストを扱う代わりに、構造化された情報を取得できます。
  • 取引で何が起こったか(転送、スワップ、NFT活動)。
  • 関与したアカウント。
  • 転送されたSOLまたはトークンの量。
  • 関連するメタデータ(トークンミントアドレス、トークン名、トークンシンボルなど)。
[GET]リクエストを[/v0/addresses/{address}/transactions]に送信します。このエンドポイントはgetTransactionsForAddressRPCメソッドによって駆動されています。

使用タイミング

  • アドレスの取引履歴をユーザーに表示する(ウォレット、ポートフォリオトラッカー、エクスプローラ)。
  • 自分のデコーダーを作成することなく、事前解析済みの人が読みやすい履歴が必要。
  • 取引タイプ、時間範囲、またはスロット範囲で履歴をフィルタリングする必要がある。
  • ウォレットの完全なトークン履歴、関連するトークンアカウント(ATA)を含む必要がある—下記参照。
新しいビルドには、サーバーサイドフィルタリングとトークンアカウントのルックアップが備わったモダンなHeliusネイティブパスであるgetTransactionsForAddressを使用してください。

クイックスタート

1

APIキーを取得

dashboard.helius.devでサインアップしてAPIキーをコピーします。
2

アドレストランザクションエンドポイントを取得

任意のSolanaアドレスの取引履歴を取得します。
3

フィルタリングとページネーション

以下の[type]、時間、スロットフィルタで結果を絞り、高ボリュームアドレスをシグネチャカーソルでページ送りします。

ネットワークサポート

リクエストパラメータ

時間に基づくフィルタリング

スロットに基づくフィルタリング

フィルタリングの注意:
  • 時間パラメーターはUnixタイムスタンプ(エポック以降の秒数)を使用し、スロットパラメーターはSolanaスロット番号を使用します。
  • 同一リクエストで時間ベースとスロットベースのフィルタを組み合わせることはできません。
  • 昇順には[sort-order=asc]、降順には[sort-order=desc]を使用します。
  • おおよその期間を知っているときは時間またはスロットフィルタを使用し、[limit]と組み合わせてページサイズを制御します。

関連トークンアカウント

Solanaでは、ウォレットはトークンを直接保持しません。代わりにウォレットはトークンアカウントを所有し、そのトークンアカウントがトークンを保持します。例えば、USDCが送られてくると、それはウォレットのメインアドレスではなくUSDCトークンアカウントに入ります。 このエンドポイントは、ウォレットの完全なトークン履歴をクエリできる点がユニークであり、関連するトークンアカウント(ATA)を含みます。ネイティブRPCメソッドのような[getSignaturesForAddress]にはATAが含まれていません。 [token-accounts]フィルタはこの動作を管理します。
  • [none](デフォルト)—ウォレットアドレスを直接参照する取引のみを返します。ウォレットの直接インタラクションのみを気にする場合に使用します。
  • [balanceChanged](推奨)—ウォレットアドレスを参照するかウォレットが所有するトークンアカウントの残高を変更する取引を返します。スパムや関連性のない操作(手数料の徴収や委任など)を除外し、意味のあるウォレット活動をクリーンに表示します。
  • [all]—ウォレットアドレスまたはウォレットが所有するトークンアカウントを参照するすべての取引を返します。
[token-accounts]フィルタはトークンバランスメタデータの[owner]フィールドに依存しており、スロット111,491,819(~2022年12月)以前には利用できませんでした。このスロット前にアクティブなトークンアカウントを含むトランザクションは、[balanceChanged]と[all]結果から欠落する可能性があります。getTransactionsForAddressのチュートリアルに、完全なコード例を伴う回避策があります。

フィルター

トランザクションタイプでフィルター

NFT販売、トークン転送、スワップなど、特定の取引タイプのみを取得します。
サポートされている取引タイプの完全なリストについては、Transaction History APIリファレンスを参照してください。

ランタイムタイプフィルタリング

タイプフィルタリングはランタイムで行われます:APIは順にトランザクションを検索し、少なくとも50件のマッチングアイテムを見つけるまで続けます。検索ウィンドウ内で一致が見つからない場合、検索を続けるためのシグネチャを伴うエラーを返します。これは期待される動作であり、失敗ではありません。
現在の検索ウィンドウ内で一致するトランザクションが見つからない場合、APIは次のようなエラーレスポンスを返します。
続行するには、エラーメッセージからのシグネチャを使用し、次回のリクエストで適切なパラメータ(降順には[before-signature]、昇順には[after-signature])を使用してください。
キーとなるポイント:
  • タイプフィルタを使用すると、APIは一度に最大50件のトランザクションを検索します。
  • 一致が見つからなかった場合、次回の検索を続行するためにエラーメッセージからのシグネチャを使用します。
  • 降順で検索する場合は[before-signature]を使用します(デフォルト、新しい順)。
  • 昇順で検索する場合は[after-signature]を使用します(古い順)—年代順の検索には必須です。
  • 無限ループを防ぐために最大リトライ制限を実装します。

以下のシナリオは、時間とスロットの範囲、ソート順序、ATA、および複合フィルターをカバーします。
特定の時間ウィンドウ内のトランザクションを取得します。
特定のスロット範囲内のトランザクションを取得します。
昇順(古い順)でトランザクションを取得します。
関連トークンアドレス(ATA)を含むウォレットの完全な履歴をクエリします。
時間範囲とカスタムソート順序でタイプフィルタリングを組み合わせます。

ページネーション

高ボリュームのアドレスでは、各バッチの最後のシグネチャをカーソルとして使用して結果をページングします。
時間範囲内でページネーションを行うには、各リクエストで時間フィルタを維持し、各ループで[before-signature]カーソルを進めます。

次のステップ

getTransactionsForAddress

トランザクション履歴とバックフィルのモダンなHeliusネイティブ代替品。

Wallet API

RESTエンドポイントで人が読みやすいウォレットデータを提供:残高、履歴、転送。

Parse Transactions

1つ以上の取引シグネチャを解析して人が読みやすいデータに変換します。

Getting Data overview

SolanaデータをクエリするためのHeliusオプションすべてを比較。