打字猴:1.703865078e+09
1703865078 区块链技术驱动金融:数字货币与智能合约技术 [:1703863916]
1703865079 区块链技术驱动金融:数字货币与智能合约技术 2.4 奖励机制与工作量证明
1703865080
1703865081 在前面的章节里,我们简单了解了比特币的共识算法,以及为什么我们直觉上相信它是安全的。但我们回想在本章一开始谈到的,比特币的去中心化一部分是通过技术手段,另一部分是通过聪明的激励设计来实现的。截至目前,我们主要关注的还是技术手段。现在,我们来讨论比特币的这个激励设计。
1703865082
1703865083 之前我们试图大胆相信这样的假设,在我们随机选取节点时,至少有50%的可能会选中诚实节点,这或许是有问题的。如果对颠覆这个过程的参与者有金钱奖励,这个关于诚实的假设就格外成问题,这种情况下我们无法真的假设某个节点是诚实的。所以这个问题变成了:我们是否可以给予表现诚实的节点奖励?
1703865084
1703865085 我们再思考下一个确认以后的双重支付尝试(见图2.3)。我们是否可以惩罚那个创建包含双重支付区块的节点?好吧,其实不行。就像我们前面说的,因为我们无法判断哪笔交易是道义上合法的。即使我们知道,我们也很难惩罚它们,因为节点没有身份。那我们反过来思考,我们是否可以奖励那些创造的区块最终被放入长期共识区块的节点?然而,同样因为这些节点并没有透露它们真实世界中的身份,我们不可能给他们的家庭地址寄去现金。要是有某种可以代替的数字货币……你大概猜到该怎么做的。我们可以用比特币来奖励创造这些区块的节点。
1703865086
1703865087 让我们暂停一下。之前,我们讨论的都是用抽象的算法来实现分布式共识,并不是针对某个具体的应用。我们现在要跳出模型,使用事实,我们建立这个分布式共识过程的应用实际上就是一种货币。明确地说,我们要以这种货币为单位奖励那些表现诚实的节点。
1703865088
1703865089 区块奖励
1703865090
1703865091 这是怎么做到的?比特币里有两种不同的奖励机制。其中一个就是区块奖励。根据比特币的规则,创建区块的节点可以在这个区块中加入一笔特别的交易。这笔交易就是一个造币的交易,类似于财奴币里面的造币,节点可以指定这笔交易的接收地址。当然,节点通常都会选择一个属于自己的地址。你可以把这视为对节点在共识链上进行创建区块服务的报酬。
1703865092
1703865093 在写本书时,区块奖励金额定在25个比特币。但每生成210 000个区块,金额就会减半。根据区块生成的速度,我们可以看到,这个金额大概每4年减半一次。我们现在处在第二个4年。比特币存在的最初4年,区块奖励金额为50个比特币,现在是25个比特币。然后会不断减半。这将造成一些有意思的结果,我们不久会看到。
1703865094
1703865095 你可能会问为什么区块奖励能做到鼓励诚实行为。给予我们目前讨论的,从表面上看,这个节点无论提议一个正当有效的区块还是恶意伪造,都会受到奖励。但其实并非如此!想一想这个节点是如何收取奖励的?奖励只有当区块最终被纳入长期共识链才会实现。因为造币交易和其他每一笔交易一样,只有当它最终被纳入共识链,才会被其他节点接受。这就是比特币奖励制度的一个关键概念。这是一个十分微妙却十分强大的设计。这个设计激励节点想方设法让其他节点延展它们自己的区块。因此如果网络中大部分节点遵循去延展最长支链的规则,那这样的设计将激励所有节点去遵循这个规则。这就是比特币的第一个奖励机制。
1703865096
1703865097 我们前面提到每产生210 000个区块(大约4年),区块奖励将被减半。在图2.4中,曲线的斜率将持续减半。这是一个等比数列,你可能知道数列的总和是有上限的。最终一共是21 000 000个比特币。
1703865098
1703865099 注意,这是新比特币被允许创造出来的唯一途径,没有任何其他新增币的机制。所以这是为什么比特币最终的数量是2 100万(至少目前的规则规定是这样)。按照现在奖励发放的速度,到了2140年比特币区块奖励就发完了。这是否意味着这个系统到了2140年就无法继续运行,并且因为不再有奖励诚实行为的激励而变得不安全呢?不是这样的。因为区块奖励只是比特币两种奖励机制之一。
1703865100
1703865101
1703865102
1703865103
1703865104 图2.4 比特币的总供应量
1703865105
1703865106 注:区块奖励每4年减半一次,限制了比特币的供应上限为2 100万个。这是一个简化的模型,实际中的曲线会有轻微的差异,但都有2 100万的上限限制。
1703865107
1703865108 交易费
1703865109
1703865110 比特币的第二个奖励机制称为交易费。任何交易的制造者都可以选择让交易输出值比输入值小。第一个创建区块把交易放进区块链的人可以取得这个差额,作为交易费。如果你是一个节点,正在创建一个包含200笔交易的区块,那么这200笔交易的交易费将会被付到你放在区块内的那个地址。这些交易费现在是完全自愿的,但是我们可以预见,随着区块奖励逐渐发完,交易费会变得越来越重要,几乎是必需的,因为用户需要通过交易费来保障合理的服务质量。从某种程度上来说,这已经开始发生。但目前还不清楚这个系统会如何演变——这取决于还并不完善的博弈论的研究与发展。这也是比特币一个很有趣的研究领域。
1703865111
1703865112 我们在描述共识机制时还有一些问题没有解答。第一个主要问题是我们要你相信这样的假设:我们能随机选取一个节点。第二个是因奖励那些节点参与而产生的新问题:如果大家都想来分一杯羹成为一个节点来获得这些奖励的话,整个系统会变得不稳定。第三个是第二个问题的复杂版,就是可能会有攻击者创建大量的女巫节点来尝试颠覆整个共识过程。
1703865113
1703865114 挖矿与工作量证明
1703865115
1703865116 事实证明,这些问题都是相互联系的,所有这些问题都有相同的解决办法——工作量证明(proof of work)。工作量证明的核心理念是,我们把随机选取节点改为根据节点占有某种资源的比例来选取节点,我们希望这种资源是没有人可以垄断的。比如说,如果这个资源是计算能力,那我们称之为工作量证明系统。或者这个资源可以是某种币的拥有量,我们称之为权益证明(proof of stake)。虽然比特币没有使用,但权益证明也是另一种合格的模式,并被其他加密货币所使用。我们将在第8章中更多地讨论权益证明和其他工作量证明的变种。
1703865117
1703865118 先回到工作量证明。我们试着更好地理解根据计算能力来选择节点到底是什么意思。换一个角度理解,我们是允许节点用它们的计算能力来互相竞争,导致的结果是计算能力的比例决定了节点被自动选中的概率。工作量证明还有一种理解方式,即我们把制造新身份的难度适度提高了。这就好像是对制造新身份,继而对女巫攻击收税一样。这听起来好像有点模糊,我们接下来看下比特币使用时工作量证明体系的细节,事情就变得清楚多了。
1703865119
1703865120 比特币是用哈希函数解谜来证明工作量的。任何一个提议并创建区块的节点想要制造下一块,这个节点必须要找到一个数,或者我们把它称为临时随机数(见第1章1.1节)。当你把这个临时随机数、前序块的哈希值还有要填进这个区块的交易列表连接起来,组成一整串字符,然后用哈希函数计算这一整串字符的输出值,这个输出值正好要落在一个相对于这个哈希函数所有可能的输出中很小的目标区间内。用公式来表示的话,就是临时随机数要满足下面的不等式:
1703865121
1703865122 H(nonce‖prev_hash‖tx‖tx‖…‖tx)
1703865123
1703865124 就像我们前面看到的,通常一个区块会包含这个节点提议的一系列交易。而且,这个区块还会包含一个指向前序区块的哈希指针(我们这里说的哈希指针是一个宽泛的概念。这个指针只是文本中的字符串,它并不需要告诉我们去哪里找到这个区块。我们可以通过在网上询问其他的节点找到区块。重要的是,这个哈希值既作为我们在网络上请求其他节点寻找区块的ID,又能够让获取这个区块后验证它)。除此之外,我们现在还要求区块包含一个临时随机数。这个想法是为了适度提高发现符合要求的临时随机数的难度,即把包含临时随机数在内的整个区块的哈希值组合到一起,输出结果要是一种特定的形式。如果哈希函数符合我们在第1章中所描述的谜题友好特性,那唯一解出哈希谜题的办法就是去试足够多的临时随机数,直到成功为止。具体来说,如果这个目标区域是所有可能的输出的1%,那你大概就要试100次才能成功。事实上,这个目标区域远比输出范围的1%小得多得多,我们后面就能看到。[1]
1703865125
1703865126 用这种哈希函数解谜以及工作量证明的办法,我们可以完全舍弃采取那种随机选取节点的办法。这些节点在竞争哈希函数解谜的过程中一直都是互相独立的。有时一个节点鸿运当头,正好发现一个临时随机数可以满足要求。这个幸运的节点就可以提议创建下一个区块了。这就是比特币系统实现完全去中心化的方式,没有任何人能决定谁可以提交下一区块。
1703865127
[ 上一页 ]  [ :1.703865078e+09 ]  [ 下一页 ]