1703866745
这些假想在现实中未曾发生。贿赂攻击是否可行,这依旧是一个悬而未决的问题。
1703866746
1703866747
临时保留区块攻击
1703866748
1703866749
假设找到一个区块之后,默认的做法是你会立刻向全网宣布找到的区块。但是如果你想进行一个临时保留区块攻击(temporary block-withholding attacks),你也可以不立刻宣布,然后在这块上面继续挖矿,期望你可以在其他矿工找到下一个区块之前连续找到两个有效区块,在整个过程中秘密地保留你所发现的区块。
1703866750
1703866751
如果你已经拥有两个公共区块链上超前的秘密区块,那么全网剩下的矿工所做的挖矿努力都会被浪费,其他的矿工都会在他们认为最长的链上继续挖矿,一旦他们宣布他们找到了一个有效区块,你可以立刻宣布你所秘密保留的两个区块,这样你的区块链立刻变成了最长的有效链,而其他人辛苦挖出来的区块马上就变成了一个孤块而被丢弃(见图5.16),你的这种行为被称为自私挖矿(selfish mining)。通过使网络上的其他矿工浪费算力计算出来的区块瞬间过期,可以有效地增加你的挖矿获利。
1703866752
1703866753
1703866754
1703866755
1703866756
图5.16 自私挖矿图示
1703866757
1703866758
注:图中显示了其中一种攻击方式。(1)攻击之前的区块链。(2)攻击者挖到的区块,保留着,在此之上继续挖矿。(3)攻击者运气很好,在全网其他矿工之前发现了第二个区块,并继续保留。(4)非攻击者找到了一个区块,并进行广播。攻击者立刻广播他所保留的两个区块,使得区块4变成了孤岛,浪费了其他人之前所用的算力。
1703866759
1703866760
这里面的关键是你需要运气好到连续发现两个区块,风险在于你只领先了一个区块,其他人就已经向网络宣布发现了一个有效区块。如果这种情况发生,你必须立刻宣布你的秘密区块,这叫造成了一个区块的分叉,每个矿工都需要选择哪一个区块继续挖下去。当然,你希望大部分其他矿工最早监听到你的区块并在上面继续挖矿。由于这种攻击的有效性严重依赖你赢得这个竞赛的能力,所以网络位置至关重要。你可以尝试跟所有的节点建立链接,以使得你的区块可以第一个到达其他的节点。
1703866761
1703866762
假设只有50%的机会可以赢得这个竞赛,在α>0.25的情况下,自私挖矿可以比默认策略更有收益。如果α>0.333,即使你输掉每一个这种竞赛,仍然可以获得更高的收益。这种攻击的存在是令人震惊的,原来大家都相信如果没有很大的算力——比如α≤0.5——不会有比默认策略更有利的挖矿策略。所以,即使某个矿工控制的算力低于50%,也是有可能通过切换到其他的挖矿策略来获取更多的收益。
1703866763
1703866764
到2015年为止,临时保留区块攻击仅仅是理论上的,在实际中并没有观察到这类攻击事件,自私挖矿则很容易被检测到,因为这种策略会增加同时宣布区块的概率。
1703866765
1703866766
黑名单与惩罚分叉攻击
1703866767
1703866768
如果一个矿工想把一个来自地址X的交易列入黑名单,换句话说,他想冻结从该地址出来的钱,让这些钱变得不可用。或许他想用这个办法来敲诈勒索一笔钱,或许他们之间有仇,还有可能是政府执法部门认为那些地址有问题,需要矿工的配合来冻结这些币。
1703866769
1703866770
传统观点都认为在比特币里这种黑名单没有办法有效施行。因为即使有些矿工会拒绝把交易放进区块链里,其他一些矿工可能会。如果你真的想把一笔交易列入黑名单,你可以尝试其他一些更加激烈的手段,比如,惩罚分叉(punitive forking),你可以宣布拒绝在包含来自该地址的交易的区块链上工作。如果你拥有大部分市场运算能力,那应该足以保证这个黑名单上的交易永远不会被公布。确实,在这种情况下,其他矿工很有可能不会再试图把这笔交易放入区块链里,因为这么做有可能使得他们自己的区块链被分叉,这会导致他们发现的区块被删除。
1703866771
1703866772
羽量级分叉
1703866773
1703866774
如果没有很大的算力,上述的几个分叉攻击在现实中都不太可能实现。如果你宣布拒绝接受包含某些特定交易的区块链,但这条链被网络上的其他矿工所接受并形成最长链的话,你就会发现自己被永远排除在共识链之外(这就是一个硬分叉),所有你做的挖矿工作统统浪费了。更加糟糕的是,黑名单上的交易仍然存在于最长的区块链上。
1703866775
1703866776
换句话说,考虑到还有其他矿工的存在,用惩罚分叉把特定交易放入黑名单的手段并不可靠。然而,有另一个更明智的方法可以做到这一点。与其一看到从地址X里出来的交易就宣布你会进行永久分叉,不如宣布你将会尝试分叉,但过一段时间你可能会放弃封杀的尝试。例如,你可以宣布:当k个区块证实了从这个地址出来的交易是正当的时候,你便会回到最长链。[1]
1703866777
1703866778
如果你在一个区块证实后便放弃,把那笔从地址X出来的交易成功封杀的概率是α2。原因是你必须要在其他矿工找到下一个区块之前找到连续两个区块,这样才能成功地丢弃那个包括地址X交易的区块。α2是你连续找到两个区块的概率。
1703866779
1703866780
α2这个概率看上去不是很好。就算你掌控了20%的全网算力,也只有4%的成功概率来封杀那笔你不希望出现在区块链上的交易。但这已经不错了,至少你还有可能说动其他矿工来加入你。只要你把你的计划公开了,其他矿工便会知道:如果他们胆敢把这个来自地址X的交易加入自己的区块,便有α2的可能会丧失自己已经发现的区块[被你的羽量级分叉攻击(feather forking)所消灭]。只要他们不是有很强的主观意愿把这个交易包括进来并且这个交易没有很高的交易费,他们可能更愿意规避那α2失掉过往挖矿奖励的风险,而不是获取那笔交易费。
1703866781
1703866782
这就演化为:其他挖矿者经过理性的思考,将决定加入你对X地址的封杀行动,这样你便可以成功地封杀X即使α<0.5。所以这个攻击要想成功,重点在于确保其他矿工相信你将会进行分叉攻击。
1703866783
1703866784
逐渐转移到用交易费来奖励挖矿
1703866785
1703866786
直到2015年,交易费还不是那么重要,因为区块奖励在矿工总收入里占比超过99%。但每4年,区块奖励就会被减半,最终区块奖励将会变得很低,低到交易费变成了矿工的主要收入来源。届时矿工会如何应对还属未知。他们会不会更加激进地要求实行最低交易费?矿工会不会联合起来逼迫比特币网络实行最低交易费制度?
1703866787
1703866788
未解的问题
1703866789
1703866790
总结来说,理论上矿工可以自由地选择挖矿的策略,但在实际中我们观察到的是大部分矿工都选择了默认策略来挖矿,虽然没有完整的模型可以证明默认策略(default strategy)就是最佳的。在本章中,我们讨论过几个特定案例,有大量算力的矿工有可能执行非默认策略来获取更大的收益。在挖矿策略上,实践是领先于理论的。在实践中,大多数矿工还是选择了默认策略,而且比特币运行得也很好。但是,从理论上,我们还无法论证这是一个稳定的机制。
1703866791
1703866792
默认策略能否在实际运行中一直保持有效,对于这一点我们也没有把握。比特币运行所依赖的现实条件也一直在改变。矿工们变得越来越中心化和专业化,整个系统的算力也越来越大。另外,从长期来看,比特币的奖励将从固定的挖矿奖励为主转变为交易费为主。我们真的不知道这将会如何演变,基于博弈理论对此进行预测也是一个非常有趣的前沿研究领域。
1703866793
1703866794
延伸阅读
[
上一页 ]
[ :1.703866745e+09 ]
[
下一页 ]