协同挖矿机制的主要目的,是可以通过增加分片数量来提高一个采用POW共识的区块链网络的性能。此外,协同挖矿还可以通过一种称为算力复用的技术来大大提高区块链的安全性。算力复用技术的概念是受到软件开发领域中代码重用的启发。在软件开发中,程序员们通常会使用高质量的现有代码(例如,标准库),而不是重新编写全套代码,从而来提高工作效率和代码质量。类似地,协作挖矿通过使用算力复用技术,以便多个分片重用根链上面相同的算力(由于挖矿回报更高,根链通常具有更多的算力),来抵御分片上的双花攻击。
下面我们将详细讨论协作挖矿的细节。不过在进入正题之前,我们首先需要介绍在一个POW网络中何为51%攻击(也叫做的双花攻击),并通过最近发生在BTG和ETC网络中攻击事件,帮助读者澄清51%攻击的一些误解。然后,我们着重介绍算力复用技术是如何帮助提高区块链的安全性,并进一步讨论协作挖矿中的其他安全问题。
51%攻击:误解和现实8 u, f% T& L) m: O' X9 K; K* B
如果要对使用POW算法的网络进行攻击,最著名的方式可能就是双花攻击了。只要攻击者拥有超过51%的哈希算力,攻击者就可以通过秘密地挖掘一条更长的分叉链来覆盖原来的链(从而撤销一个或多个交易)。理想情况下,如果一个网络中的算力是足够分散的话,51%的全网算力看来是一个很高的要求(例如,比特币就从未遭受过51%的攻击),但最近很多基于POW算法的区块链都受到了双花攻击:
请注意,这两个加密货币在CoinMarketCap的市值排名中都居于前30位,他们的网络中都有相当量的哈希算力。这也意味着那些市值在30名之后的使用POW共识的区块链其实更容易受到51%的攻击。
为什么发起攻击都是需要51%的网络哈希算力,但有些区块链更容易受到双花攻击,而另一些区块链网络看起来抵抗力更好一些?这里大众对51%攻击有一个关键的误解,就是何为的网络中的总哈希值。这个数值可能是:& K8 S) k- _- `! ]. ^, ^
事实1:只需要5.2%的ETH算力就可以对ETC网络执行双花攻击(根据2019年1月21日的数据计算)5 w$ ]' O1 B2 g1 l$ }, G0 t* m
让我们以ETC为例来讨论,假设当前ETC的算力是9Th/s。根据定义1,只有当现有的9Th/s矿工中有51%是恶意的,51%的攻击才会成功。然而,根据定义2,由于ETH也在运行ethash算法(与ETC相同),且ETH网络的算力为176Th/s,因此ETH的矿工中的攻击者只要将9Th/s的算力从ETH移动到ETC网络就能发生攻击。这种攻击所花费的算力只占ETH全网算力的9/176=5.2%,远低于所谓的51%。
事实2:对一些使用POW算法的区块链实施双花攻击可能只需要数百美元* q0 }+ N# L$ K0 b/ j+ F
随着算力租赁市场(如nicehash)的出现,安全问题实际上变得更加严重,攻击者可以租用一小段时间的算力就可以执行攻击。根据https://www.crypto51.app/提供的表格来看,从nicehash租赁算力对一些区块链网络实施攻击的成本只有几百美元。$ }* e( }- h: X4 a9 ^
; _: |" V, i) ^( U3 n/ i
) R4 T9 s% P6 q b0 }9 u& y
协同挖矿和算力复用技术& B! x( j0 P8 K/ v& `% i- u. L0 |
www.crypto51.app网站的截图8 T: |! _) `% X; n/ e
**4 O6 L# \( D4 e- v: q/ L
算力复用技术**8 J+ r2 z: I; i+ k; W% Q, W
上表中透出一个关键信息是,BTC/ETH网络具有非常强的哈希算力,但每秒交易处理能力较低。那有没有可能开发一个新的区块链时可以使用BTC 或者ETH的算力来防止双花攻击呢?(就像软件开发里面经常使用的代码重用)一种可能的解决方案是使用侧链技术,其中侧链上的出块者(BP)需要定期将其链的快照提交给主链(BTC/ETH)。然而,由于主链的共识并不知道侧链的共识,因此,如果侧链中出现了分叉等情况,则侧链必须通过自己的共识算法来确定哪一个分叉应该保留,这削弱了侧链的安全模型。2 i `) x. l8 b6 E
问题看起来很棘手,不过QuarkChain提出了算力复用技术来解决。在玻色子共识框架下根链是知道下层分片链的共识情况的(注意分片可以运行POW以外的其他共识算法)。根链通过将分片块的块头(哈希值)放在根块中的方式,可以只包含每个分片链中的一个有效分叉。换句话说,根链通过它们的块头信息描述来每个分片的规范(canonical)链,所有的分片都要遵循根链定义的规范链,因为这些分片都正在运行根链优先的分叉选择规则。随着根链和分片之间达成共识,某人要对已经包含在根链中的分片块发起双花攻击都必须攻击根链上面的块,这就需要调用根链的 51%哈希算力。& q `8 w' T ]0 b
此外,为了激励根链的矿工将分片(头)打包到根块中,分片块的部分矿工奖励将贡献到根块中,从而由根链矿工获得,我们称之为税收。例如,如果税率为50%,则意味着分片矿工将获得生产该区块一半的奖励,而根链上的矿工将获得该分片产生的奖励的另外一半,他会努力打包尽量多的分片块(记录最长的分叉)以使其税收最大化。因此,我们预计根链上算力会很高,因为矿工的奖励也更多。
攻击向量
除了双花攻击之外,我们也考虑了当协作挖矿和算力复用技术遇到其他几种攻击情况,总结如下:( P }: x, I# n+ ~
**5 u9 t7 T* c! @4 _1 w& m
分片链上矿工发起黑名单攻击**% A$ x' r5 s( k% _
矿工掌握了一个分片上的51%算力后,攻击者可以通过创建一个较长的分叉,并在原先的分片块被打包到在根块中之前回撤/取消它,通过这种方式攻击者可以把某笔交易排除在(分片)链外。注意,现在所有算力较低的链都可能发生这种攻击,并且攻击者必须不断地从分片链中剔除包含该交易的块,直到所有其他矿工停止打包该笔交易为止。此外,一旦包含该交易的分片块被打包到根块中,攻击的算力成本将大幅上涨。* I: \, W0 N" X
2 O" M9 m$ @0 k+ m7 ^- Z+ }
根链矿工发起黑名单攻击4 l* W- L0 M# f4 H
当打包根块时,根链矿工可以通过打包一个自己制造的分叉来排除某些分片块。这意味着根链必须花费额外的算力创建一个分片的攻击分叉,当他要攻击的分叉其实更长时,则攻击者收集的区块奖励(税收)会变少。 U& y; z' N! f
根链矿工发起黑名单攻击的一个示意图3 F' c; w$ @% y: e7 F/ S
贿赂攻击
当一个分片上出现两个分叉,其中一个分叉将被打包到根链块中。理论上讲,一个根链矿工应该打包更长的分叉以获得更多的奖励。但是,如果较短分叉的矿工贿赂了根链矿工,则根链矿工可能会打包较短的分叉。不过,这种攻击很大程度上取决于税率和根链算力的分散程度:
/ E' P! O% M3 d3 H7 @+ r1 `
贿赂攻击示意图 W) d% w4 n2 ^) ?' R5 E( ]
$ m8 J, o: T+ B2 b
*** m) i7 i! {' a: V
总结**
在本文中,我们澄清了外界对51%攻击的一些误解(可能错误的觉得攻击很困难),并列举了对一些项目发起攻击的花费并不贵。受到软件开发中代码重用思路的启发,我们提出了一种在分片网络中的算力复用技术,该技术可以显著增强区块链的安全性。接下来,我们还描述了在玻色子共识框架下如何通过协作挖矿来实现算力复用并总结了潜在的攻击可能。