メインコンテンツへスキップ
POST
getHistoricalTokenAccountsByOwner
getHistoricalTokenAccountsByOwnerはベータ版です。パラメーター、料金、レスポンス形式、データの対応範囲は変更される可能性があります。

概要

getHistoricalTokenAccountsByOwnerは、過去のスロット時点、またはそのスロット内の特定のトランザクションの直後にウォレットが所有していたSPL TokenおよびToken-2022アカウントを返します。これはHelius独自のRPCメソッドです。標準のgetTokenAccountsByOwnerは現在の状態のみを返します。 jsonParsedエンコーディングでは、トークン数量にリクエストしたポジション時点での各ミントの小数点以下桁数が使用されるため、残高にはその時点でウォレットが保有していた数量が反映されます。 履歴は、エポック1030の開始時点の状態であるスロット444,959,999(2026年9月7日)以降で利用できます。 getHistoricalTokenAccountsByOwnerは、Businessプラン以上のmainnetで利用でき、ベータ期間中は呼び出しごとに0クレジットです。料金は変更される可能性があります。

getTokenAccountsByOwnerとの違い

  • ミントまたはプログラムのフィルターは任意です。 フィルターを指定しない場合、ウォレットが所有していたすべてのトークンアカウントを取得します。結果を絞り込むには、設定オブジェクト(第3パラメーター)でmintまたはprogramIdのいずれか一方を設定します。両方は設定できません。
  • 第2パラメーターはクエリオブジェクトです。 ミントやプログラムのフィルターではなく、履歴内のポジションを選択します。
  • result.valueはオブジェクトです。 配列ではなく、accountsとpaginationKeyを含みます。

履歴内のポジションを選択する

第2パラメーターはクエリオブジェクトです。
  • 省略または{}:リクエストしたコミットメントを上限とする、インデックス済みの最新スロットです。
  • { "slot": 445000000 }:スロット445,000,000の終了時点です。
  • { "slot": 445000000, "transactionIndex": 10 }:そのスロット内のインデックス10のトランザクションが実行された直後です。
ポジションの仕組みについては、履歴アカウントガイドを参照してください。

リクエスト例

このリクエストは、スロット445,000,000の終了時点におけるウォレットのUSDCトークンアカウントを返します。

すべてのトークンアカウントをページネーションする

結果はミント、次にトークンアカウントアドレスの順で並びます。各レスポンスはvalue.accountsと、<mint>:<tokenAccount>形式のカーソルであるvalue.paginationKeyを返します。nullになるまで、次のリクエストに渡してください。
ページが短い場合や空の場合でも、paginationKeyが含まれることがあります。末尾に到達したことを示すのは、nullのpaginationKeyのみです。
ページネーションする際は、必ずslotを明示的に渡してください。省略すると、各ページがインデックス済みの最新スロットを読み取るため、異なる時点のページが混在する可能性があります。

レスポンスを読み取る

value.accountsの各エントリには、トークンアカウントのpubkeyとaccountオブジェクトが含まれます。アカウントオブジェクトには、getAccountInfoと同じフィールドに加えて、lastUpdatedAtがあります。
  • **lastUpdatedAt.slotとlastUpdatedAt.transactionIndex**は、この状態を生成した書き込みを識別します。
  • **lastUpdatedAt.slotが444,959,999で、transactionIndexがnull**の場合、履歴の対応範囲が始まってからトークンアカウントが変更されていないことを意味します。
  • **context.slot**は、クエリしたスロットではなく、リクエストの処理時にHeliusがインデックスしていた最新スロットです。

エラー

関連メソッド

Historical Accounts Guide

履歴アカウントメソッドにおけるポジション、対応範囲、lastUpdatedAtの仕組み

getHistoricalAccountInfo

過去のスロット時点における単一のアカウントを読み取ります

getTransactionsForAddress

調査するトランザクションのスロットとtransactionIndexを検索します

getTokenAccountsByOwnerV2

ウォレットの現在のトークンアカウントをページネーションします

リクエストパラメーター

string
必須
トークンアカウントを所有していたウォレットのBase-58エンコード済みアドレスです。トークンアカウントではなく、所有者のウォレットを渡してください。
number
状態を読み取るスロットです。このスロットの終了時点におけるアカウントを返します。サポートされる最も古いスロットは、エポック1030の開始時点の状態である444959999です。省略すると、リクエストしたコミットメントを上限として、インデックス済みの最新スロットを読み取ります。
number
スロット内のトランザクションの位置です。スロットの終了時点ではなく、そのトランザクションが実行された直後のアカウント状態を返します。slotが必要です。
string
このミントのトークンアカウントのみを返します。programIdとは併用できません。
string
このトークンプログラムが所有するトークンアカウントのみを返します。mintとは併用できません。
  • TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
  • TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
string
デフォルト:"base64"
アカウントデータのエンコーディング形式です。jsonParsedでは、トークン数量にリクエストしたポジション時点でのミントの小数点以下桁数が使用されます。base58とbinaryはサポートされていません。
  • base64
  • base64+zstd
  • jsonParsed
object
各アカウントのデータの一部のみを返します。base64およびbase64+zstdエンコーディングに適用されます。
number
必須
読み取りを開始するバイトオフセットです。
number
必須
返すバイト数です。
number
デフォルト:"5000"
返すトークンアカウントの最大数です(1~5,000)。
string
前のレスポンスのpaginationKeyから取得した、&lt;mint&gt;:&lt;tokenAccount&gt;形式のカーソルです。mintも設定する場合、カーソルのミントがそれと一致する必要があります。
string
デフォルト:"finalized"
コミットメントレベルです。processedはサポートされていません。
  • finalized
  • confirmed
number
リクエストを評価できる最小スロットです。

承認

api-key
string
query
必須

Helius API キーです。ダッシュボードから無料で取得できます。

ボディ

application/json
jsonrpc
enum<string>
デフォルト:2.0
必須

JSON-RPC プロトコルのバージョンです。

利用可能なオプション:
2.0
例:

"2.0"

id
string
デフォルト:1
必須

リクエストの一意な識別子です。

例:

"1"

method
enum<string>
デフォルト:getHistoricalTokenAccountsByOwner
必須

呼び出す RPC メソッドの名前です。

利用可能なオプション:
getHistoricalTokenAccountsByOwner
例:

"getHistoricalTokenAccountsByOwner"

params
(string | クエリ · object | 設定 · object)[]
必須

所有者ウォレットのアドレス、履歴上の位置を選択する任意のクエリオブジェクト、任意の設定オブジェクトを含む配列です。

Required array length: 1 - 3 elements

トークンアカウントを所有していたウォレットの Base-58 エンコード済みアドレスです。トークンアカウントではなく、所有者ウォレットを渡してください。

例:

"86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY"

レスポンス

履歴トークンアカウントのページを正常に取得しました。

jsonrpc
enum<string>

JSON-RPC プロトコルのバージョンです。

利用可能なオプション:
2.0
例:

"2.0"

id
string

リクエストと一致する識別子です。

例:

"1"

result
object