- 2024 年 5 月 3 日
- 发布者: ChainEpic
- 类别: 名词解释和科普
简介
简言之,工作量证明(PoW)是可预防数字支付系统双花问题的机制。比特币和其他众多加密货币均使用工作量证明机制来保护自身区块链网络和数据的安全。这种机制是指多方在无需信任彼此的情况下达成共识,通常称作“共识算法”或“共识机制”。
工作量证明是最早问世的共识算法,时至今日仍与权益证明(PoS)并列处于主流之列。中本聪于2008年在比特币白皮书中提出工作量证明的概念,但该技术本身在此之前就已经构想成型。
在加密货币尚未问世之前,亚当·贝克(Adam Back)的HashCash就是工作量证明算法的早期示例。HashCash要求发件方在电子邮件发送前执行少量计算,以此缓解困扰收件方的垃圾邮件问题。这样的计算对正规发件方而言,几乎不费吹灰之力,但如果是发送大量电子邮件的人,负担会迅速加大。
什么是双花问题?
用同一笔资金多次消费就会发生双花问题。该术语基本上专属于数字货币领域,毕竟在现实生活中,同一笔现金无法支付两次。
例如,咖啡钱支付给收银员后,就锁进了收银机。客户不可能再用同一笔钱到街对面的咖啡厅再买一杯咖啡。但是,如果用数字现金系统,就可能会出现这种情况。
我们肯定都用复制粘贴指令复制过计算机文件,也曾轻松地将同一份文件发送给几十个人。数字货币本质上就是数据,因此我们必须提防他人制造双花问题,即复制同一笔货币到其他地方消费。如果无法防止双花问题,数字支付系统很快就会崩溃。
如需进一步了解双花问题,敬请阅读《双花问题详解》。
为什么有必要采用工作量证明?
如果读过我们的区块链技术相关文章,就能了解到加密货币用户会不断将交易发布到网络中,但这些交易并不会立即生效。只有在获得确认并添加到区块链后,交易才会有效。
例如,比特币区块链就是所有用户均可查看的公共交易数据库(账本)。试想一下,某人和其他三位好友共用一本记事本记录自己的比特币交易。任何时候,其中一人要进行价值转移时就记下:
Alice向Bob支付5 BTC;Bob向Carol支付2 BTC等。
但是,每笔交易都必须注明资金来源。所以,如果Bob向Carol支付2 BTC,记录条目应如下所示:
Bob向Carol支付2 BTC,这笔资金来自Bob此前与Alice的交易。
这样我们就有办法追踪以上BTC金额。假如Bob试图用之前支付给Carol的2 BTC进行另一笔交易,大家马上就会知道了。因为2 BTC此前已经花出去了,共享组员不会允许该笔交易计入记事本。
对于小团体而言,上述方式可能非常奏效。大家彼此认识,能达成一致,决定由哪位好友往记事本里记录交易。如果是个1万名参与者的团体,情况会是怎样呢?此时,记事本无法有效扩展,毕竟没人会信任陌生人掌管账本。
这正是工作量证明的用武之地。工作量证明确保用户不得支付无权动用的资金。工作量证明算法结合博弈论和密码学,根据系统规则,让所有人都能更新区块链。
工作量证明如何运作?
假设以上示例中的记事本就是区块链。我们现在不逐一添加交易,而是打包计入区块。我们在网络中发布交易,创建区块的用户随后会把交易计入候选区块。只有候选区块成为确认区块,交易才生效。也就是说,交易已添加至区块链数据库中。
验证交易和添加新区块的过程称为“挖矿”。挖矿费用昂贵且难度很高,但奖励也很可观。区块奖励由用户的交易手续费和协议创建的全新比特币组成。
工作量证明要求矿工(创建区块的用户)投入电力和算力等资源,对候选区块的数据进行哈希运算,直至找到破解难题的方案。
哈希运算区块数据是指将数据带入哈希函数,生成区块哈希值。区块哈希值的作用就像“指纹”,是输入数据的标识且对于每个区块来说都独一无二。
换言之,矿工必须验证和收集待处理的交易,并将这些交易整理成一个候选区块,并将该区块的数据带入哈希函数生成有效的哈希值。矿工成功找到候选区块的有效哈希值后就会发布到网络中,将该区块添加到区块链中,然后获得挖矿奖励。
矿工将候选区块和哈希值发布到网络中后,其他网络参与者会重复该哈希运算流程,验证输出是否确实有效。
有效哈希值必须经过无数次哈希运算才能算出,但人人都能轻松确认生成的哈希值是否正确。只要将同一输入(区块数据)带入哈希函数提交,便可核实输出是否一致。
提供到工作量证明中的数据,哈希值须符合特定条件。但是用户不知道如何做到。他们唯一能做的就是把数据带入哈希函数,以此验证是否符合条件。如果不符合,就对数据稍作修改,再得到不同的哈希值。即使只更改数据中一个字符都会产生截然不同的结果,因此根本无法预测输出结果。
所以,区块创建就是猜谜游戏。一般来说,用户需要汇总所有要添加的交易信息和其他一些重要数据,然后同时进行哈希运算。由于数据集不变,因此需添加一个变量信息。否则,输出的哈希值会始终保持一致。这个变量数据称为“随机数”。每次只要试着改变随机数,就会得出不同的哈希值。
总而言之,挖矿就是收集区块链数据并借助随机数进行哈希运算,直至找到特定哈希值的过程。如果得出的哈希值符合协议设定条件,即可在网络中发布新区块。与此同时,其他网络参与者可更新自己的区块链,纳入新区块。
对于当今的主流加密货币,要满足条件颇具挑战。网络的哈希率越高,就越难找到有效的哈希值。这样是为了减缓出块速度。
通过个人计算机猜算海量哈希值的高昂成本可想而知。这会耗费大量计算时间和电量。但只要找到有效哈希值,即可获得协议奖励的加密货币。
让我们回顾一下目前已了解的内容:
挖矿难度很高且费用昂贵,但能保障网络安全。
矿工成功生成有效区块后,就能获得奖励,而该奖励由新发行的加密货币和交易手续费组成。
生成有效哈希值很耗时,但其他用户可以重复哈希运算流程轻松验证哈希值的有效性
至此,一切还算正常。但是,如果有人试图作弊,会发生什么呢?如何才能制止在区块中输入大量欺诈性交易以生成有效哈希值的行径?
公钥密码学因此应运而生。本文在此不做赘述,敬请阅读《什么是公钥密码学?》进行全面了解。简言之,公钥密码学即为利用某些合规加密学技巧来验证某人是否有权动用某笔资金。
用户在创建交易时,会对该笔交易进行签名。网络中的其他用户会将该签名与签名用户的公钥进行对比,核实二者是否匹配。同时,其他用户还可核查该人是否有权动用资金,以及输入总额是否高于输出总额,即支出不得超过持有金额。
网络会自动拒绝含有无效交易的区块。试图作弊的代价非常高昂。不仅浪费资源,还得不到任何奖励。
工作量证明的奥妙之处就此显现,即作假成本高昂,诚实操作则获利颇丰。明智的矿工会追求投资回报率,因此他们会谨慎行事,保证收益。
工作量证明(PoW)与权益证明(PoS)对比
除了工作量证明之外,还有许多共识算法,权益证明(PoS)则是其中最热门的一种。该概念的诞生可追溯到2011年,并已在以太坊和其他众多协议中实施。
在权益证明系统中,矿工被“验证者”取而代之,并且不涉及挖矿和猜测哈希值的竞争。相反,随机选中的用户须提议或“铸造”区块。如区块有效,用户会收到由区块交易费用构成的奖励。
当然,选人流程设有门槛,协议将综合考虑各种因素选取用户。要获得资格,参与者须锁定质押,即预定数量的区块链原生货币。质押的作用类似于保释金。例如,为防止被告逃避审讯,他们须上缴大额保释金,而验证者需锁定“质押”来预防作弊。如出现欺骗行为,全部或部分质押会遭到没收。
相较于工作量证明,权益证明确实存在一定优势。最明显的是碳足迹的减少,这是因为权益证明无需高功率的矿场,电力消耗仅为工作量证明的一小部分。
即便如此,权益证明的普及程度仍远不及工作量证明。人们认为挖矿很浪费资源,但仍是过去十多年来唯一公认可靠的共识算法。比特币工作量证明一经问世,就为价值数万亿美元的交易保驾护航。要明确权益证明的安全性能否与工作量证明相媲美,质押还需经过长期的实际验证。
结语
工作量证明是双花问题的初始解决方案,且可靠性和安全性也得到了验证。比特币证明了我们并不需要依赖中心化实体来预防重复花费同一笔资金。去中心化环境中的参与者通过巧妙运用密码学、哈希函数以及博弈论就能步调一致地追踪金融数据库的状态。