什么是工作量证明(PoW)?
首页
文章
什么是工作量证明(PoW)?

什么是工作量证明(PoW)?

中阶
发布时间 Dec 6, 2018更新时间 Mar 8, 2024
10m

导语

工作量证明(通常缩写为“PoW”)是双花问题的预防机制。绝大多数的加密货币都采用这种共识算法机制。我们将这个方法称之为保障加密货币安全的账本。

工作量证明属于最早问世的共识算法,时至今日仍处于主流之列。中本聪于2008年发布的比特币白皮书中引入这个概念,但其实该技术本身在更早之前就已经构想成型。 

在加密货币尚未问世之前,亚当·贝克(Adam Back)的HashCash就是工作量证明算法的早期示例。HashCash要求发件方在电子邮件发送前执行少量计算,以此缓解困扰收件方的垃圾邮件问题。这样的计算对正规发件方而言,几乎不费吹灰之力,但如果是发送大量电子邮件的人,负担会迅速加大。


什么是双花问题?

同一笔资金多次使用就会发生双花问题。该术语基本上专属于数字货币领域,毕竟同一笔现金在现实生活中无法支付两次。例如,咖啡钱支付给收银员后,就锁进了收银机。客户不可能再用同一笔钱到街对面的咖啡厅再买一杯咖啡。

如果执行数字现金方案,就有可能会出现这种情况。我们此前都复制过计算机文件,只需要复制并粘贴,就可以将相同的文件通过电子邮件发送给十人、二十人、甚至五十人。 

由于数字货币只是数据形式,我们需要提防他人进行复制并在其他地方支付同一笔货币。否则,我们的货币体系将很快崩溃。 

如需进一步了解双花问题,敬请阅读《双花问题详解》


工作量证明为何具有必要性?

您如果阅读过我们的区块链技术指南,就会知道用户会把交易发布到网络当中。但这些交易不会立即生效,而只有在添加到区块链后才会有效。 
区块链是所有用户可见的庞大数据库,因此人人都能查看资金之前的使用情况。试想一下:您和其他三位朋友共享一本记事本。无论是谁想要用何种货币进行转账,都会被记录下来。例如,Alice支付给Bob 5个单位货币,Bob向Carol支付2个单位货币
这个过程的复杂之处在于,每次交易都要提及资金来源。因此,如果Bob正在向Carol支付两个单位的货币,其资金来源其实是:Bob从此前与Alice的交易中拿出两个单元货币来支付给Carol

这样我们就有办法去追踪这些货币。假如Bob试图使用之前支付给Carol的同笔单位货币进行另一笔交易,很快大家就都知道了。共享组员不会允许该交易计入记事本。

对于小团体而言,上述方式可能非常奏效。大家彼此认识,能达成一致,决定由哪位好友往记事本里记录交易。如果是个1万名参与者的团体,情况会是怎样呢?此时,记事本无法有效扩展,毕竟没人会信任陌生人掌管账本。

这正是工作量证明的用武之地。工作量证明确保用户不得支付其无权动用的资金。工作量证明算法结合博弈论和密码学,根据系统规则,让所有人都能更新区块链。


工作量证明如何运作?

区块链就是我们上面提到的记事本。但是我们现在不一一添加交易,而是打包计入区块。我们在网络中发布交易,创建区块的用户随后会把交易计入候选区块。只有候选区块成为确认区块,交易才生效。也就是说,交易已添加至区块链。

但是,添加区块的费用并不便宜。工作量证明需要矿工(创建区块的用户)使用各自的资源来获取特权。资源即算力,可用于哈希运算区块数据,直至找到破解难题的方案。
哈希运算区块数据是指将数据带入哈希函数,从而生成区块哈希值。区块哈希值的作用就像“指纹”,是输入数据的标识且对于每个区块来说都独一无二。

要想通过逆转区块哈希值来获取输入数据,几乎是不可能的。然而掌握输入数据,就可以轻松确认哈希值是否正确。只要把输入提交到函数中,就能查看输出是否相同。

提供到工作量证明中的数据,哈希值须符合特定条件。但是用户不知道如何做到。他们唯一能做的就是把数据带入哈希函数,以此验证是否符合条件。如果不符合,就对数据稍作修改,再得到不同的哈希值。即使只更改数据中一个字符都会产生截然不同的结果,因此根本无法预测输出结果。

所以,创建区块就是猜谜游戏。一般来说,用户需要汇总所有要添加的交易信息和其他一些重要数据,然后同时进行哈希运算。由于数据集不变,需添加一个变量信息。否则,输出的哈希值会始终保持一致。这个变量数据称为“随机数”。只要每次试着改变随机数,就会得出不同的哈希值。这一过程就是所谓的“挖矿”。

总而言之,挖矿就是收集区块链数据并借助随机数进行哈希运算,直至找到特定哈希值的过程。如果得出的哈希值符合协议设定条件,即可在网络中发布新区块。与此同时,其他网络参与者可更新自己的区块链,纳入新区块。

对于当今的主流加密货币,要满足条件颇具挑战。网络的哈希率越高,就越难找到有效的哈希值。这样是为了减缓出块速度。

通过个人计算机猜算海量哈希值的高昂成本可想而知。这会耗费大量计算时间和电量。但只要找到有效哈希值,即可获得协议奖励的加密货币。

让我们回顾一下目前已了解的内容:

  • 挖矿成本高昂。
  • 生成有效区块可获得奖励。
  • 知道输入数据,用户可轻松验证哈希值。不挖矿的用户,无需耗费大量算力,也能验证区块是否有效。

至此,一切还算正常。但是,如果有人试图作弊,会发生什么呢?如何才能制止在区块中输入大量欺诈性交易以生成有效哈希值的行径?

公钥密码学因此应运而生。本文在此不做赘述,敬请阅读《什么是公钥密码学?》,了解更详细的内容。简单而言,就是我们利用一些合规加密学技巧来验证某人是否有权动用某笔资金。
创建交易时,您会对其进行签名。网络中的用户都能对比您的个人签名与公钥,核实二者是否匹配。同时,用户还可核查该人是否有权动用资金,以及输入总额是否高于输出总额,即个人支出不得超过持有金额。

网络会自动拒绝含有无效交易的区块。试图作弊的代价非常高昂。不仅浪费资源,还得不到任何奖励。

工作量证明的奥妙之处就显现出来了——作假成本高昂,诚实操作则获利颇丰。明智的矿工会追求投资回报率(ROI),谨慎行事,保证收益。



想要开启加密货币之旅吗?立即前往币安购买比特币吧!



工作量证明与权益证明对比

权益证明(PoS)也是众多共识算法中的一大瞩目焦点。该概念的诞生可追溯回2011年,并已在一些较小协议中得以实施。但是目前仍未在大型区块链中获得采用。
在权益证明系统中,矿工被“验证者”取而代之,并且不涉及挖矿和猜测哈希值的竞争。相反,随机选中的用户须提议或“铸造”区块。如区块有效,用户会收到由区块交易费用构成的奖励。
当然,选人流程设有门槛,协议将综合考虑各种因素选取用户。要获得资格,参与者须锁定质押,即预定数量的区块链原生货币。质押的作用类似于保释金。例如,为防止被告逃避审讯,他们须上缴大额保释金,而验证者需锁定“质押”来预防作弊。如出现欺骗行为,全部或部分质押会遭到没收。
相较于工作量证明,权益证明确实存在一定优势。最明显的是碳足迹的减少,这是因为权益证明无需高功率的矿场,电力消耗仅为工作量证明的一小部分。 

即便如此,权益证明与工作量证明的普及程度还是相去甚远。尽管被认为是浪费,但挖矿目前已自证是唯一获得大规模使用的共识算法。在过去十多年里,工作量证明为价值数万亿美元的交易安全保驾护航。要明确权益证明能否在安全性上与工作量证明相媲美,质押就仍需在实际操作中获得充分测试。 


总结

工作量证明是双花问题的初始解决方案,且可靠性和安全性也得到了验证。比特币证明了我们并不需要依赖中心化实体来预防重复花费同一笔资金。去中心化环境中的参与者通过巧妙运用密码学、哈希函数以及博弈论就能步调一致地追踪金融数据库的状态。