getBlockProduction RPC方法提供了当前纪元或指定槽范围内的区块生产信息。它可以用于检索所有验证者或特定验证者身份的数据。这对于监控验证者性能和理解网络上的区块生产模式非常有价值。

常见用例

  • 监控验证者性能: 跟踪特定验证者生产的区块数量和领导槽。
  • 分析纪元性能: 获取当前或过去纪元中所有验证者的区块生产概况。
  • 识别错过的槽: 查看验证者是否错过了分配的领导槽。
  • 网络健康检查: 收集整体区块生产效率的数据。

请求参数

getBlockProduction方法接受一个可选的配置对象,包含以下参数:
  1. commitment (string, optional): 指定用于查询的承诺级别。如果省略,则使用节点的默认承诺。
  2. range (object, optional): 定义要查询的槽范围。
    • firstSlot (u64): 要获取区块生产信息的第一个槽(包含)。
    • lastSlot (u64, optional): 要获取区块生产信息的最后一个槽(包含)。如果省略,将返回当前纪元到当前槽的区块生产信息。
  3. identity (string, optional): 验证者身份的base58编码公钥。如果提供,响应将仅包括此特定验证者的区块生产信息。如果省略,将返回指定范围(或当前纪元)内所有验证者的信息。
注意: 必须提供 identityrange.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 时,返回的数据是当前纪元到节点最新处理的插槽。如果需要特定验证者的完整过去纪元数据,您需要确定该纪元的 firstSlotlastSlot
  • 节点数据可用性:历史区块生产数据的范围可能因 RPC 节点而异。非常旧的插槽范围可能在所有节点上都不可用。
  • 性能监控getBlockProduction 是构建与验证者正常运行时间和区块生产成功率相关的仪表板或警报的关键。
  • getLeaderSchedule 结合使用:为了更深入的分析,您可以将 getBlockProduction 数据与 getLeaderSchedule 的输出相关联,以查看哪些特定的领导插槽被创建或错过。
  • 身份与所有验证者:在没有 identity 的情况下查询可能会返回大量数据,特别是如果没有指定 range 或指定了一个宽泛的 range。请注意响应大小和处理要求。

示例

1. 获取当前纪元的区块生产(所有验证者)

此示例获取当前纪元中所有验证者的区块生产数据。
curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \\
  '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getBlockProduction"
  }'

2. 获取当前纪元中特定验证者的区块生产

此示例获取当前纪元中特定验证者身份的区块生产。
# Replace YOUR_VALIDATOR_IDENTITY_PUBKEY with the actual validator's base58 public key.
curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \\
  '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getBlockProduction",
    "params": [
      {
        "identity": "YOUR_VALIDATOR_IDENTITY_PUBKEY"
      }
    ]
  }'

3. 获取特定插槽范围和验证者的区块生产

此示例获取在定义的插槽范围内特定验证者的区块生产数据。
# Replace YOUR_VALIDATOR_IDENTITY_PUBKEY, START_SLOT, and END_SLOT.
curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \\
  '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getBlockProduction",
    "params": [
      {
        "identity": "YOUR_VALIDATOR_IDENTITY_PUBKEY",
        "range": {
          "firstSlot": START_SLOT, # e.g., 200000000
          "lastSlot": END_SLOT    # e.g., 200010000
        }
      }
    ]
  }'
本指南应能让您对如何使用getBlockProduction RPC 方法分析 Solana 上的区块生产有一个扎实的理解。