了解 getAccountInfo 的使用案例、代码示例、请求参数、响应结构和提示。
getAccountInfo
RPC 方法是查询 Solana 区块链的基本工具。它允许您检索与特定账户公钥相关的所有存储信息。这包括账户的 lamport 余额、拥有它的程序、是否可执行以及其存储的数据。
publicKey
(字符串,必需):要查询的账户的 base-58 编码公钥。
config
(对象,可选):一个配置对象,包含以下字段:
commitment
(字符串,可选):指定用于查询的承诺级别。默认为 finalized
。
finalized
:节点将查询由集群的绝大多数确认的最近区块,已达到最大锁定。confirmed
:节点将查询由集群的绝大多数投票的最近区块。processed
:节点将查询其最近的区块。请注意,该区块可能不完整。encoding
(字符串,可选):账户数据的编码。默认为 base64
。
base58
(慢)base64
base64+zstd
(如果数据被压缩)jsonParsed
:如果账户数据是已知的程序状态(例如,代币账户、质押账户),节点将尝试将其解析为 JSON 结构。对于通用程序账户,这通常会回退到二进制(base64)。dataSlice
(对象,可选):将返回的账户数据限制为特定的切片。仅适用于 base58
、base64
或 base64+zstd
编码。
offset
(数字):从账户数据开始的字节数以开始切片。length
(数字):要返回的字节数。minContextSlot
(数字,可选):请求可以在其上评估的最小槽位。result
字段将包含一个具有两个主要属性的对象:
context
(对象):包含有关请求的元数据。
slot
(数字):检索信息的槽位。apiVersion
(字符串,可选):RPC API 版本。value
(对象 | null):如果账户不存在,这将是 null
。否则,它是一个包含以下内容的对象:
lamports
(数字):账户拥有的 lamports 数量(1 SOL = 1,000,000,000 lamports)。owner
(字符串):拥有此账户的程序的 base-58 编码公钥。data
(数组 | 对象 | 字符串):存储在账户中的数据。格式取决于请求中使用的 encoding
参数。
base64
(默认),base58
,base64+zstd
:这通常是一个数组 [encoded_string, encoding_format]
,例如,["string_data", "base64"]
。jsonParsed
:如果数据可被 RPC 节点解析(例如,对于 SPL Token 账户),这可以是一个 JSON 对象。否则,如果数据未被识别为标准布局,可能会默认为 ["", "base64"]
或类似情况。executable
(布尔值):如果账户包含一个程序,则为 true
,否则为 false
。rentEpoch
(数字):此账户将在下一个纪元欠租金。space
(数字,可选):数据的字节长度。(注意:官方 Solana 文档列出 space
,而一些 RPC 提供商可能会包含它。它表示为账户数据分配的总空间)。有关 账户数据和反序列化 的更多详细信息,请参阅我们的详细指南。value
字段将是 null
。
9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin
) 的信息。
注意: 在下面的示例中,将 YOUR_API_KEY
替换为您实际的 Helius API 密钥。
getMultipleAccounts
来批量请求并减少往返次数。data
字段通常需要根据所属程序的数据结构进行反序列化。通常需要特定于程序的工具和库(例如,SPL Token 库用于代币账户)。我们关于反序列化账户数据的博客文章提供了有用的技术和示例。getAccountInfo
通常是低成本查询,但频繁轮询可能会累积。优化您的查询模式。jsonParsed
: 虽然 jsonParsed
很方便,但它可能不支持所有账户类型,并且如果程序更新其数据结构,其输出可能会改变。对于关键应用程序,使用已知布局解析二进制数据提供了更高的稳定性。dataSlice
: 如果您只需要账户数据的一小部分,使用 dataSlice
来减少传输的数据量,并可能降低查询成本。