1703866683
1703866684
当然矿池的一大问题是中心化管理。矿池管理员实际掌握了多大的算力是一个问题。当然,理论上一个矿工如果觉得管理员权力太大,可以自由地选择离开,但实际中有多少矿工会这样做还不清楚。
1703866685
1703866686
另一个坏处是减少了比特币网络上校验全部交易节点的数量(全节点)。以前,无论大小,所有矿工都必须自己运行一个全节点。他们要存储整个区块链,并校验每个交易。现在他们把这项工作交给了矿池管理员。这也是我们在第3章中提到的:整个网络中进行校验交易的全节点的数目在下降。
1703866687
1703866688
如果你对矿池的中心化模式感到不安的话,你可能会问:我们是否可以重新设计挖矿的流程,这样我们就不需要任何矿池,大家必须自己进行挖矿。我们会在第8章中探讨这个问题。
1703866689
1703866690
[1]柏松是18世纪法国数学家,概率学奠基人之一,柏松分布被广泛用于各个领域的概率分析。——译者注
1703866691
1703866692
1703866693
1703866694
1703866696
区块链技术驱动金融:数字货币与智能合约技术 5.5 挖矿的激励和策略
1703866697
1703866698
我们在这一章花了很多篇幅讨论作为一个矿工的主要挑战:买到好的硬件、找到廉价的电费,然后尽快开始运行,然后期待一些好运气。不过在挑选一个区块开挖之前,每个矿工都需要做一些策略上的选择:
1703866699
1703866700
1.需要包括哪些交易?矿工可以选择将哪些交易放进他的区块里。默认的规则是选择那些交易费比较高的交易。
1703866701
1703866702
2.对哪一个区块进行挖矿运算?矿工可以选择在哪个区块上进行挖矿。默认的做法是在最长的那条区块链上继续挖下去。
1703866703
1703866704
3.在同一高度的多个区块中做选择。如果两个不同的区块在同一时间被宣布发现,这就造成了一个区块的分叉,每个区块都是可以被延续下去的,因为它们都符合最长区块链原则。矿工必须选择其中一个区块接龙下去。默认的做法是选择最先被监听到的那一个区块。
1703866705
1703866706
4.什么时候宣布新的区块?当矿工找到一个有效区块之后,他们要决定什么时候向比特币网络宣布这一个区块。默认做法是立刻宣布,但他们也可以选择等一下。
1703866707
1703866708
矿工其实面临很多决定。每个决定都有一个默认策略,直到这本书撰写之时,绝大多数的比特币客户端都是按照该默认策略运行的。非默认策略也有可能使得挖矿收益更高,很多人积极研究如何找到这样的策略。让我们来看看几种可能有别于默认策略的做法,这些做法可能使得挖矿收益更高。在接下来的内容中,我们假设一个运行非默认策略的矿工掌控一定的比特币网络挖掘市场份额,设为α。
1703866709
1703866710
分叉攻击
1703866711
1703866712
最简单的攻击就是分叉攻击(forking attack),这是一个显而易见的获利方式——重复支付。一个恶意的矿工给一个受害者鲍勃发送了一些比特币来购买其服务和货品。鲍勃等到这笔支付交易被放进了最长链之后,甚至还等到了6个证实的时候确认支付安全之后,才开始发货或者提供服务。
1703866713
1703866714
现在这个矿工开始跳到前一个区块上开始重新挖矿——就是在那个包含他给鲍勃的支付交易区块之前的那一块。在这个分叉的区块链里,他插进了另一个替代交易——或者进行一个双重支付——把那些已经支付给鲍勃的比特币重新发送回自己的地址里(见图5.15)。
1703866715
1703866716
1703866717
1703866718
1703866719
图5.15 分叉攻击
1703866720
1703866721
注:一个恶意的矿工给受害者鲍勃发送了一些比特币来购买其服务和货品。然后这个矿工进行了一个分叉攻击,创建了一个包含冲突交易的更长的分叉,在新的共识链中给鲍勃的支付就变成了无效的交易。
1703866722
1703866723
想要这个攻击成功,被分叉的区块链必须要覆盖当前最长的一条链,一旦这个情况发生,支付给鲍勃的交易就不再存在于共识的区块链里。如果这个矿工掌握占优势的哈希算力的话,也就是说α > 0.5,这种攻击就会成功。也就是说,即使有大量的随机变数,这个分叉最终会变成最长的一条链,也就是正当有效的共识链。甚者,因为这些币已经被用过了(在新的共识链上),这笔支付给鲍勃的交易永远不可能再回到区块链上了。
1703866724
1703866725
51%是必要的吗?如果α > 0.5的话,发动一个分叉攻击是很有可能发生的。但在实际中,用稍低的算力也可以发动一个那样的攻击,因为有类似于网络拥塞之类的其他因素。在主链上挖矿的其他矿工会因为一个正常的原因产生一些过时的区块——因为有网络延时。但是一个中心化的攻击者本身则不会有这个延迟,他可以进行更快速的通信并且生成更少的过时区块,这可能会节省1%甚至更多的算力。
1703866726
1703866727
拥有近乎50%算力的攻击者可能需要花很长时间才可能成功,因为有随机性。算力超过50%越多,攻击就会变得越容易也越有效。人们经常讨论51%的攻击,是因为51%是一个分水岭,超过51%的时候分叉攻击就会成为可能。实际上,这种攻击的成功概率是呈梯度变化的。
1703866728
1703866729
可操作的对策。我们不清楚分叉攻击在现实中是否一定成功。因为大家可以觉察到这个攻击,社区可以对此做出决定,即使分叉链更长也可以拒绝接受。
1703866730
1703866731
攻击和币值(exchange rate)。更加重要的是,这种攻击可以摧毁大家对比特币的信心,比特币的拥有者们就想要把资产转移出去,以至于比特币价格崩溃。因此,虽然一个具有51%算力的攻击者可能会在短期内利用双重支付进行欺骗并获得额外的收益,但是从长期来看,其实他们这么做造成的损失可能更大。
1703866732
[
上一页 ]
[ :1.703866683e+09 ]
[
下一页 ]