如何保护和防止51%区块链攻击
扫描二维码
随时随地手机看文章
什么是51%的攻击?
51%的区块链攻击是指矿商(通常借助nicehash等哈希值租用服务)获得超过51%的网络哈希值。根据当前挖掘块的难易程度来计算网络哈希值。虽然有些区块链的平均哈希率= 2016年区块的难度,但真正的哈希率是未知的,因此从未报告过。
它是从在一定难度下找到解决方案的时间开始计算的。一旦达到了总哈希值的51%或更多,他们就会比实际的区块链挖掘更多的块,同时传输一些硬币的交易,这将是双倍的开销。澄清一下:双重支付是在攻击后反转的交易,是攻击的盈利向量。
区块链将跟随最长的链。攻击者挖掘比实际链更多的块,连接到所有可能导致网络重组的节点。这种重组包含了双重支付的代币,通常被送到交易所从攻击中获取利润。
一个交易所需要3个确认,以比特币为例。恶意行动者需要连接到所有节点进行重组,然后挖掘3个以上的块来实现所需的确认,然后在交易所出售资产获利。这实际上是通过将所有块标记为孤立块,将代币返回给恶意参与者。孤立块是被挖掘但被区块链拒绝并标记为无效的块。通常,当某人比另一个挖掘器早挖掘一个块时,就会出现孤立块。
这就是为什么现在的交换器将确认时间调整为总哈希率,因为对于恶意参与者来说,使用较低的网络哈希率和较低的确认时间启动51%的攻击更容易,也更划算。
如何执行51%的攻击
要求1 - Hashpower
恶意参与者必须获得并通常持有成功攻击所需的网络哈希率的51%以上。如要攻击商业网络(2.9 Msol/s),操作者只需要超过1.5 Msol/s的
哈希值/计算/采矿能力。
要求2 -全节点服务器和私有矿池
参与者编辑区块链代码以允许在不同步任何对等点的情况下挖掘(默认情况下,如果允许挖掘,我们必须有一个同步的对等点)。他将整个节点服务器同步到当前块高度,断开与主区块链网络的连接,并在关闭对等节点的情况下开始挖掘。
一旦获得,他执行他的双重支付,继续挖掘所需确认高度和重新连接他的节点到区块链。他现在开始重组区块链,方法是通知一个块高度高于´合法链的链,将对等点传递给点。
保护免受51%的攻击
主节点的实现有多种用途,从数据存储到即时swift-tx事务。商业广告公司的目标是实行信息召回制度。
所有计算机都连接到DNS(域名系统)服务器,该服务器执行信息的查找或收回,将域名转换为IP地址。
商业化将有一个基于协议的块查询系统,就像DNS:
!ActivateBestChainStep(state,pindexMostWork,pblock &&
pindexMasterNodeCheckPoint-》 GetBlockVerifyHash() && pblock-》 GetHash()== pindexMostWork-》 GetBlockHash()?pblock
上面的代码分为两部分,草书部分是当前的区块链代码,而粗体部分是它在“激活”最佳链之前调用一个函数来验证哈希的地方。
pindexMasterNodeCheckPoint - 》 GetBlockVerifyHash()
上面是一个检查点函数,其中每个块都变成一个检查点,他是不可变的,任何历史记录都不能逆转。如果不存在来自这些检查点的块哈希值,则区块链将不起作用。重组的第一线能够决定是否放弃或者接受重组,可以阻止重组的发生和扩散到其他同行。如果节点能够知道整个网络的高度,它就会知道重组是否是恶意的。
请记住,节点必须同步到区块链的当前高度。我们只是不希望它同步到恶意的高度。
节点将同步到恶意链的当前高度,并通过询问所有主节点链中是否有当前块哈希值来验证当前块的高度。
000000406 bf82cd29da2f9174ddf04ebc56abae7870fe2192511ecb82ecc15c3
以上内容将通过区块查询系统提交。如果大多数一致意见是YES或1,则节点将接受重组或同步,并将块高度广播给其他节点。如果大多数一致意见是NO或0,则节点将放弃重组,返回到重组前的最后一个已知块,并从其对等节点进行同步。
换句话说,如果当前合法链块编号12880和重组是12999块, 则会说: OK该节点广播的块高度为12999,但是通过大多数masternodes的验证,这是个骗局,那么它将被禁止使用正在广播较长链的对等点。
块查询系统可视化集成
结论
通过哈希率和块查询系统通过主节点控制网络将需要预付成本和相当数量的CMM,这将导致攻击向量无利可图。
此外,随着主节点网络的增长,51%攻击的可能性会减少。