getBlockCommitment RPC方法提供有关Solana分类帐中特定区块的提交状态的信息。这对于了解一个区块的最终确定程度非常有用,根据已投票的权益来判断。
常见用例
- 评估区块最终性: 通过检查不同确认深度的权益加权投票,确定一个区块已实现的共识水平。
- 了解集群健康:
totalStake提供有关在区块被处理时集群中的总活跃权益的洞察。 - 高级确认逻辑: 对于需要非常具体的区块最终性保证的应用程序,超出标准提交级别的要求(
confirmed,finalized)。
参数
slot(number, required):要查询提交信息的区块的槽号(u64)。
响应
JSON-RPC响应的result字段将是一个包含以下内容的对象:
commitment(array of u64 integers | null):- 一个u64整数数组,其中每个整数表示在特定确认深度上对区块投票的集群权益量(以lamports计)。
- 数组通常有32个元素(代表深度0到
MAX_LOCKOUT_HISTORY,即31)。 - 数组的索引
i显示对区块投票的权益,包括对区块本身及其后代区块达到i层深的投票。 - 如果未找到区块或其提交信息不可用(例如,被删除的太老的提交追踪),此字段将为
null。 totalStake(number):- 在此区块被处理时,集群中的总活跃权益(以lamports计)。此值用于计算对区块提交的权益百分比。
开发者提示
- 解释
commitment数组:commitment数组显示了在不同确认深度下为区块投票的抵押(以 lamports 为单位)。在更深的索引处的值越高表明更强的终结性。- 如果一个
nullcommitment数组出现,这通常意味着节点没有该插槽的数据,可能是因为数据太旧或被跳过。 - 如果
commitment[i] / totalStake >= 2/3(超级多数),则可以在深度i测量终结性。
- 高级用例:
getBlockCommitment用于细致的终结性分析。在大多数常见情境中,依靠标准的承诺级别(processed,confirmed, 或finalized)与其他 RPC 方法(如getTransaction或getBlock)进行简单且足够的使用。 - 理解承诺: 要充分利用
getBlockCommitment,对 Solana 的承诺级别有一个扎实的了解是至关重要的。请参阅 Solana 承诺级别 获取详细信息。 - 修剪: 请注意,RPC 节点可能会修剪旧的承诺信息,导致旧插槽出现
null结果。
示例:获取区块承诺信息
让我们尝试获取一个说明性插槽编号的承诺信息,使用 Devnet。 重要: 插槽编号快速处理。以下使用的插槽编号(250000000)是一个占位符。运行示例时,应将其替换为您知道在目标网络(例如 Devnet 或 Mainnet)上存在的最新已确认插槽。您可以使用 Solana 区块浏览器找到最新的插槽编号。
注意: 在下面的示例中,用您实际的 Helius API 密钥替换 YOUR_API_KEY。