APOW,防御Diff Strand攻击的“升级版”PoW模式

导读:KMD首席开发人员jl777在PoW的基础上进行改进,创新开发出APoW模式。它有何优势?让我们一起来看看。
头等仓APP下载

导读:KMD首席开发人员jl777在PoW的基础上进行改进,创新开发出APoW模式。它有何优势?让我们一起来看看。

区块链的安全性不是与生俱来的。虽然像比特币和以太坊这样的大型区块链安全系数高,但众所周知,小型区块链无法达到与大型区块链同等的安全水平。如果区块链网络既小又脆弱,那么面对恶意攻击时便束手无策。

一方面,PoS区块链面临着“无利害攻击(Nothing at Stake)”、“ Weak Subjectivity”等威胁。另一方面,PoW区块链不得不防范51%攻击,以及像“Diff Strand”这样的模糊攻击。

“Diff Strand”攻击指恶意矿工突然将小型网络的算力和挖矿难度提高至极高水平,然后迅速抛弃网络,使网络陷入高难度挖矿中,剩余的矿工几乎无法处理交易或寻找新区块。

为了防止51%攻击,Komodo使用了延迟工作量证明(dPoW)安全机制,延迟工作量证明回收比特币网络的算力,使每一枚集成dPoW的代币享受与比特币同等的安全系数。

面对“Diff Strand”攻击的威胁,Komodo给出了新解决方案。最近Komodo首席开发人员James‘jl777’Lee对传统的工作量证明规则进行了轻微的修改,使网络能快速、自然地从“Diff Strand”攻击中恢复过来。Jl777修改的新共识算法叫做Adaptive Proof of Work(简称APoW)。

APOW,防御Diff Strand攻击的“升级版”PoW模式 

了解工作量证明和挖矿证明

了解Adaptive Proof of Work(APoW)的第一步是了解普通PoW网络的工作原理。

简而言之,PoW使得区块链网络中的所有计算机,也就是矿工,相互竞争。每个矿工都争先恐后地解答一个复杂的数学难题。

第一个找到答案(随机数)的矿工将挖出一个区块并获得相应的区块奖励。然后一个新的数学难题生成,竞赛又开始了。这种重复的竞争激励矿工花费硬件、时间和技能在挖矿上,因为他们都想挖出一个区块,从而获得区块奖励。

各个区块链的区块奖励不等。例如,KMD区块奖励是每个区块3个 KMD。比特币区块奖励目前为每个区块12.5个BTC,虽然开始时是每个区块50个BTC,但每挖出21万个区块奖励就会减半。下一次区块减半将在2020年5月,届时BTC区块奖励将降至每区块6.25个BTC。

算力和难度调整

PoW区块链有一个检查网络算力的内置机制,也就是所有矿工挖出新区块的总算力。算力以1 TH / s来度量,1 TH / s=每秒1,000,000,000,000次哈希。

内置的算力检测器可以测量网络上使用了多少算力,并定期调整矿工要解决的数学难题的难度。这就是所谓的难度调整算法(DAA)。

DAA的原理很简单:链的算力越高,矿工要解决的问题就越难。确保了矿工不会过快地找到区块,如果问题太简单的话,出块时间就会加快。同时避免了长时间不出块的情况,如果问题太复杂,出块时间就会异常缓慢。

拿比特币来说,每2016个区块调整一次难度,大致相当于每两周调整一次。新难度是基于前两周网络的平均算力。基于这个平均值,网络的难度设置为:如果网络保持相同的平均算力,则每10分钟出一个新区块。

当然,各个区块链的出块时间不同(Komodo区块链大约每60秒产生一个新的区块),所以调整难度的方式不同。大多数区块链都快于比特币慢得像蜗牛一般的10分钟出块时间,因此大多数区块链调整难度的频率高于每两周一次。

虽然调整PoW区块链难度的频率和方法可能不尽相同,但所有PoW区块链都必须调整难度。否则,随着大量新矿工涌入,以及随之带来的算力,将以不可比拟的速度加快出块时间。

相反,如果大量矿工突然离开网络,算力会突然下降,剩下的矿工可能需要几天甚至几周才能找到一个区块。简而言之,这就是所谓的“Diff Strand”攻击。

解析Diff Strand攻击

“Diff Strand”攻击指一个恶意矿工或一组矿工控制了小型区块链网络的大量算力,导网络算力骤增,从而挖矿难度飙升。一旦挖矿变得异常困难时,所有新加入的恶意矿工就会迅速地离开网络。

“Diff Strand”攻击的后果是,挖矿难度被卡在一个较高水平。当恶意矿工离开网络时,他们带走了网络的绝大部分算力。因此仍在挖矿的矿工需要花费很长一段时间才能找到新区块,可能几周甚至一个月。由于DAA只是每隔X个区块调整一次难度,因此在下一次降低难度之前,仍需挖出一些新区块。

如果通常区块链每60秒生成一个区块,整整一个月不产生新区块就相当于宣告网络死亡。大家无法发送或接收交易,实际上,当区块链停滞时,其代币的价值就消失了。

Diff Strand攻击的案例

上面讲解的内容也许你不是很明白,我们用一个例子来让你真正掌握“Diff Strand”攻击。

拿Commercium举例再好不过了,它使用了一个流行的哈希函数Equihash,Equihash具有大量可用算力,而Commercium网络的算力很小。根据crypto51.app的数据,可以在算力租赁网站NiceHash上租用整个Commercium网络高达35,000%的算力(撰写本文时)。您能以约10美元/时的价格租用2倍以上Commercium的网络算力。

并非所有PoW区块链都使用同一加密哈希函数。例如,比特币使用SHA-256,莱特币使用Scrypt,以太坊使用一个名为Dagger Hashimoto的专用哈希函数。

而Zcash、Zclassic、Horizen、Komodo、Pirate Chain、HUSH、Bitcoin Private和Commercium都使用了Equihash算法。下图表示各个Equihash链的算力:

 APOW,防御Diff Strand攻击的“升级版”PoW模式

如图所示,算力分布非常不均匀。在本例中,也就是在Equihash算法的情况下,Zcash网络托管了几乎所有的Equihash算力。现有Equihash链使用的算力中,约90%来自Zcash。

而Komodo、Pirate Chain和HUSH都受到了比特币网络延迟工作量证明(dPoW)的保护。即使这些链的算力相对较少,得到了比特币网络的保护后,便可防止51%攻击,保障网络安全。

即便将Zcash从上图中移除,显然算力仍然分布不均匀。

 APOW,防御Diff Strand攻击的“升级版”PoW模式

假设仅控制Horizen10%算力的矿工开始挖Commercium。这意味着35MH/s的算力将从Horizen移动到Commercium,Horizen的总算力变成315MH/s,而Commercium将从原本的0.7MH/s提升到35.7MH/s,算力提高了50倍以上。

因此,当DAA下次调整网络难度时,挖矿难度也将增加大约50倍。

现在,假设所有最近加入Commercium网络的矿工都打算切换到另一条Equihash区块链上。Commercium的算力将继续回落到0.7MH/s水平。

由于网络会定期调整难度,因此下次调整时网络就会限制在一个高难度水平中。

网络剩余的矿工,即为Commercium网络贡献0.7MH/s算力的矿工,没有足够的算力来找到比原始难度高50倍难度的新区块。网络可能需要几周甚至一个月的时间才能找到一个难度级别为35.7MH/s算力的区块。

这就是一个“Diff Strand”攻击。大量矿工涌入导致区块链,难度增加数十倍甚至数百倍之后,矿工们纷纷抛弃该网络,网络陷入困境,无法找到新区块。由于矿工无法找到新区块,网络完全无法处理交易,也无发送或接收代币。

这种打击是毁灭性的,之前小型区块链网络都无法反抗这种攻击,直到Komodo开发了解决方案,情况才有改变。

Adaptive Proof of Work

Komodo首席开发人员James‘jl777’Lee解决了“Diff Strand”攻击,他将解决方案命名为Adaptive Proof of Work。Adaptive Proof of Work可以根据网络瞬间和大额算力变化来调整难度。事实上使用APoW,区块链网络可以做到在一个区块的时间间隔内调整目标难度!

这种新的工作量证明变体有三个主要组件:时间戳保护、区块到区块的阶梯状和N*N难度调整。

时间戳保护

由于APoW支持在区块与区块间调整难度,因此在某种程度上需要保护时间戳。否则,矿工可能会回溯区块,然后将下一区块的难度大大降低,这样一来他们操控难度并私下连续挖两个区块(或者更多),获取双倍区块奖励。

为避免这种私下挖矿的情况,APoW设定为需经过一定时间才能激活:最宽松的回溯时间加上最宽松的未来时间戳,再加上少额保证金,确保私下挖矿的矿工无法操纵时间戳,随意调整APoW调整来增加收入。

区块到区块的阶梯状

Adaptive Proof of Work根据最近挖出区块的出块时间中位数调整难度,而不是只根据前一个区块的出块时间而定。

例如,一个区块可能在45秒的时间内被挖出,而区块链目标是60秒的出块时间。偶尔会发生这种异常值情况,这仅仅只是一个统计数字上的问题。假设一个标准正态分布,有一个确定的平均值,大约有4%的区块高于或低于平均出块时间2或3个标准差。

 APOW,防御Diff Strand攻击的“升级版”PoW模式

如果APoW只根据某一个区块(恰好这个区块是一个异常值)调整,就可能做出不准确的难度调整。在当前的示例中,仅用45秒就找到了区块,比目标出块时间整整快了25%。因此,如果APoW只调整这一个区块的难度,将增加25%的难度。大大增加了系统对一个简单的统计异常值做出反应的难度。

如果,APoW根据最新几个区块的出块时间中值调整难度。这个指标更可靠,判断是否需要调整难度,如果需要,调整多少。

调整指数衰减式难度

APoW的第三个同时也是最后一个组件是指数衰减算法,这个算法可以帮助快速调整“Diff Strand”问题,但不会被恶意矿工滥用。

在电子工程师Zawy(一位被公认为难度调整算法的权威人士)的帮助下,Komodo首席开发人员James‘jl777’Lee添加的代码几乎完全解除了“Diff Strand攻击”的负面影响,同时还防止了操控和私下挖矿的情况。算法根据“3^延长时间/出块时间”调整难度。

其结果是,算力和难度显著上升之后,继而又大幅下降,挖出新区块变得更加容易,直到难度根据网络的真实大小稳定下来。

假设一个小型区块链网络的目标出块时间为60秒,算力和难度增加了100万倍。而导致算力增涨100万倍的矿工突然离开网络,剩余矿工就被困在难度增加了100万倍的网络中,无可奈何。

正常情况下,“Diff Strand”攻击会削弱区块链。网络可能需要几天甚至几周的时间才能找到一个区块,具体时间取决于攻击和网络情况。

然而使用APoW,网络可以快速恢复正常状态。

Zawy和jl777认为:

100万倍算力攻击可以在7个区块时间内将难度增加50万倍。通常,这种攻击需要数百个区块才能稳定下来。恢复大约需要10分钟左右,也就是用9个区块抵消更快生成的7个区块,即净中值或接近于区块数的中值。我们将继续全力以赴解决DAA问题。

在测试链上应用Adaptive Proof of Work

编写Adaptive Proof of Work代码并在测试链上实现时,Komodo社区一起参与测试了APoW在实际“Diff Strand”攻击中的恢复能力。

为测试APoW目的而创建的测试链命名为ADAPT,诞生于2019年7月31日。Kolo、Decker、MrLynch和SHossain都参与了测试。

7月30日世界时20:00,测试团队开始在ADAPT链上启动ASIC挖矿,并将尽可能多的算力加入到ADAPT网络中。测试团队用所有算力挖了30分钟,在时间戳世界时20:31:48第2374区块完全停止了ASIC挖矿。

最高哈希速度达到1.1MH/s,ADAPT测试链难度达到120万。下图为测试团队矿池为ADAPT贡献的算力。

 APOW,防御Diff Strand攻击的“升级版”PoW模式

当团队在第2374区块停止ASIC挖矿之后,网络上只剩下一个挖矿节点,即一个只有一个线程的CPU在挖矿。这个CPU花了大约半个小时才生产出区块,这些被挖出的区块都以6个区块为一批次。

挖出456个区块之后,ADAPT测试链的难度从120万下降到9。唯一的CPU矿工花了16.5小时挖出这456个区块,平均每个区块耗时约2.17分钟(2分10秒)。

针对APoW的测试,Komodo的首席开发者jl777认为:

我们刚刚做了一个挖矿攻击测试来测验Adaptive Proof of Work的效用。先是将难度提高到120万,只剩一个CPU挖矿,来让网络恢复正常。当然如果没有APoW,这个CPU是根本无法恢复网络的。有了APoW,即使是100万的“Diff Strand”攻击也可以恢复。每隔13多分钟,就会出现6个区块。在难度为100万的情况下,第一个出块时间间隔近30分钟,但随着时间的推移,间隔逐渐缩小,网络将每15分钟左右生成6个区块。因此我预测在一天之内(并非10年!)APoW就能使“Diff Strand”恢复正常。

APoW测试非常成功,Komodo团队将于2019年10月31日将该特性添加到Antara框架中。之后,所有使用Komodo技术推出Smart Chain的第三方项目都将用APoW预防“Diff Strand”攻击。

再加上Komodo的延迟工作量证明(dPoW)安全机制,该机制利用比特币网络的巨大算力来防止51%攻击,Antara Smart Chain高度安全,支持免费托管代币和应用程序,不受攻击或操纵的威胁。

本文由 区块链资讯平台头等仓 作者:头等仓主编 发表,其版权均为 区块链资讯平台头等仓 所有,文章内容系作者个人观点,不代表 区块链资讯平台头等仓 对观点赞同或支持。如需转载,请注明文章来源。
头等仓APP下载

发表评论