术语表 /挖矿与共识
工作量证明
又称 PoW。
- 工作量证明是什么?
- 工作量证明是这样一条规则:区块只有在其区块头的哈希值低于目标值时才算有效,因此发布一个有效区块需要消耗真实的电力,而任何人都可以在几毫秒内验证。
工作量证明把电力变成一个无人能够伪造的数字。矿工必须找到一个低于目标值的哈希值,在难度为1时,平均约需43亿次尝试,如今则多得多,而节点只需对80字节数据做两轮 SHA-256运算即可验证答案。这种不对称性使得改写旧的历史记录代价高昂,而不只是失礼。
运作方式
工作量证明是一道刻意设计成单向的难题:求解极其缓慢,验证却瞬间完成。
这道难题是找到一个区块头,使其经过两次计算得到的 SHA-256哈希值在数值上小于一个称为目标值的阈值。哈希函数没有任何可利用的规律,因此唯一可行的方法就是尝试、修改一个字段,再尝试。每次尝试成功的概率等于目标值除以整个256位输出空间,因此每个区块的预期尝试次数等于难度乘以4,294,967,296。以网络近期的难度(高于120万亿)计算,产出一个区块大约需要500,000,000,000万亿次尝试,由全球所有正在尝试的机器共同分担。
这一思路早于比特币。Adam Back 于1997年提出 Hashcash,作为电子邮件的“邮票”:迫使发送者消耗少量处理器时间,使发送垃圾邮件不再是免费的。Satoshi Nakamoto 在白皮书第4节中增加的是把这些“邮票”链接起来,因此这些工作量不仅证明了一条消息付出了成本,还证明了各条消息到达的先后顺序。
正因为要确定顺序,节点才不会简单地数区块数量。节点遵循累计工作量最多的链,工作量按区块头逐个累加,因此由少量难度极高的区块构成的短链会胜过由大量容易区块构成的长链。要替换一个一周前的区块,就必须重做该区块以及其后每个区块的工作,而且速度要快过世界其他部分延长诚实链的速度。白皮书在第11节推演了相关概率,并表明攻击者追上的机会会随着其上每增加一个区块而呈指数级下降。
购买比特币时为何重要
工作量证明是交易所要您等待确认的原因,也是这段等待以分钟计、而不是无限期拖延的原因。
这里的结算是概率性的,而不是非此即彼的。一次确认意味着您的付款之上有一个区块的工作量;六次确认意味着攻击者必须在大约一小时内胜过整个网络才能撤销它。交易所把这一点转化为政策中的具体数字:Kraken 在4次确认后为比特币充币入账,区块按预定节奏产出时约为四十分钟。交易所的任何操作都无法加快区块链的速度,而即时为您入账的平台,是在借给您余额并自行承担风险,这是一种服务,而不是更快的区块链。
同一规则也划定了能耗论点的诚实边界。这里的安全是用电力换来的,账单是公开的:剑桥另类金融中心(Cambridge Centre for Alternative Finance)估算,网络需求为16.09吉瓦,年化耗电量为141太瓦时,时间为2026年8月1日,其2025年行业报告则称挖矿能源的52.4%来自可持续来源。您可以争论这个代价是否值得。但不能争辩这种保护是免费的,因为一个什么都不消耗的工作量证明系统,会是任何人都能改写的系统。
对持有者来说,实用的规则很简单。大额交易请等待多次确认;购买一杯咖啡这类小额支付时,不必在意零确认与一次确认的差别;对任何承诺即时最终结算的产品,应视为托管方作出的承诺,而不是区块链所做的工作。
手动验证创世区块
创世区块是工作量证明最清晰的演示,因为您可以仅凭一个哈希函数自行验证,无需信任任何人。
其区块头的日期为2009年1月3日,随机数为2083236893。对这80字节数据用 SHA-256做两次哈希,结果为000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f。当时的难度为1,难度为1时的目标值以八个零开头;实际找到的哈希值以十个零开头,因此远超门槛。任何一台笔记本电脑都能在不到一毫秒内确认这一切,而最初产生它则需要经过搜索。验证成本低,创造成本高:这就是这项发明的全部,也是手机能够验证一条耗费数十亿美元电力才建成的区块链的原因。
工作量证明 vs 共识
工作量证明只是一条规则,共识则是整套规则手册。共识规则涵盖2,100万的供应上限、脚本有效性、区块权重、签名检查、时间戳等诸多方面,节点在接受区块之前会强制执行所有这些规则。工作量证明只回答一个狭窄的问题:谁可以提出下一个区块,以及需要付出什么代价。一个工作量证明完美无缺、却向其矿工支付100枚比特币的区块,会被所有节点立即拒绝,而人们说矿工控制着比特币时,恰恰忽略了这一细节。矿工选择交易的顺序,节点决定什么算作有效。
工作量证明 vs SHA-256
工作量证明是规则,SHA-256是它恰好使用的原料。SHA-256是由美国国家安全局设计、并于2001年由 NIST 标准化的哈希函数,与比特币本无任何渊源:同一函数还用于保护 TLS 连接、Git 提交和软件包签名。比特币对区块头应用它两次,并把输出称为区块哈希。工作量证明系统可以建立在其他函数之上,也有若干其他币种这样做。更换函数改变的是哪种硬件在竞赛中获胜,而不是工作量证明本身是什么。