gettxoutsetinfo的MuHash怎么选? 图 1
gettxoutsetinfo的MuHash怎么选? · 图 1

两台Bitcoin Core节点都运行gettxoutsetinfo,却可能得到耗时、字段和哈希不同的结果。原因通常不是某台节点损坏,而是查询高度、hash_type和coinstatsindex路径不同。任何UTXO统计在离开这三个上下文后都不再可复算。

先固定查询四元组

gettxoutsetinfo返回UTXO集合统计;没有coinstatsindex时调用可能耗时。

记录节点版本、目标高度或哈希、hash_type与use_index。若省略高度,结果绑定调用时的当前best block;两个相隔几秒的节点可能位于不同链尖。对账时先比较height与bestblock,只有它们一致才继续比较数量和哈希。

hash_type适用目的代价与限制
hash_serialized_3兼容旧有序列化哈希与MuHash值不可直接比较
muhash生成MuHash集合承诺比较时须同高度同算法
none只取统计,跳过集合哈希不能提供哈希复核

hash_type不是强弱排名

hash_type可选hash_serialized_3、muhash或none。

选择算法取决于下游协议和既有基线。已有系统使用hash_serialized_3时,新数据不能只换成MuHash后直接判不一致;迁移期应同一高度分别计算并建立两条基线。若只需要容量与数量观察,none可避免不必要的哈希计算,但报告必须写明。

哈希一致说明同算法下的集合承诺一致,不说明节点钱包、mempool或区块文件完整,也不证明某个地址资产归属。哈希不同先检查高度、链、版本和参数,再进入数据损坏调查。

coinstatsindex改变历史能力

hash_or_height仅在coinstatsindex可用时支持指定历史高度或区块哈希。

指定hash_or_height只在coinstatsindex可用时支持。未启用索引时,调用可能扫描当前UTXO集合并耗时;监控系统不能设置极短超时后把失败写成“UTXO为空”。索引状态、查询耗时和RPC错误应进入同一条采集记录。

use_index还影响某些字段是否提供。解析器必须允许字段缺失,区分“不适用于这条路径”和“数值为零”。不能用零补齐transactions、disk_size或block_info后参与趋势图,否则会制造虚假断崖。

bogosize不是磁盘占用

结果包含height、bestblock、txouts、bogosize和total_amount;部分字段是否出现取决于索引使用方式。

官方把bogosize描述为数据库无关、没有实际语义的大小指标。它可作为同口径趋势信号,但不能转写成磁盘字节,也不能据此规划SSD。真实磁盘容量要结合节点数据目录、索引和文件系统指标。

txouts是未花费输出数量,total_amount是集合中的总币量;二者变化来自新区块中的创建与花费。单次下降或上升不代表市场资金流入流出。若分析区块贡献,使用带索引的block_info并明确高度。

可复算报告要保留原始响应

报告至少包含height、bestblock、hash_type、hash值、use_index、索引可用性、txouts、total_amount、原始JSON和查询时间。跨节点复核在同高度同算法下运行,容许非关键字段因执行路径缺失,但核心集合承诺必须按设计比较。

快照交接可参考UTXO快照生成,历史能力见裁剪节点历史边界,高度概念可对照区块高度与slot区别。本文用于节点数据核验,不构成供应量投资分析或资产证明。

来源、日期与未决边界

  1. Bitcoin Core gettxoutsetinfo 31.0:参数、索引、哈希算法和返回字段。
  2. Bitcoin Core dumptxoutset 31.0:快照输出哈希与高度交接参照。

资料访问时间为2026-08-12。仍需留意:算法选择服务于复核目的,不宣称不同哈希可任意互换;运行耗时无统一值。