跳转到主要内容
这个getBlockCommitment RPC方法提供有关Solana分类帐中特定区块的提交状态的信息。这对于了解一个区块的最终确定程度非常有用,根据已投票的权益来判断。

常见用例

  • 评估区块最终性: 通过检查不同确认深度的权益加权投票,确定一个区块已实现的共识水平。
  • 了解集群健康: totalStake提供有关在区块被处理时集群中的总活跃权益的洞察。
  • 高级确认逻辑: 对于需要非常具体的区块最终性保证的应用程序,超出标准提交级别的要求(confirmed, finalized)。

参数

  1. 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 为单位)。在更深的索引处的值越高表明更强的终结性。
    • 如果一个 null commitment 数组出现,这通常意味着节点没有该插槽的数据,可能是因为数据太旧或被跳过。
    • 如果 commitment[i] / totalStake >= 2/3(超级多数),则可以在深度 i 测量终结性。
  • 高级用例: getBlockCommitment 用于细致的终结性分析。在大多数常见情境中,依靠标准的承诺级别(processed, confirmed, 或 finalized)与其他 RPC 方法(如 getTransactiongetBlock)进行简单且足够的使用。
  • 理解承诺: 要充分利用 getBlockCommitment ,对 Solana 的承诺级别有一个扎实的了解是至关重要的。请参阅 Solana 承诺级别 获取详细信息。
  • 修剪: 请注意,RPC 节点可能会修剪旧的承诺信息,导致旧插槽出现 null 结果。

示例:获取区块承诺信息

让我们尝试获取一个说明性插槽编号的承诺信息,使用 Devnet。 重要: 插槽编号快速处理。以下使用的插槽编号(250000000)是一个占位符。运行示例时,应将其替换为您知道在目标网络(例如 Devnet 或 Mainnet)上存在的最新已确认插槽。您可以使用 Solana 区块浏览器找到最新的插槽编号。 注意: 在下面的示例中,用您实际的 Helius API 密钥替换 YOUR_API_KEY
# Replace 250000000 with a valid, recent slot number on Devnet/Mainnet
curl https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY -X POST -H "Content-Type: application/json" -d \
'{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getBlockCommitment",
  "params": [
    250000000 
  ]
}'