getmininginfo怎么拆分挖矿指标? 图 1
getmininginfo怎么拆分挖矿指标? · 图 1

getmininginfo看起来像一张“挖矿总览”,但响应里的字段并不处在同一空间和时间尺度。getmininginfo返回当前blocks、bits、difficulty、target、networkhashps、pooledtx、blockmintxfee、chain、next对象与warnings。 有的来自当前链状态,有的是全网算力估算,有的描述本节点内存池,还有的只在节点曾经组装过区块后出现。把它们画进一张看板之前,先给每个指标标明出处。

先把响应拆成四个数据区域

链状态区域包括blocks、bits、difficulty、target和chain;网络估算区域以networkhashps为主;本地待选交易区域包括pooledtx与blockmintxfee;模板记忆区域则是可选的currentblockweight和currentblocktx。next对象另行描述下一高度及目标相关字段,warnings保留节点给出的警告。

区域代表字段数据范围不应被解释成
当前链blocks、difficulty、bits、target本节点链视图单一矿工设备状态
全网估算networkhashps由链上出块推算精确实时仪表读数
本地内存池pooledtx、blockmintxfee这台节点的策略与视图全网统一交易池
最后组装模板currentblockweight、currentblocktx本节点最近一次assembled block当前主链tip区块
下一块语境next对象下一高度与目标背景已经产生的区块

这种分层能阻止最常见的错误:把pooledtx当全网待确认交易数,把blockmintxfee当市场费率,或把currentblocktx当作最新确认区块的交易数。

currentblock字段为什么可能完全缺失

currentblockweight和currentblocktx只在节点曾组装过区块时出现,并描述最后一次assembled block,不是当前主链tip区块的固定字段。 currentblockweight与currentblocktx只在节点曾经组装过区块时出现,描述的是最后一次assembled block。字段缺失不是数字零,也不一定表示RPC故障;更可能是本次节点生命周期中没有形成可报告的组装结果。

采集程序需要区分“字段不存在”“字段存在且为零”“请求失败”三种状态。若看板用默认值0填补缺失,就会凭空制造一条“最后模板为空”的记录。正确做法是保存presence标志、采样时间和节点实例标识,节点重启或角色变化时重新建立基线。

读取原始JSON
  → 保存字段是否存在
  → 按链/网络估算/内存池/模板分区
  → 标注节点与采样时刻
  → 再进入趋势图和告警

单位不统一,必须在入口归一

blockmintxfee单位为BTC/kvB,pooledtx是内存池规模;networkhashps是网络每秒哈希估算值,next对象给出下一高度及目标相关字段。 blockmintxfee的单位是BTC/kvB,pooledtx是内存池交易数量,networkhashps是网络每秒哈希次数的估算。bits和target表达工作量目标背景,difficulty是相对难度指标;它们不能用同一小数格式或同一变化阈值处理。

展示层如果要把BTC/kvB换算成sat/vB,应使用明确、经过测试的转换函数,并保留原始值。哈希率则使用H/s、EH/s等可读单位展示,但数据库保存原始数值与估算参数语境。任何单位转换都要在字段字典中注明,不能靠前端组件猜测。

networkhashps是估算,不是矿机遥测

networkhashps从区块工作量与时间窗口估算网络哈希率。短期出块具有随机性,节点链视图和估算窗口也会影响结果;单次上升或下降不能直接归因于某个矿池增加、矿机停机或能源价格变化。

趋势分析至少保留采样高度、链、节点版本和采样时间,并使用多个连续窗口观察。若要评价特定矿池,还需要独立的区块归属方法和明确的不确定性;getmininginfo本身不返回“某矿池实时算力”。

pooledtx与blockmintxfee都是本地视图

pooledtx来自本节点内存池。不同节点的同伴连接、重启时间、mempool策略、最小中继费和容量压力不同,即使在同一时刻也可能看到不同数量。blockmintxfee则反映本节点组装区块时采用的最低交易费策略,不是所有矿工共同接受的市场价格。

将这两个字段放在同一图表时,必须标注节点配置事件。例如mempoolminfee变化、节点重启、策略升级或连接异常都可能引起断点。需要更细诊断时,再结合getmempoolinfo检查bytes、usage、maxmempool和费用门槛,而不是只从pooledtx猜原因。

next对象给“下一块”单独留一栏

next对象包含下一高度以及目标相关信息。它是基于当前链视图形成的下一块语境,不是未来区块已经确定的内容。链尖移动、时间变化或难度调整边界都可能让下一次采样不同。

看板应把next.height与当前blocks放在相邻但不同的字段中,明确一个是已知链高度,一个是下一候选高度。不要把next中的目标值回填到当前tip记录,也不要用它预测具体矿工何时找到区块。

一份可复算的快照最少保存什么

每次采集保存RPC端点身份、Bitcoin Core版本、chain、blocks、采样时间、原始响应哈希、字段presence和warnings。对currentblock字段记录“最近一次模板组装”的含义;对networkhashps记录它是估算;对本地字段保留相关策略配置版本。

若两个节点数值不同,先比较链高度、网络、内存池配置和是否组装过模板,再讨论数据异常。不要对不同来源的值取平均来掩盖差异。跨节点复核的目标是解释各自视图,而不是强迫所有本地字段相同。

上线验收用六个反例

测试字段完整响应、从未组装模板而缺失currentblock字段、节点重启、内存池清空、链高度变化和RPC失败。确认缺失值不会变成零,单位转换可逆,warnings不会被丢弃,next.height不会覆盖blocks。

告警也按数据区域分开:链停止推进、网络估算大幅波动、内存池容量或费用异常、模板组装状态变化分别进入不同队列。这样一条本地字段变化不会被误报成“全网挖矿故障”。

本文依据Bitcoin Core 31 RPC字段说明建立数据字典,只用于节点与看板工程。哈希率、费用和交易池会随网络与本地配置变化,不构成挖矿收益、设备采购或资产投资建议。

让挖矿看板保留数据出处

字段卡片除数值外还要显示来源区域、单位、节点、采样时间和presence状态。缺少currentblock字段时展示“尚无最后组装模板记录”,不要补零;节点或策略变更则在趋势线上留下事件标记。

内存池与模板的进一步诊断可参照getmempoolinfo读取内存池getblocktemplate字段边界getmempoolcluster查看交易簇。所有趋势解释都必须受这一边界约束:networkhashps估算窗口、本地模板是否曾组装以及内存池会随时间变化,仪表盘必须记录节点和采样时刻。