简而言之,工作量证明 (PoW) 是一种为防止数字支付系统中的双重支出而创建的机制。比特币和许多其他加密货币使用 PoW 作为保护其区块链网络和数据的方法。这种机制通常被称为共识算法或共识机制,因为它们涉及多方达成共识,而无需相互信任。
工作量证明是第一个出现的共识算法,它与权益证明 (PoS) 一起仍然是最重要的算法之一。PoW 是由中本聪在 2008 年的比特币白皮书中提出的,但该技术本身早在那时之前就已经构思出来了。
Adam Back的HashCash是加密货币时代工作量证明算法的早期例子。通过要求发件人在发送电子邮件之前执行少量计算,收件人可以减少垃圾邮件。对于合法发件人来说,这种计算几乎不需要任何成本,但对于大量发送电子邮件的人来说,这种计算很快就会增加。
什么是双花?
当相同的资金多次花费时,就会发生双重支出。该术语几乎只在数字货币的背景下使用——毕竟,你很难两次花费相同的实物现金。
当你今天付咖啡钱时,你把现金交给收银员,收银员可能会把它锁在收银机里。你不能去马路对面的咖啡店用同样的账单支付另一杯咖啡的费用。但是,在数字现金系统中,您可以这样做。
在使用复制和粘贴命令之前,您肯定已经复制了计算机文件。您也可以轻松地将同一文件通过电子邮件发送给数十人。由于数字货币只是数据,因此您需要防止人们进行双重支出,即在不同的地方复制和花费相同的单位。一个无法防止双重支出的数字支付系统将很快崩溃。
如需更深入地了解双重支出,请查看双重支出解释。
为什么需要工作量证明?
如果您阅读过我们关于区块链技术的文章,您就会知道加密货币用户不断向网络广播交易。不过,这些交易不会立即被视为有效。只有当他们被确认并添加到区块链中时,这才会发生。
例如,比特币区块链就像一个公共交易数据库(账本),每个用户都可以看到。想象一下:你和三个朋友有一个记事本来跟踪你们的比特币交易。每当你们中的一个人想要进行价值转移时,你就把它写下来:
Alice 向 Bob 支付 5 btC;Bob 向 Carol 支付 2 btC 等。
但是,每次您进行交易时,您都会参考资金来源的交易。因此,如果 Bob 向 Carol 支付 2 btC,则该条目实际上如下所示:
鲍勃向卡罗尔支付了 2 个 btC,这笔比特币来自与 Alice 的早期交易。
现在,我们有一种方法来跟踪btC的单位。如果 Bob 试图使用他刚刚发送给 Carol 的同一 2 btC 进行另一笔交易,每个人都会立即知道。该组不允许将交易添加到记事本中,因为这 2 个 btC 已经用完了。
现在,这可能在一个小团体中效果很好。每个人都彼此认识,所以他们可能会就哪个朋友应该将交易添加到记事本上达成一致。如果我们想要一个 10,000 名参与者的小组怎么办?记事本的想法不能很好地扩展,因为没有人愿意信任一个陌生人来管理它。
这就是工作量证明的用武之地。它确保用户不会花他们无权花的钱。通过使用博弈论和密码学的结合,PoW算法使任何人都可以根据系统规则更新区块链。
PoW是如何工作的?
想象一下,我们上面示例中的记事本是区块链。但是,我们不会一个接一个地添加交易,而是将它们归为多个块。我们向网络宣布交易,然后创建区块的用户会将它们包含在候选区块中。只有当其候选区块成为已确认的区块时,交易才会被视为有效,这意味着它已被添加到区块链数据库中。
验证交易和附加新区块的过程称为挖掘。这是昂贵和困难的,但它也可能是有益的。区块奖励由用户的交易费用和协议创建的全新比特币组成。
工作量证明机制要求矿工(创建区块的用户)投入电力和计算能力等资源,以便对其候选区块的数据进行哈希处理,直到找到难题的解决方案。
对区块的数据进行哈希处理意味着将其通过哈希函数传递以生成区块哈希。区块哈希的工作原理类似于“指纹”——它是输入数据的身份,并且对每个区块都是唯一的。
换句话说,矿工必须验证和收集待处理的交易,将它们组织到一个候选区块中,并通过哈希函数传递区块的数据以创建有效的哈希。如果他们设法找到候选区块的有效哈希值,他们将其广播到网络,将区块添加到区块链中,并收集采矿奖励。
当矿工将他们的候选区块和哈希广播到网络时,其他网络参与者将重复哈希过程以验证输出是否确实有效。
尽管需要无数次哈希尝试才能找到有效的哈希,但对于任何人来说,确认生成的哈希值是正确的都是微不足道的。他们只需要通过哈希函数提交相同的输入(块数据),并检查输出是否相同。
在工作量证明中,您必须提供哈希值符合特定条件的数据。但你不知道如何到达那里。您唯一的选择是通过哈希函数传递数据,并检查它是否符合条件。如果没有,则必须稍微更改数据以获得不同的哈希值。即使更改数据中的一个字符也会导致完全不同的结果,因此无法预测输出可能是什么。
因此,如果你想创建一个块,你就是在玩一个猜谜游戏。您通常会获取有关要添加的所有事务的信息以及其他一些重要数据,然后将它们全部散列在一起。但是,由于您的数据集不会更改,因此您需要添加一段可变的信息。否则,您将始终获得与输出相同的哈希值。这个变量数据就是我们所说的随机数。这是一个你每次尝试都会改变的数字,所以你每次都会得到不同的哈希值。
总而言之,挖矿是收集区块链数据并将其与随机数一起散列的过程,直到找到特定的哈希值。如果您找到满足协议规定的条件的哈希值,您将有权将新区块广播到网络。此时,网络的其他参与者更新他们的区块链以包含新区块。
对于当今的主要加密货币来说,满足这些条件非常具有挑战性。网络上的哈希率越高,找到有效的哈希值就越困难。这样做是为了确保不会太快找到块。
可以想象,尝试猜测大量哈希值可能会对您的计算机造成高昂的代价。你浪费了计算周期和电力。但是,如果您找到有效的哈希值,该协议将用加密货币奖励您。
让我们回顾一下到目前为止我们所知道的:
挖矿既困难又昂贵,但为网络提供了安全性。
设法产生有效区块的矿工将获得 新发行的加密货币和交易费用作为奖励。
生成有效的哈希值需要时间,但其他用户可以通过重复哈希过程轻松检查其有效性。
目前为止,一切都好。但是,如果你试图作弊怎么办?有什么可以阻止您将一堆欺诈交易放入区块并产生有效的哈希值?
这就是公钥加密学的用武之地。我们不会在本文中深入探讨,但请查看什么是公钥加密? 以全面了解它。简而言之,有一些巧妙的加密技巧可以让任何用户验证是否有人有权转移他们试图花费的资金。
当您创建交易时,您可以对其进行签名。网络上的任何人都可以将您的签名与您的公钥进行比较,并检查它们是否匹配。他们还会检查你是否真的可以花掉你的资金,以及你的投入总和是否高于你的产出总和(即,你的支出没有超过你所拥有的)。
任何包含无效交易的区块都将被网络自动拒绝。对你来说,甚至试图作弊都是昂贵的。你会浪费自己的资源而没有任何回报。
这就是工作量证明的美妙之处:作弊的成本很高,但诚实的行为却有利可图。任何理性的矿工都会寻求他们的投资回报,因此可以预期他们的行为方式更有可能带来收入。
工作量证明 (PoW) 与权益证明 (PoS)
除了 PoW 之外,还有许多共识算法,但最受欢迎的算法之一是权益证明 (PoS)。这个概念可以追溯到 2011 年,并已在以太坊和其他几个协议中实施。
在权益证明系统中,矿工被验证者取代。不涉及挖矿,也没有竞相猜测哈希值。取而代之的是,用户是随机选择的——如果他们被选中,他们必须提议(或“伪造”)一个区块。如果区块有效,他们将获得由区块交易费用组成的奖励。
然而,并非任何用户都可以被选中——协议会根据许多因素选择他们。要获得资格,参与者必须锁定一笔赌注,即区块链原生货币的预定金额。赌注的作用就像保释一样:正如被告拿出一大笔钱来阻止他们跳过审判一样,验证者锁定赌注来阻止作弊。如果他们不诚实地行事,他们的股份(或其中的一部分)将被拿走。
与工作量证明相比,权益证明确实有一些好处。最引人注目的是较小的碳足迹——因为 PoS 中不需要大功率矿场,消耗的电力只是 PoW 中消耗的电力的一小部分。
也就是说,PoS 没有与 PoW 相同的记录。尽管它可能被认为是浪费的,但挖矿是唯一一个经过十多年实战考验的共识算法。自推出以来,比特币的 PoW 已经获得了价值数万亿美元的交易。要确定 PoS 是否可以与其安全性相媲美,从长远来看,需要对质押进行适当的测试。
结束语
工作量证明是解决双重支出问题的原始解决方案,已被证明是可靠和安全的。比特币证明,我们不需要中心化实体来防止相同的资金被两次花费。通过巧妙地使用密码学、哈希函数和博弈论,去中心化环境中的参与者可以就金融数据库的状态达成一致。
标签: