getRecentPerformanceSamples同时给出总交易数和非投票交易数。两者除以samplePeriodSecs得到不同TPS,报表若只写一个“TPS”就会混淆共识投票与用户交易。
本文用实际数字演示两种公式,并说明滚动样本不能代表未来容量。
事实与证据边界
| 核验项 | 可确认结论 |
|---|---|
| 响应字段 | getRecentPerformanceSamples返回近期样本的slot、numSlots、numTransactions、numNonVoteTransactions与samplePeriodSecs。 |
| 两种TPS公式 | 总TPS可用numTransactions除以samplePeriodSecs估算,非投票交易吞吐应使用numNonVoteTransactions,二者口径不能混用。 |
| 滚动窗口 | 样本是所查询节点保存的有限滚动历史,不是未来容量或SLA;跨时间比较应固定端点并保留每个原始样本。 |
从输入到验收
| 阶段 | 动作 |
|---|---|
| 准备 | 固定RPC端点和请求limit,保存全部样本字段 |
| 读取 | 逐条计算总TPS和非投票TPS,不混用分子 |
| 解释 | 按samplePeriodSecs做加权汇总 |
| 复核 | 剔除样本前先记录剔除原因和原值 |
| 收尾 | 报表附端点、查询时间、窗口数与覆盖秒数 |
用一条样本算两种TPS
假设响应为numSlots=150、numTransactions=120000、numNonVoteTransactions=48000、samplePeriodSecs=60:
- 总TPS:
120000 ÷ 60 = 2000 - 非投票TPS:
48000 ÷ 60 = 800 - 样本内平均每slot总交易:
120000 ÷ 150 = 800
| 指标 | 分子 | 适合回答 |
|---|---|---|
| 总TPS | numTransactions | 节点观察到的全部交易处理量 |
| 非投票TPS | numNonVoteTransactions | 更接近非投票业务活动 |
| slot速度 | numSlots / samplePeriodSecs | 该窗口完成slot的节奏 |
跨日比较要保存每条原始样本,而不是先把多个窗口相加再除一个不匹配的秒数。异常短窗口、节点重启和缺失样本应单独标记。
故障与停止条件
| 误判 | 正确处置 |
|---|---|
| 用numTransactions直接当TPS | 保留原始证据,停止外推并按本文步骤复核 |
| 把投票交易也写成用户交易吞吐 | 保留原始证据,停止外推并按本文步骤复核 |
| 拿一个近期窗口承诺主网未来容量或SLA | 保留原始证据,停止外推并按本文步骤复核 |
四问复评滚动窗口
输入是否能被别人重放?
用已知对象执行“固定RPC端点和请求limit,保存全部样本字段”,保存所有必需字段,而不是截图。第二个人根据响应字段重建同一请求或字节,再做“逐条计算总TPS和非投票TPS,不混用分子”。如果缺少网络、版本、区块、账户或时间上下文,即使数值相同也不能算复现。
错误是否真的被拦住?
先只注入“用numTransactions直接当TPS”,记录预期错误与实际返回;恢复成功样本后,再单独注入“把投票交易也写成用户交易吞吐”。错误处理不得使用旧缓存冒充新结果,也不能把null、未知类型或权限失败自动改成零值。每个反例只变一个条件,才能定位校验是否生效。
状态变化后旧结论会不会残留?
围绕指标边界制造一次可控变化,并在变化前后分别执行“按samplePeriodSecs做加权汇总”。页面同时展示两份证据的对象、上下文和时间;新状态不能覆盖审计历史,旧状态也不能继续显示为当前完成。
什么时候停止自动流程?
一旦出现“拿一个近期窗口承诺主网未来容量或SLA”,状态转为待核验,并要求人工执行“剔除样本前先记录剔除原因和原值”。交接时把响应字段原文、两种TPS公式推导和滚动窗口验收分栏保存,使复核者能判断问题来自规范理解、现场环境还是展示逻辑。
来源、增量与风险边界
| 来源 | 本文用途 |
|---|---|
| Solana RPC | 正式接口、字段与规范语义 |
| Solana RPC Overview | 实现路径、兼容性或安全边界 |
本文资料读取于2026-07-20。节点版本、异常slot和样本窗口会影响均值,报表不能只保存一个聚合TPS数字。
站内相邻主题可继续阅读:slot与epoch单位、Solana RPC核验。性能样本是节点保存的滚动历史,不代表未来吞吐、收益或服务承诺。异常窗口应披露而不是静默删除。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。