跳转到主要内容
这个getBlocksWithLimit RPC方法允许您检索已确认的区块槽号列表,从指定的槽开始并返回至给定的限制。这在您需要从分类账某一点开始的一定数量的后续已确认区块时很有用。
避免批处理以提高性能批处理归档方法会显著增加延迟。不允许超过10个请求的批处理。

常见用例

  • 获取固定数量的后续区块: 获取在特定起始槽位之后确认的定义数量的区块槽位。
  • 分页区块探索: 在分析区块链的某个片段时,分块检索区块。
  • 最近区块监控: 从已知的最近槽位获取最后的N个区块。

请求参数

getBlocksWithLimit方法需要以下参数:
  1. start_slot (u64, 必需): 首个考虑的槽(含)。
  2. limit (u64, 必需): 要返回的最大区块槽数。查询的总槽数(从start_slot到其后limit个区块)不得超过500,000个槽
  3. commitment (string, 可选): 指定查询的承诺级别。如果省略,将使用节点的默认承诺。这作为配置对象中的唯一字段传递,作为最后一个参数。

响应结构

JSON-RPC响应的result字段将是u64整数的数组。数组中的每个整数表示一个已确认的区块槽号,从start_slot到指定的limit
  • 示例: 如果start_slot是5,limit是3,则可能的结果是[5, 6, 7]

示例

1. 从起始槽位获取有限数量的区块

此示例从槽280000000开始获取最多5个已确认的区块槽。
curl https://mainnet.helius-rpc.com/?api-key=<api-key> -X POST -H "Content-Type: application/json" -d \
  '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getBlocksWithLimit",
    "params": [
      280000000, 
      5 
    ]
  }'

2. 获取具有限制和特定承诺级别的区块

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

开发者提示

  • 范围说明: limit 参数决定要返回的最大区块插槽数量。500,000 插槽的限制应用于扫描的概念范围(即,从 start_slotstart_slot + limit - 1)。请确保此概念范围不超过 500,000 插槽,即使在该范围内找到并返回的实际区块较少。
  • 节点数据可用性: 节点可能不会保留所有历史插槽的信息。一个非常旧的 start_slot 可能会返回比指定的 limit 少的区块,或者返回一个空数组,这取决于节点的账本保留。
  • 区块确认: 此方法返回已确认的区块。确切的区块集可能会根据选择的 commitment 级别和查询的节点有所不同,特别是对于非常近期的插槽。
  • 用例特性: 当您知道起点并需要一个固定数量的后续区块时,getBlocksWithLimit 是理想的选择。如果您需要已知插槽范围内的所有区块,getBlocks 可能更合适。
本指南提供了如何使用 getBlocksWithLimit RPC 方法在 Solana 网络上列出特定数量已确认区块插槽的清晰概述。

相关方法