1703865065
另一方面,一个谨慎的商家甚至在看到交易被包含在一个区块后仍然不会允许爱丽丝下载软件,而是继续等待。如果鲍勃看到爱丽丝成功发起了双重支付的攻击,他会意识到那个含有爱丽丝向他支付的交易的区块有可能已经被丢弃。他应该放弃这个交易,不让爱丽丝下载软件。如果在尝试双重支付的情况下,恰巧下几个节点还是建立在爱丽丝向鲍勃支付交易的区块上,那鲍勃就相信这笔交易会被纳入长期共识链。
1703865066
1703865067
总而言之,一个交易得到的确认越多,它被纳入长期共识链的概率就越大。如前文所述,诚实节点总是选择延展最长的共识链。因为长链增长更多,那条含有双重支付的短链追上长链的概率会变得越来越小。在只有一小撮恶意节点的情况下,这个结论尤其正确。因为短链要想赶上,这些恶意节点需要被一直连续选中。
1703865068
1703865069
事实证明,双重支付攻击成功的概率将随着确认的数目的增加而指数级降低。所以,如果你感兴趣的交易已经收到k个确认,双重支付攻击交易被纳入长期共识链的概率以关于k的一个函数指数级下降。在比特币生态系统里,最常见的方法是等6个确认。并不是6这个数字有什么特殊意义,只不过,这样在你等待的时间与确认你所感兴趣的交易被纳入长期共识链之间做了很好的平衡[1]。
1703865070
1703865071
总结起来,防止不正当交易完全是用密码学的方法。但这些方法被共识所加强,意思是一个节点如果想放进一个密码学上不正当的交易,这个交易不会被纳入长期共识链的唯一原因是绝大多数的节点是诚实的,不会把一个不正当交易放进区块链。另外,防止双重支付攻击完全依赖于共识,密码学不起任何作用。从密码角度来看,这两个交易都是正当有效的。但共识可以能决定哪个被放进长期共识链。最后,你无法百分之百保证你感兴趣的交易被放进了长期共识链。但指数级概率保证了不错的结果,6笔交易过后,实质上你没有犯错的可能了。
1703865072
1703865073
[1]如后文总结时所说,并没有一个固定的数字,但6是个常用的数目。——译者注
1703865074
1703865075
1703865076
1703865077
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
挖矿与工作量证明
[
上一页 ]
[ :1.703865065e+09 ]
[
下一页 ]