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

概要

getProgramAccountsV2は、特定のSolanaプログラムが所有する大量のアカウントを効率的にクエリする必要があるアプリケーション向けに設計された標準的なgetProgramAccountsメソッドの強化バージョンです。このメソッドは、カーソルベースのページネーションとインクリメンタルアップデート機能を導入します。
V2の新機能:
  • カーソルベースのページネーション: 1から10,000アカウントまでのリクエストごとの制限を設定
  • インクリメンタルアップデート: changedSinceSlotを使用して最近変更されたアカウントのみを取得
  • パフォーマンスの向上: 大規模データセットでのタイムアウトを防止し、メモリ使用量を削減
  • 後方互換性: すべての既存のgetProgramAccountsパラメータをサポート
  • オプションのwithContext: trueslotapiVersionresult.contextの下に追加します。省略またはfalseの場合、それらは含まれません

主な利点

スケーラブルなクエリ

結果を効率的にページネーションすることで、数百万のアカウントを持つプログラムを処理

リアルタイム同期

インクリメンタルアップデートとリアルタイムデータ同期のためにchangedSinceSlotを使用

タイムアウト防止

大きなクエリがページネーションで確実に動作するようになります

メモリ効率

データを一度にすべて読み込むのではなく、チャンクで処理

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

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

基本的なページネーションパターン

インクリメンタルアップデート

パフォーマンスのヒント

最適な制限サイズ: ほとんどのユースケースでは、リクエストごとに1,000〜5,000アカウントの制限が、パフォーマンスと信頼性のベストバランスを提供します。
  • 小さい制限から始める (1000) そしてネットワークパフォーマンスに基づいて増やす
  • 適切なエンコーディングを使用: jsonParsedは利便性のため、base64はパフォーマンスのため
  • フィルタを適用してページネーション前にデータセットサイズを減らす
  • paginationKeyを保存して中断した場合にクエリを再開する
  • 応答時間を監視し、制限を適宜調整する

withContext (オプション)

プログラム構成オブジェクト(params[1])でのブール値。resultの形状のみが変化し、フィルタ、制限、ページネーションは変わりません。

getProgramAccountsからの移行

元のメソッドからの移行は簡単です - メソッド名を置き換え、ページネーションパラメータを追加するだけです。

関連メソッド

getProgramAccounts

ページネーションなしの元のメソッド

getTokenAccountsByOwnerV2

トークンアカウントクエリ用のV2メソッド

リクエストパラメータ

address
string
必須
Solanaプログラムの公開鍵(アドレス)、base-58エンコードされた文字列としてクエリするアカウントです。
commitment
string
リクエストのコミットメントレベル。
  • confirmed
  • finalized
  • processed
minContextSlot
number
リクエストが評価されることのできる最小スロット。
withContext
boolean
trueの場合、インスタンスメタデータ(slotapiVersion)を返し、accountsresult.valueの下にネストします。省略またはfalseの場合、これらのフィールドはresultの上に直接表示されます(例: result.accounts)。同じフィルタと制限が適用されます。
encoding
string
返されるアカウントデータのエンコーディングフォーマット。
  • jsonParsed
  • base58
  • base64
  • base64+zstd
dataSlice
object
アカウントのデータのスライスをリクエストします。
dataSlice.length
number
返すバイト数。
dataSlice.offset
number
読み始めるバイトオフセット。
limit
number
リクエストごとに返す最大アカウント数(1〜10,000)。
paginationKey
string
次のページを取得するためのbase-58エンコードされたページネーションクルーザー。前の応答からpaginationKeyを使用します。
changedSinceSlot
number
このスロット番号以降に変更されたアカウントのみを返します。インクリメンタルアップデートに便利です。
filters
array
特定のSolanaアカウントデータパターンを効率的にクエリするための強力なフィルタリングシステム。

承認

api-key
string
query
必須

あなたのHelius API キーです。dashboardで無料で取得できます。

ボディ

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

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

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

"2.0"

id
string
デフォルト:1
必須

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

:

"1"

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

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

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

"getProgramAccountsV2"

params
(string | object)[]
必須

強化されたページネーションメソッドのパラメータ。

ベース58エンコードされた文字列としてのSolanaプログラム公開鍵(アドレス)で、アカウントを照会します。

:

"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"

レスポンス

ページネートされたプログラムアカウントを正常に取得しました。

jsonrpc
enum<string>

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

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

"2.0"

id
string

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

:

"1"

result
without withContext · object

ページネートされたプログラムアカウント。withContextがfalseまたは省略された場合は同じフィールドが結果として表示され、withContextがtrueの場合はresult.value以下に表示されます。