getBalance
RPC 方法是一个简单的方法,用于查询 Solana 区块链上任何账户的原生 SOL 余额。它返回以 lamports 为单位的余额(1 SOL = 1,000,000,000 lamports)。
如果您只需要 SOL 余额而不需要其他账户详细信息,此方法比 getAccountInfo
更轻量。
主要用例
- 快速检查账户的 SOL 持有量: 主要用途是确定一个账户(钱包、程序等)持有多少 SOL。
参数
-
publicKey
(字符串,必需):要查询的账户的 base-58 编码公钥。 -
config
(对象,可选):一个包含以下字段的配置对象:commitment
(字符串,可选):指定用于查询的承诺级别。默认为finalized
。finalized
:节点将查询由集群的超级多数确认已达到最大锁定的最新区块。confirmed
:节点将查询由集群的超级多数投票的最新区块。processed
:节点将查询其最新的区块。请注意,该区块可能不完整。
minContextSlot
(数字,可选):请求可以评估的最小槽位。
响应
JSON-RPC 响应的result
字段将是一个包含以下内容的对象:
context
(对象):slot
(数字):检索余额的槽位。apiVersion
(字符串,可选):RPC API 版本(可能并非所有节点都存在)。
value
(数字):账户的余额,以 lamports 为单位(无符号 64 位整数)。
getBalance
通常会返回一个值 0
lamports。
示例:获取账户余额
让我们检查主网上 Serum Program V3 ID (9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin
) 的 SOL 余额。此程序账户本身持有 SOL 以免租金。
注意: 在下面的示例中,将 YOUR_API_KEY
替换为您实际的 Helius API 密钥。
开发者提示
- SOL 余额的简便性: 如果您只需要账户的 SOL 余额而不需要其他链上数据(如所有者、数据或可执行状态),
getBalance
比getAccountInfo
更高效,因为它获取的数据更少。 - 不存在的账户: 如果账户在链上不存在(从未初始化或没有 SOL),
getBalance
将返回0
。如果您只关心 SOL 余额,这可以是检查账户存在性的快速方法。 - Lamports 与 SOL: 请记住,余额以 lamports 返回。您需要除以
LAMPORTS_PER_SOL
(1,000,000,000) 将其转换为 SOL。 - 承诺级别: 选择
commitment
会影响您获取余额的速度以及余额的确认程度。对于大多数 UI 显示目的,confirmed
提供了良好的平衡。对于关键的金融交易,finalized
提供了最高的保证。有关详细信息,请参阅 Solana 承诺级别。 - 使用
getMultipleAccounts
进行批处理: 虽然getBalance
适用于单个账户,但如果您需要多个账户的余额,使用getMultipleAccounts
然后从每个账户的信息中提取 lamport 余额可能比多个单独的getBalance
调用更高效。