getSlotLeaders按起始slot和limit返回一个有顺序的公钥数组。数组索引i对应start+i;长窗口分段时,边界多取或少取一个都会让后续映射错位。
本文专门处理连续映射和分页拼接,不把Leader身份写成已产块证明。
三个返回值怎样对应slot
请求start=1000, limit=3,若返回[A,B,C],映射是1000→A、1001→B、1002→C。下一批应从1003开始,而不是1002。
长窗口可以按节点允许的limit切分:
| 批次 | start | limit | 期望覆盖 |
|---|---|---|---|
| 1 | 1000 | 3 | 1000–1002 |
| 2 | 1003 | 3 | 1003–1005 |
拼接时校验返回长度 ≤ limit,并把每个数组位置重新计算成绝对slot。官方允许的limit为1到5000;若某批失败,不能跳过后继续拼接成“完整窗口”。epoch边界附近还要保存起止slot、limit、端点与查询时间,便于复查排班变化。
一手规范给出的结论
连续slot数组
getSlotLeaders按起始slot和limit返回连续slot对应的leader身份公钥,数组位置与slot顺序一一对应。
分段查询
RPC只接收起始slot与limit两个参数,limit允许1到5000;长窗口需要分段并校验相邻批次没有缺口或重叠。
leader身份核对
排班身份只表示预计leader,不证明该slot最终产生区块、区块被确认或验证者获得奖励。
leader身份核对实操清单
- 确定闭区间目标并计算总slot数
- 按节点limit生成不重叠的start/limit批次
- 将数组位置映射为start+index
- 校验批次边界、长度和公钥格式
- 另查区块或生产数据判断是否实际产出
故障与停止条件
| 误判 | 正确处置 |
|---|---|
| 第二批从上一批最后slot开始造成重复 | 保留原始证据,停止外推并按本文步骤复核 |
| 返回数组短于limit仍静默推进游标 | 保留原始证据,停止外推并按本文步骤复核 |
| 把Leader公钥当成区块已确认或奖励已到账 | 保留原始证据,停止外推并按本文步骤复核 |
leader身份核对的最小测试集
正常样本应使用已知网络、已知对象和可复查输入。先完成“确定闭区间目标并计算总slot数”,再执行“按节点limit生成不重叠的start/limit批次”,把未经格式化的请求、返回或字节与页面展示分开保存。验收者不读取作者结论,只依据连续slot数组和分段查询重做一次;若得到相同结果,才把这一条标为已复现。正常样本只证明这组输入成立,不能自动覆盖另一个网络、版本、账户或区块状态。
边界样本要故意触发“第二批从上一批最后slot开始造成重复”所对应的错误条件。正确实现应指出失败发生在输入、解析、状态还是权限层,并保留原始错误;它不应悄悄改用默认网络、跳过未知字段、把null转换成零,或用上一次成功缓存填充。第二个反例围绕“返回数组短于limit仍静默推进游标”设计,只改变一个变量,以便确认系统确实在检查主题专属条件。
状态变化样本用于验证排班结果边界。先在时点A完成“将数组位置映射为start+index”,再让网络状态、对象所有权、节点视图或费用条件发生一个可控变化,在时点B重做读取。页面必须展示两次证据各自的时间与上下文,不能用B的结果覆盖A,也不能继续沿用A的完成状态。
交付页面至少分成三栏:原始证据栏保存关键字节、整数、地址或状态码;解释栏写明采用的规范、公式与单位;结果栏只使用“已确认、被否定、待核验”三种状态。遇到“把Leader公钥当成区块已确认或奖励已到账”时,结果必须停在待核验,并提示用户回到“校验批次边界、长度和公钥格式”。这样的测试记录既能发现事实错误,也能发现索引、缓存和界面把正确底层数据展示错的问题。
来源、增量与风险边界
| 来源 | 本文用途 |
|---|---|
| Solana RPC | 正式接口、字段与规范语义 |
| Solana RPC Overview | 实现路径、兼容性或安全边界 |
本文资料读取于2026-07-20。集群升级和epoch切换可能影响查询窗口,报表应保存起止slot、limit、RPC端点与查询时间。
站内相邻主题可继续阅读:slot与epoch单位、Solana RPC核验。排班信息仅表示预计Leader。统计出块率或奖励时必须连接实际区块、确认状态和对应epoch。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。