跳转到主要内容
getBlocks RPC 方法允许您检索指定起始槽和可选结束之间的已确认区块槽号列表。当您需要知道特定范围内哪些区块已被确认而不需要获取每个区块的完整内容时,这非常有用。
避免批处理以提高性能批处理归档方法会显著增加延迟。不允许超过10个请求的批处理。

常见用例

  • 识别范围内的已确认区块: 快速获取在账本中两个点之间成功确认的所有区块槽的列表。
  • 遍历区块: 使用返回的槽列表随后获取每个区块的详细信息,如果需要,可以使用getBlock
  • 基本区块审计: 验证特定范围内的区块存在。

请求参数

getBlocks方法接受以下参数:
  1. start_slot (u64, 必需): 要考虑的范围的第一个槽(包括在内)。
  2. end_slot (u64, 可选): 要考虑的范围的最后一个槽(包括在内)。
  • 如果未提供,查询将返回从start_slot到最新确认槽的区块。
  • start_slotend_slot之间的范围(或如果省略end_slot则为最新槽)不得超过500,000个槽
  1. commitment (string, 可选): 指定查询的承诺级别。如果省略,则使用节点的默认承诺。这作为配置对象中的唯一字段传递,作为最后一个参数。

响应结构

JSON-RPC响应的result字段将是一个u64整数数组。数组中的每个整数表示指定范围内的已确认区块槽号。
  • 示例:[5, 6, 7, 8, 9, 10]

示例

1. 获取特定槽范围内的区块

此示例获取槽250000000250000010之间的已确认区块槽列表。
curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
  '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getBlocks",
    "params": [
      250000000,
      250000010
    ]
  }'

2. 从起始槽到最新确认槽获取区块

此示例从260000000开始获取确认的区块槽,直到节点确认的最新区块(遵循从起始槽开始的500,000槽范围限制)。
curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
  '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getBlocks",
    "params": [
      260000000 
    ]
  }'

3. 获取具有特定承诺级别的区块

此示例使用confirmed承诺级别获取区块。
curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
  '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getBlocks",
    "params": [
      270000000,
      270000005,
      { "commitment": "confirmed" }
    ]
  }'

开发者提示

  • 范围限制: 记住500,000槽的范围限制。请求更大的范围将导致错误。
  • 节点数据可用性: 节点可能不会保留所有历史槽的信息。非常旧的start_slot值可能会返回空数组或错误,具体取决于节点的配置和账本保留。
  • 区块确认: 此方法返回确认的区块。具体的区块集合可能会根据所选的commitment级别和查询的节点而略有不同,尤其是对于非常近期的槽。
  • getBlock的互补: getBlocks通常用作识别相关区块槽的第一步,然后使用getBlock检索该列表中各个区块的完整详细信息。
  • 分页替代方案: 由于getBlocks有范围限制,如果需要扫描链的很大一部分,则需要多次调用getBlocks,将所需的总范围分成500,000槽或更少的段。
本指南提供了如何使用getBlocks RPC方法在Solana网络上列出确认的区块槽的清晰概述。