メインコンテンツへスキップ
POST
getTokenAccountsByOwnerV2

概要

getTokenAccountsByOwnerV2 は、標準の getTokenAccountsByOwner メソッドを強化したバージョンで、トークンポートフォリオの効率的なクエリと広範なトークン保有を持つウォレットの処理に特化しています。このメソッドはカーソルベースのページネーションとインクリメンタルアップデート機能を導入しています。
V2の新機能:
  • カーソルベースのページネーション: 1から10,000トークンアカウントまでのリクエスト制限の設定
  • インクリメンタルアップデート: 最近変更されたトークンアカウントのみを取得するためにchangedSinceSlotを使用
  • ポートフォリオのスケーラビリティ: 数千のトークンアカウントを持つウォレットを効率的に処理
  • 後方互換性: すべての既存のgetTokenAccountsByOwnerパラメータとフィルタをサポート
  • オプションのwithContext: trueslotapiVersionresult.contextに追加します; 省略またはfalseで含まれません
フィルタ要件: クエリにはmint(特定のトークン)またはprogramId(SPLトークンまたはToken-2022プログラム)を含める必要があります。フィルタなしで所有者のすべてのトークンタイプをクエリすることはサポートされていません。

主な利点

大規模ポートフォリオ

数千のトークンアカウントを持つウォレットを時間切れやメモリ問題なしに処理

リアルタイムトラッキング

インクリメンタルアップデートのためのchangedSinceSlotを使用してポートフォリオの変化をリアルタイムで監視

withContext (オプション)

コンフィグオブジェクト (params[2]) のブール値。result の形状のみが変わり、フィルタ、制限、ページネーションは変わりません。省略またはfalse: result.valueはトークンアカウントの 配列true: result.contextresult.valueオブジェクト (accounts, paginationKey) に加えます。両方を処理する場合はArray.isArray(result.value)で分岐します。

ページネーションのベストプラクティス

重要なページネーションの動作: ページネーションの終わりはトークンアカウントが返されないときにのみ示されます。フィルタリングのために、APIは制限よりも少ないアカウントを返すことがあります - 常に paginationKeynull になるまでページネーションを続けてください。

基本的なポートフォリオクエリ

インクリメンタルポートフォリオアップデート

トークンプログラムサポート

Token-2022 サポート: TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEbprogramIdとして、転送手数料、利息付トークンなどの拡張機能を備えたToken-2022アカウントをクエリします。

getTokenAccountsByOwner からの移行

移行は簡単です - 既存のクエリにページネーションパラメータを追加してください:

関連メソッド

getTokenAccountsByOwner

ページネーションなしのオリジナルメソッド

getProgramAccountsV2

プログラムアカウントクエリのためのV2メソッド

リクエストパラメータ

address
string
必須
Solanaウォレットアドレス(アカウント所有者のpubkey)をbase-58エンコードされた文字列として指定。
mint
string
特定のトークンまたはNFTのアカウントのみを取得するための特定のSolanaトークンミントアドレス。
programId
string
トークンアカウントを作成した特定のSolanaトークンプログラムID(通常はSPLトークンプログラム)。
commitment
string
リクエストのコミットメントレベル。
  • confirmed
  • finalized
  • processed
minContextSlot
number
リクエストが評価されることができる最小スロット。
withContext
boolean
true の場合、result.context(スナップショットメタデータ: slot, apiVersion)を返し、 accountspaginationKeyをオブジェクトとしてresult.valueにネストされます。false または省略時、 result.valueはこのページのトークンアカウント配列であり、paginationKeyresultに配置されます。同じフィルタリングと制限が適用されます。
dataSlice
object
アカウントデータのスライスを要求。
dataSlice.length
number
返すバイト数。
dataSlice.offset
number
読み取りを開始するバイトオフセット。
encoding
string
アカウントデータのエンコード形式。
  • base58
  • base64
  • base64+zstd
  • jsonParsed
limit
number
リクエストごとに返されるトークンアカウントの最大数(1〜10,000)。
paginationKey
string
次のページを取得するためのBase-58エンコードされたページネーションクレデンシャル。前のレスポンスのpaginationKeyを使用。
changedSinceSlot
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>
デフォルト:getTokenAccountsByOwnerV2

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

利用可能なオプション:
getTokenAccountsByOwnerV2
:

"getTokenAccountsByOwnerV2"

params
string · object · object[]

特定の公開鍵に所有されるページネーションされたトークンアカウントを照会するためのパラメータ。

base-58でエンコードされた文字列としての、トークン保有を照会するためのアカウントオーナーのSolanaウォレットアドレス(pubkey)。

:

"A1TMhSGzQxMr1TboBKtgixKz1sS6REASMxPo1qsyTSJd"

レスポンス

所有者によるページネーションされたトークンアカウントを正常に取得しました。

jsonrpc
enum<string>

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

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

"2.0"

id
string

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

:

"1"

result
without withContext · object

withContextがfalseまたは省略されている場合のページネーションされたトークンアカウント。アカウントリストが配列としてresult.valueである一般的な形に一致します(accountsの下にネストされていません)。