常见用例
- 检查 SOL 余额: 确定任何账户的本机 SOL 余额。
- 验证账户存在性: 检查具有给定公钥的账户是否已初始化(即,是否有 lamports 或数据)。
- 检查程序账户: 检索由程序拥有的账户中存储的数据,这对于理解程序的状态至关重要。
- 识别账户所有者: 找出哪个程序是账户的所有者。这有助于确定如何解释账户的数据或它是否是系统拥有的账户。
- 检查账户是否可执行: 确定账户是否包含已部署的程序。
参数
-
publicKey(字符串, 必需): 要查询的账户的 base-58 编码公钥。 -
config(对象, 可选): 包含以下字段的配置对象:commitment(字符串, 可选): 指定用于查询的承诺级别。默认为finalized。finalized: 节点将查询被集群的绝大多数确认已达到最大锁定的最新区块。confirmed: 节点将查询由集群绝大多数投票的最新区块。processed: 节点将查询其最新区块。注意,该区块可能不完整。
encoding(字符串, 可选): 账户数据的编码。默认为base64。base58(慢)base64base64+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节点解析,这可以是一个JSON对象(例如,用于SPL Token账户)。否则,如果数据未被识别为标准布局,则可能默认为["", "base64"]或类似格式。
- 对于
executable(布尔值):如果账户包含程序,则为true,否则为false。rentEpoch(数字):账户将在下一个周期欠租金。space(数字,可选):数据的字节长度。(注意:官方Solana文档列出space,而某些RPC提供商可能会包括它。它表示分配给账户数据的总空间)。有关账户数据和反序列化的更多详细信息,请参阅我们的详细指南。
value 字段将为 null。
示例:获取账户信息
让我们在主网上获取 Serum Program V3 ID (9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin) 的信息。
注意: 在下面的示例中,将 YOUR_API_KEY 替换为您实际的 Helius API 密钥。
开发者提示
- 性能: 对于需要频繁检查多个账户的应用程序,考虑使用
getMultipleAccounts来批量请求并减少往返。 - 数据反序列化:
data字段通常需要根据拥有程序的数据结构进行反序列化。通常需要特定于程序的工具和库(例如,针对代币账户的 SPL Token 库)。我们关于账户数据反序列化的博客文章提供了有用的技术和示例。 - 速率限制: 注意 RPC 节点的速率限制,特别是在查询大量账户或频繁请求时。
- 成本管理:
getAccountInfo通常是一个低成本的查询,但频繁轮询可能会增加。优化您的查询模式。 - 明智使用
jsonParsed: 虽然jsonParsed很方便,但可能不支持所有账户类型,如果程序更新其数据结构,输出可能会改变。对于关键应用程序,使用已知布局解析二进制数据提供了更高的稳定性。 - 考虑使用
dataSlice: 如果您只需要账户数据的一小部分,则使用dataSlice来减少传输的数据量并可能降低查询成本。