首页 比特币的共识协议:Proof of Work工作量证明机制
文章
取消

比特币的共识协议:Proof of Work工作量证明机制

上一篇文章讲到区块链是一个去中心化的账本。去中心化就意味着对于网络上的每一个成员来说,这个账本都是公开透明的,所有人都有查看账本和记账的权力。

我在上一篇文章中用一个班开展记录课堂笔记的例子来形容在一个去中心化的网络中记账的情形。每个学生都可以记录课堂笔记,记录他们听到的发言。

但最终只选出一个我们认为最真实、最符合实际情况的笔记来作为黑板报的素材。每个同学当然都希望自己的笔记能得到大家的认可,写到黑板报上。所以班级里必须商量出一种切实可行的办法来选出最好的笔记。

我们可以结合自己的生活经验想一下,选出笔记的可能方式: 方法一:收起所有的笔记,由老师来一一过目,选出他/她认为最好的一个。 方法二:公开所有的笔记,由班级所有同学投票,最终得票最高的那个获胜。

第一种方法是中心化的方法,由老师作为这个选举网络的中心。第二种方法则看起来是去中心化的方式,每个同学都有投票的权力。

但方法二不能直接引入到实际的去中心化网络中,因为在执行上会有很多问题。比如怎么公开所有人的笔记?怎么收集所有人的选票以及唱票?由班长或者老师吗?但这样又不算是真正的去中心化网络了,因为负责收票和唱票的人就成了网络的中心。

在比特币网络中采用了工作量证明(Proof of Work,简称PoW)机制来解决选择账本的问题。

工作量:求解数学题

类似于每个同学记录课堂笔记,写下自己听到的课堂上的发言。比特币网络上的每个节点都记录自己收到的来自网络上其他节点的交易信息,然后把交易记录写在区块(账本)中。

比特币的区块大小是有上限的(1MB)。当一个区块写满之后,记账的节点就开始计算一道数学题,这道题要求记账者给出一个解,即一个数字(我们用nounce表示)。

这道数学题要求这个数字nounce与区块中所有的数据data一起进行哈希计算,得到的哈希值必须小于某个目标值,即 \(H(区块中的数据data+数字nounce) < 目标值\) 我们在前边介绍哈希的文章中讲过,哈希计算的特点是其计算出的哈希值毫无规律,因此你必须不断尝试不同的随机数字nounce以使得最终计算出的哈希值满足小于目标值的要求。

目标值由比特币网络给出,以若干个0开头。因为比特币网络设计为大概每10分钟出一个新区块,所以网络会根据参与记账的节点数量动态调整目标值。

如果记账者太多,那么就需要增加算出nounce的难度,方法就是增加目标值前边0的数量。0的数量越多,目标值越小,根据公式,算出nounce的难度也就越大。

DON’T TRUST,VERIFY

当记账者进行了若干次尝试,最终得到了那个随机数nounce的时候,记账者就可以将这个随机数nounce记录到区块中,并将这个区块广播到网络中。

其他的记账者收到这个区块之后,会先进行验证操作。如果这个区块的内容没有问题,随机数也能满足题目的要求,那么接收到区块的记账者就会认可这个区块。

认可的方式是停止自己手头正在进行的记账,然后把接收到的区块挂到自己这边的区块链上。接着,在其后继续记账,即开始下一个区块的记录。

计算随机数nounce的过程是暴力尝试不同数字的过程。这个过程工作量巨大,需要消耗大量的计算资源和能源,这给记账者带来了大量的成本。那么记账者为何要参与记账呢?

这就要归功于比特币网络巧妙的经济激励设计了。

巧妙的经济激励设计

比特币协议规定每个新区块开头的第一笔交易都是一笔特殊交易。这笔交易没有支付方,只有接收方,即记账者自己。

这笔交易使得记账者可以直接获得若干枚比特币作为奖励。同时区块中记录的交易里,支付方一般会愿意给出一定的小费作为交易费,支付给记账者。

一旦记账者记录的一个新区块得到了整个比特币网络的认可,那么这个区块中第一笔交易所含的比特币以及所有交易的小费都算是真正进入到了记账者的口袋中。所以记账者才愿意付出大量的计算资源和能源成本去抢夺记账权。

PoW机制使得记账需要付出一定的成本,而不论你是诚实地记账,还是做假账。对于一个做假账的人来说,他/她创建的区块无法通过其他诚实的记账者的验证,因此其记账所付出的成本就打了水漂了。

当然,这个做假账的记账者可以购买更多的计算资源或者联合其他做假账的人,在自己内部相互验证自己的区块,形成一条被自己人控制的链。

但比特币网络设计的机制是大家只相信网络中最长的链。假账联盟自己的链虽然也会不断增长,但只要诚实的记账者掌握的计算资源更多,那么诚实的链就一定会比假账链增长得更快。

你可能听说过“51%攻击”的说法。当网络中假账联盟拥有的计算资源超过半数(比诚实的记账者多),那么这个网络就会落入假账联盟的手中。

在比特币早期,记账人数还很少,51%攻击是有可能发生的。但是随着网络规模的扩大,加入网络的记账者越来越多,这种情况已经几乎不会再出现了。

更妙的是,比特币的设计机制使得其价值完全来自于参与者的信任。大家都相信比特币有价值,它才有价值,否则其只是计算机上毫无意义的数字而已。

因此,即使假账联盟掌握了整个网络51%的算力,它们也不会选择记假账来攻击网络。因为它们这样做假账所能获得的,无非是大量的比特币而已。但是网络一旦有假账的存在,那么信任将不复存在。比特币的价值也会随之归零,假账联盟的战利品相应也就失去了价值。

与之相对应的是,如果假账联盟将这些超过半数的算力用于诚实地记账,那么它们将拥有半数以上的记账权,由此带来的收益将相当可观。

另外,每个区块的首笔交易为记账奖励这一设计不仅激励了记账者加入网络(对网络的安全性非常重要,参与的人越多,51%攻击的难度越高,整个网络越安全),而且这还同时解决了比特币发行的问题。

比特币的硬度与“挖矿”称谓的由来

在《货币未来:从金本位到区块链》一书中,作者阐释了货币的硬度这个概念及其对货币价值至关重要的影响。他说货币必须具有一定的稀缺性,不能轻易被制造出来,否则就有缓慢贬值的风险。

黄金和白银之所以能在众多金属元素中脱颖而出,除了它们化学性质稳定,不易损坏之外,还有一大原因就是它们在地球上非常稀少。

黄金和白银每年能新开采出来的增量,与世界上的存量相比就更少了,因此其价值比较稳定(较小的增量/存量比带来价值稳定)。而且一个好的货币最好是在货币这一用途之外别无他用,因此黄金比白银更具优势(白银在工业上用途广泛)。

在中本聪的设计中,比特币的发行只能来源于每个区块的首笔交易,即记账者的奖励。且这个奖励会越来越少(大约每四年时间会衰减一半)。

中本聪的创世区块奖励为50枚比特币,目前为6.25枚(2022年6月)。最终比特币的上限个数大约为2100万枚。中本聪通过这种“上限固定,不能一直超发”的设计保证了比特币很高的硬度。

比特币的发行只能源自于记账者创造区块来记账,这一设计是记账被称为“挖矿”,记账者被称为“矿工”的原因。

就像是采矿业需要投入开采设备去开采矿山,矿工最终能挖出黄金等矿藏,然后经过铸造,变成金属货币。比特币网络的记账也是类似的,记账者(矿工)投入计算设备和能源,最终开采出新的比特币。

另外值得一提的是,中本聪设计比特币的时候,设想的用于挖矿的计算设备还是计算机的CPU。后来矿工们发现计算机的GPU比CPU更适合用来做挖矿的计算。因为同等价位的GPU比CPU多出数千倍的计算单元,更适合挖矿这种大量的暴力随机运算,效率更高。

所以会一度出现虚拟货币价格高涨,显卡就跟着缺货和涨价(令游戏玩家头疼不已)。不过后来很多专业的公司为挖矿研制了专门的芯片和矿机,所以现在很多大的矿场用的都是专业的矿机在挖矿。

总结

  1. 比特币这个去中心化的网络使用工作量证明(Proof of Work,简称PoW)机制来解决共识问题。
  2. PoW中的工作量就是暴力枚举nounce随机数,直到其小于一个网络动态给出的目标值。
  3. PoW及比特币激励制度的设计保障了比特币网络能够长期安全运行。

结语

PoW是最早,也是最经典的区块链共识机制。除了比特币,很多其他的区块链也在使用它,比如著名的以太坊Ethereum。但PoW大量消耗能源的问题也没少被诟病。因此这些年来,一些其他的共识协议也慢慢进入了人们的视野中。

PoW之外最著名的区块链共识协议当属PoS,权益证明(Proof of Stake)。以太坊目前就在计划从PoW机制改为PoS。等比特币白皮书介绍完之后,我也会写文章介绍以太坊和PoS。

祝好!

本文由作者按照 CC BY 4.0 进行授权

区块链:去中心化账本

关于钱的一些思考