Skip to main content
POST
getProgramAccountsV2

概述

getProgramAccountsV2 是标准 getProgramAccounts 方法的增强版本,专为需要有效查询特定Solana程序拥有的大量账户集的应用程序而设计。此方法引入了基于光标的分页和增量更新功能。
V2 中的新功能:
  • 基于游标的分页:配置请求上限为每次1到10,000个账户
  • 增量更新:使用 changedSinceSlot 仅获取最近修改的账户
  • 更好的性能:防止超时,并减少大数据集的内存使用
  • 向后兼容:支持所有现有的 getProgramAccounts 参数
  • 可选的 withContexttrueresult.context 下添加 slotapiVersion;省略或 false 则不包含

主要优势

可扩展查询

通过有效分页处理拥有数百万个账户的程序

实时同步

使用 changedSinceSlot 进行增量更新和实时数据同步

防止超时

以前超时的大型查询现在通过分页可靠运行

内存高效

分块处理数据而不是一次性加载所有内容到内存

分页最佳实践

重要的分页行为:分页结束仅在没有返回账户时指示。由于过滤,API返回的账户可能少于限制 - 始终继续分页,直到 paginationKeynull

基本分页模式

增量更新

性能提示

最佳限制大小:对于大多数用例,每次请求 1,000-5,000 个账户的限制提供了性能和可靠性的最佳平衡。
  • 从较小的限制开始(1000),并根据网络性能增加
  • 使用合适的编码:便捷使用 jsonParsed,性能使用 base64
  • 应用过滤器在分页前减少数据集大小
  • 存储 paginationKey 以便查询中断时恢复
  • 监控响应时间并相应调整限制

withContext(可选)

布尔值在程序配置对象(params[1])上。只有 result 的形状发生变化,不改变过滤器、限制或分页。

从 getProgramAccounts 迁移

从原方法迁移非常简单 - 只需替换方法名称并添加分页参数:

相关方法

getProgramAccounts

无分页的原始方法

getTokenAccountsByOwnerV2

用于令牌账户查询的 V2 方法

请求参数

string
必填
要查询账户的 Solana 程序公钥(地址),作为 base-58 编码字符串。
string
请求的承诺级别。
  • confirmed
  • finalized
  • processed
number
请求可以评估的最小槽。
boolean
true 时,返回 result.context(快照元数据:slot, apiVersion)并在 result.value 下嵌套 accountspaginationKey。当 false 或省略时,这些字段直接出现在 result 上(例如 result.accounts)。应用相同的过滤器和限制。
string
返回账户数据的编码格式。
  • jsonParsed
  • base58
  • base64
  • base64+zstd
object
请求账户数据的切片。
number
返回的字节数。
number
开始读取的字节偏移量。
number
每个请求返回的最大账户数量(1-10,000)。
string
Base-58编码的分页游标,用于获取后续页面。使用先前响应中的paginationKey。
number
仅返回在此槽位编号处或之后修改的账户。对增量更新很有用。
array
强大的过滤系统,可高效查询特定的Solana账户数据模式。

授权

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>
默认值:getProgramAccountsV2
必填

要调用的 RPC 方法名称。

可用选项:
getProgramAccountsV2
示例:

"getProgramAccountsV2"

params
(string | object)[]
必填

增强分页方法的参数。

要查询账户的 Solana 程序公钥(地址),以 base-58 编码的字符串形式。

示例:

"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"

响应

成功检索到分页的程序账户。

jsonrpc
enum<string>

JSON-RPC 协议版本。

可用选项:
2.0
示例:

"2.0"

id
string

与请求匹配的标识符。

示例:

"1"

result
without withContext · object

分页的程序账户。当 withContext 为 false 或省略时,相同字段出现在结果中;当 withContext 为 true 时,则出现在 result.value 下。