目标
本节的目标是了解:
- 工作量证明的历史发展
- 工作量证明如何运作
- 工作量证明的应用
PoW机制历史简介
在深入研究区块链中使用的工作量证明机制(PoW)之前,了解其历史有助于更好地掌握其原理。
PoW 的概念最初并不是为加密货币而设想的。它是由 Cynthia Dwork 和 Moni Naor 于 1993 年提出的,作为阻止垃圾邮件攻击电子邮件服务的一种手段。基本思想是要求用户在发送电子邮件之前解决与其内容相关的数学问题,并将结果附加到电子邮件中以便服务器接受。

流程如下:
1.用户写了一封电子邮件。
2。在发送电子邮件之前,用户必须解决工作量证明问题,通常是找到一个满足特定条件的数字(随机数)——例如,将电子邮件内容与该数字组合并计算其哈希值,得到一个带有四个前导零的哈希值。在计算机上计算并找到这个数字后,用户将其附加到电子邮件中并发送。
3.邮件服务器收到邮件和附加的号码,快速验证工作量证明的正确性(检查哈希值是否满足要求)。
4.如果工作量证明正确,则电子邮件将被发送到预定的邮箱;否则,则拒绝发送。
工作量证明所涉及的计算需要一定的时间和资源。对于普通用户来说,这种额外的工作量是可以接受的,因为它不会对正常的邮件操作产生很大影响。然而,对于通常发送数千封垃圾邮件的垃圾邮件发送者来说,这个计算过程会消耗大量的时间和资源。这种机制大大增加了发送垃圾邮件的成本,从而有效减少了垃圾邮件的数量。
为什么要使用 PoW 机制
2008年,化名“中本聪”的个人或团体在创建比特币时运用了PoW机制。
比特币是一个去中心化的分布式网络。当发起新交易时,网络内没有中央权威机构来验证和确认交易。为了防止恶意攻击,需要一种机制来确保所有网络参与者(节点)都同意交易记录的有效性和区块链的状态。PoW 机制解决了这个共识问题,为比特币网络提供了去中心化的安全性,确保其在不依赖任何单一实体的情况下运行,并保持网络完整性。
💡
交易验证:中心化网络 VS 去中心化网络
在传统的中心化金融网络中,每笔交易都必须经过一个或多个中心化机构的审计和确认,比如银行、清算机构、监管机构等,这些机构有权访问交易数据,并负责确保交易的安全性和合规性。
相比之下,像比特币这样的去中心化区块链网络使用分布式账本和共识机制来验证和确认交易,而不需要中心化的权威机构。
PoW 机制如何运作
那么 PoW 机制在区块链中如何运作呢?
如下图所示,在比特币网络中,PoW 要求矿工解决一个数学问题来创建新的区块。这个问题本质上是在 1 到 2^256 之间找到一个值 (nonce),使区块头的哈希值小于或等于网络当前的难度目标。这个过程被称为“挖矿”。随着网络中计算能力的变化,挖矿难度目标也会不断调整,以保持区块创建之间的一致间隔。

PoW 机制案例研究
我们用一个简单的例子来解释一下PoW机制的工作过程,我们的目标是找到一个nonce值,使得区块头的哈希值小于或者等于难度目标,即哈希值以三个零开头。
难度目标: 000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
打包交易后,矿工生成的新区块头信息如下:
版本:1
前一个区块的哈希值:00065981574f0735bd36230451d837d12ad19f671a6d76ab0eefc6d55a7e8bec
默克尔根:b3a24bbaff8d6de77c2a021e0f3f4a9e8a2f0dbd0ea1eea9ece5f2f424a2bd5b
时间戳:1582215247
难度指数:1d00ffff
Nonce:0(起始 nonce 值)
矿工的任务就是不断改变Nonce值(从0开始),重新计算区块头的哈希值,直到找到小于或等于难度目标的哈希值。矿工开始尝试不同的Nonce值:
●首次尝试(不满足条件)
随机数:1
哈希值:fae998a99254508c137f0c535f8f25fbb69e7cc6af78a7f365546a87314dab77
●第二次尝试(不满足条件)
随机数:2
哈希值:001a744a87365442d2593d896bda9942a128fa4c7acb3a47b0dd98c77fb67216
●第三次尝试(不满足条件)
随机数:3
哈希值:0b3468b4bbc3f1614d592daeff613564ab1678694562a5e0033afa7e71bfffcc
… …
●第 23568 次尝试(满足条件,哈希值以三个零开头)
随机数:23568
哈希值:00019c284da6661956525526eba9e09d474257b33a221130de29db6b926caca6
经过23568次尝试后,当Nonce值为23568时,矿工找到一个符合条件的哈希值(以三个零开头),即表示挖矿成功,新区块可以加入区块链。其他节点的矿工会验证这个区块是否符合难度要求,一旦验证正确,矿工就会停止当前挖矿,立即开始挖下一个区块。
这是挖矿的简化版本。现实中,比特币网络的难度目标要复杂得多,矿工通常需要尝试数十亿个 Nonce 值才能找到满足条件的哈希值。新区块添加到区块链后,创建该区块的矿工会获得一定数量的代币奖励,例如 2024 年比特币减半后获得 3.125 个比特币。
最长链原则
在比特币网络中,许多矿工同时挖矿,经常产生多个合法区块,从而导致区块链分叉。分叉后新创建的区块会添加到哪条链上?
此时,矿工遵循最长链原则,默认以最长的链,即累积计算工作量最多的链作为继续挖矿的有效链,因为最长的链代表了网络完成的最大工作量。

概括
在本节中,我们了解了PoW机制的原理及其在比特币中的应用。
综上所述,PoW 机制有效解决了去中心化分布式网络中的共识问题,使得系统中的各个节点无需中心化、相互信任,即可达成共识。目前,它已成为许多加密货币广泛使用的共识算法。PoW 机制也使得攻击该系统变得非常困难,攻击者需要控制超过 50% 的网络算力才能影响区块链的状态(51% 攻击)。
但 PoW 机制也存在能耗高、存在中心化风险等缺点,例如 2014 年 GHash.IO 矿池一度占据全球比特币网络一半以上的算力,理论上可实施“51% 攻击”,引发社区广泛担忧,随后 GHash.IO 主动降低算力份额,承诺不超过全网 39.99%。