getBlockProduction
RPC方法提供了当前纪元或指定槽范围内的区块生产信息。它可以用于检索所有验证者或特定验证者身份的数据。这对于监控验证者性能和理解网络上的区块生产模式非常有价值。
常见用例
- 监控验证者性能: 跟踪特定验证者生产的区块数量和领导槽。
- 分析纪元性能: 获取当前或过去纪元中所有验证者的区块生产概况。
- 识别错过的槽: 查看验证者是否错过了分配的领导槽。
- 网络健康检查: 收集整体区块生产效率的数据。
请求参数
getBlockProduction
方法接受一个可选的配置对象,包含以下参数:
commitment
(string, optional): 指定用于查询的承诺级别。如果省略,则使用节点的默认承诺。range
(object, optional): 定义要查询的槽范围。firstSlot
(u64): 要获取区块生产信息的第一个槽(包含)。lastSlot
(u64, optional): 要获取区块生产信息的最后一个槽(包含)。如果省略,将返回当前纪元到当前槽的区块生产信息。
identity
(string, optional): 验证者身份的base58编码公钥。如果提供,响应将仅包括此特定验证者的区块生产信息。如果省略,将返回指定范围(或当前纪元)内所有验证者的信息。
identity
或 range.firstSlot
中的至少一个。如果未提供 identity
,则需要 range
参数。
响应结构
JSON-RPC 响应的result
字段将是一个包含以下内容的对象:
context
(object):slot
(u64): 获取信息的插槽。
value
(object):byIdentity
(object): 一个对象,其中键是验证者身份字符串(base58 编码的公钥),值是包含以下内容的对象:leaderSlots
(u64): 在查询范围/纪元中分配给此验证者的领导插槽数量。blocksProduced
(u64): 在查询范围/纪元中此验证者生成的区块数量。
range
(object):firstSlot
(u64): 查询范围的第一个插槽。lastSlot
(u64): 查询范围的最后一个插槽。
开发者提示
- 理解纪元边界:当通过
identity
查询而没有range
时,返回的数据是当前纪元到节点最新处理的插槽。如果需要特定验证者的完整过去纪元数据,您需要确定该纪元的firstSlot
和lastSlot
。 - 节点数据可用性:历史区块生产数据的范围可能因 RPC 节点而异。非常旧的插槽范围可能在所有节点上都不可用。
- 性能监控:
getBlockProduction
是构建与验证者正常运行时间和区块生产成功率相关的仪表板或警报的关键。 - 与
getLeaderSchedule
结合使用:为了更深入的分析,您可以将getBlockProduction
数据与getLeaderSchedule
的输出相关联,以查看哪些特定的领导插槽被创建或错过。 - 身份与所有验证者:在没有
identity
的情况下查询可能会返回大量数据,特别是如果没有指定range
或指定了一个宽泛的range
。请注意响应大小和处理要求。
示例
1. 获取当前纪元的区块生产(所有验证者)
此示例获取当前纪元中所有验证者的区块生产数据。2. 获取当前纪元中特定验证者的区块生产
此示例获取当前纪元中特定验证者身份的区块生产。3. 获取特定插槽范围和验证者的区块生产
此示例获取在定义的插槽范围内特定验证者的区块生产数据。getBlockProduction
RPC 方法分析 Solana 上的区块生产有一个扎实的理解。