Chainwork 是什么?比区块高度更能说明链的“分量” 图 1
Chainwork 是什么?比区块高度更能说明链的“分量” · 图 1

“最长链获胜”是比特币最流行的错误口诀。节点真的比较的是高度吗?不是——它们比较的是累计工作量,比特币 RPC 里这个量叫 chainwork。理解它,才能用工程语言谈论“多少确认算安全”“重组要烧多少钱”这类问题。

定义:每条链的“能量发票”

区块难度说的是“这一块的谜题平均要试多少次”,chainwork 则是把一条链上每个区块的难度逐一累加:它等于沿链所有区块期望哈希尝试次数之和。可以把它想成这条链提交的能量发票——从创世块到现在,这条历史按协议参数大约消耗了多少工作量。它是个估算量(难度对应期望值,实际耗功围绕期望波动),但方向性极其稳定:合法分叉两条链的 chainwork 差,直接近似为“走到另一条链上多烧的功”。

为什么比高度更合适

高度只数块数,不数每块的“贵贱”。难度动态调整(见 比特币算力和难度为何不同步?)意味着两条分叉链上同名高度可能对应不同成本;一条链即便高度领先几块,若领先段的难度承诺低或依赖异常波动,累计功也可能落后。节点选择累计功更大的分支作为最佳链(比特币实现的具体选择逻辑以各版本文档为准),这比“谁块多听谁的”稳健:它把重组门槛翻译成了经济量——攻击者从某高度重写历史,需要以真哈希率重新累积出不低于诚实链在此之上的 chainwork,算力占比、所需时间的换算都由此展开(长程与 majority 攻击的讨论见 PoS 长程攻击是什么?历史重写与检查点之外的 PoW 对应版:51% 攻击类专题)。

与确认数、重组的关系

日常说的“等 N 个确认”是概率语言,chainwork 给的是同一件事的成本语言:一笔交易后面的每一块都在给它的分叉链段落加功,追平的期望功随确认数指数式增长。发生重组时,节点切换分支的原因几乎总是“另一支累计功反超”,而不是“另一支更高”;孤块被抛弃也常因它所在的分支功量不足(孤块与叔块的成因见 孤块和叔块是什么?为什么区块会被“抛弃”)。监控口径上,重组监控、节点健康检查(getblockchaininfo 的 chainwork 字段)都用它当第一指标,重组主题的操作细节见 重组(reorg)是什么?为什么已打包的交易可能消失

快速问答

  • “chainwork 和总算力什么关系?“它是历史累计(功的单位),总算力是当下速率;两者比值粗略对应“这条链等效全功率运行了多久”,只作量级感不作精确。
  • “PoS 链有对应概念吗?“没有同构指标——PoS 的“功”变成质押与惩罚,链选择改用规则与检查点语言(见 Gasper 分叉选择是什么?LMD-GHOST 与 Casper FFG 怎么分工一类分叉选择专题)。
  • “RPC 输出是小整数吗?“chainwork 是大整数(十六进制串),跨节点比较时注意解析为数值再相减。
  • “难度为 0 的测试网能套这个模型吗?“公式成立但无经济意义——没有真实哈希率发票的链,chainwork 只剩记账功能。

常见误区

  • 误区一:把“确认数”当物理常数。确认的安全性来自其难度段落累计的功,同样 6 个确认在难度骤变窗口里的含金量会变。
  • 误区二:以为节点会永远按高度跟随某分支。只要累计功规则允许,节点会向更重分支回退重放(交易重新打包见 区块链交易的一生:从构造签名到最终确认),高度领先但功落后的分支是被抛弃的一方。
  • 误区三:把 chainwork 读成实际耗电量。它是协议定义下的期望功估算,矿机的真实电价、良率与其只隔一层工程换算,别用它直接给全网碳足迹定量。

小结

Chainwork 把“谁的账本更值得信”翻译成“谁的历史更贵”。它不是矿机的仪表盘,而是安全性的会计科目:确认是它的分录,重组是它的对账事故,攻击成本是它的余额表。下次评估一条 PoW 链的成熟度,与其问“它多高”,不如问“它值多少功”——这才是比特币给自己记账时真正使用的单位。

风险提示:本文不构成投资建议。链选择与 RPC 字段以你所用节点的版本文档为准。