|
|
|
|
矿机回收网
联系人:王经理
手机:18994010355 18108888591
微信号: 642849534
电话:025-58763550
网址:http://www.haifakeji.com |
|
|
| | | | 区块链分叉带来的安全挑战 |
| | 区块链分叉分为软分叉和硬分叉。本文主要讨论的是硬分叉,一种不支撑向后兼容的软件晋级方法。硬分叉是一致的割裂或许改变,一致就是区块链体系中各节点到达数据一致性的算法,正常情况下每个节点需要运转相同规则的算法,例如比特币运转的是根据PoW(工作量证明)一致,以太坊曾经也是PoW一致,最近经过“TheMerge”切换到了PoS一致算法。
分叉的原因有很多,在区块链傍边是一种很常见的现象,一般是短距离的分叉,这和一致算法有关,同一个高度上有时会呈现相互竞争的区块,但最终有的区块会被抛弃,只保存一个区块。但硬分叉不同,这一种是有计划有意图的分叉,一些节点客户端部署了与原网络不同的程序版别,生产出的区块只能在分叉链上经过验证,无法被原网络承受,也不承受原网络的区块。例如近期抢手的EthereumPoW(ETHW)分叉。假如要成功分叉一条区块链并不容易,并非直接复制原网络的代码即可,需要进行根本的修正才干确保它安全运转,为此,咱们总结了几种常见的安全问题及防护方法。
网络层
因为分叉链是独立于原网络的区块链,首要需要在网络层(P2P)进行阻隔:
1、种子节点
种子节点,也称bootnode或许seednode,是区块链启动时网络首要会测验进行连接的节点。分叉链在启动时首要连接种子节点列表里的节点,然后进一步发现网络中其它的对等节点,然后才干进一步同步区块,到达一致。因而必须要修正种子节点列表,防止连接到原网络的节点。
2、异形进犯
即便种子节点列表改变了,但并不代表分叉网络不会连接到原网络,因为双方的P2P协议是相同的,假如有一个节点无意中增加了另外一个网络的节点连接,那么两个节点将成功握手,并将对方增加到节点地址池。不仅如此,双方节点还会将自己节点里的地址分享给对方,然后造成双方网络节点池相互污染。关于这个问题,慢雾此前曾独自发表过《冲突的公链!来自P2P协议的异形进犯缝隙》。
为了解决地址池相互污染的问题,需要在通信协议上做网络辨认。前期的以太坊并不支撑网络分隔,但后续的版别中在协议里加入了NetworkID做为网络区别的标志,NetworkID一般是每个链的ChainID,例如以太坊主网的NetworkID和ChainID都为1,而ETHW初始版别中并未对NetworkID进行分叉,或许存在异形进犯缝隙。
在比特币网络中,运用的是Magic值来标识不同的网络,一般在chainparams里进行界说,例如比特币主网值为F9BEB4D9,测验网值为FABFB5DA。
一致层
1、买卖阻隔
一般与区块链交互时,咱们需要用自己的私钥签署一笔买卖,随后这笔买卖被广播到网络,并被矿工或许出块节点打包到区块中。但假如区块链呈现分叉,这笔买卖或许会被两个网络别离打包到不同的区块傍边,假定这是一笔原链上的转账,那么分叉链上也会有相同的一笔转账,显然这是一个非预期行为,会造成财物丢失。
这时就需要对买卖进行重放维护,在前期以太坊的版别中没有做这样的维护,后来EIP155之后在买卖结构中加入了ChainID,确保用户签署的买卖只用于当时网络。假如对以太坊进行分叉,那么也需要对ChainID进行重新界说,当然这并不是只修正装备里的ChainID这么简略,因为分叉链需要对旧的区块做兼容,所以需要在分叉高度之后运用新的ChainID,才干确保分叉链正常运转。
比特币的买卖结构中不存在ChainID,那么它是如何做重放维护的呢?比特币运用了一种叫做UTXO的模型,简略说它是对一笔买卖(UTXO)进行花费,而不是对账号进行花费,一般全新启动的网络不会存在相同的两笔买卖,也就不存在重放的场景。
但是在硬分叉的情况下,还是会存在买卖重放的问题,例如2017年的BCH分叉以及后来的BSV分叉。BCH经过在买卖数据签名增加SIGHASH_FORKID(0x40),使得BCH上的买卖和BTC的买卖不再相互兼容,然后到达重放维护的意图。
2、算力调整
在分叉前,原链占有全网所有的算力,那么依据PoW一致算法,它的出块核算难度也是比较高的。分叉后,算力分散到不同的区块链上,那么分叉链因为一致不足一般无法获得足够的算力去生产新的区块,区块的增长会陷入停滞。这时有必要降低分叉后的初始核算难度,给分叉链赢得一个快速调整算力的时刻窗口。
3、防备51%进犯
网络和买卖都阻隔开了,区块链分叉了,新区块顺畅产出,一切都看似正常。但是安全问题仍旧突出,它仍旧存在一种更遍及、更难以防护的进犯:51%进犯。
挖矿是逐利的,当呈现分叉币时,哪边的挖矿收益高矿工就会把算力切换到那个网络,但现实是分叉币往往币价低,导致全体的算力十分低。以ETHW分叉为例,咱们从2miners上看到,原ETH网络算力峰值最高超过900TH/s,而在写稿时ETHW的算力只有30TH/s左右,很多算力消失并不是功德,它随时能够对ETHW发起51%进犯。
对于这种51%进犯的防备简直没有什么很好的方法,只能经过增加承认数来防备。
运用层
咱们把建立在买卖上的运用,如根据虚拟机的智能合约,统归为运用层。区块链在分叉时,也会对运转在区块链上的运用发生巨大影响。
1、签名重放
签名重放与上文说到的买卖重放是相同道理的,有一些合约,例如GnosisSafe,它会在合约里验证用户的签名,假如签名里没有包括ChainID,那么这个签名十分或许能够在两个链上重放,导致财物丢失。
2、预言机失效
分叉后的区块链大都智能合约仍旧能够正常运转,例如Token合约、AMM合约,这些自运转体系不依赖于链下数据就能够安稳运转,但类似MakerDAO等借贷体系,高度依赖预言机的价格数据,在失掉链下喂价支撑后,它将无法继续运转下去。
3、价格剧变
区块链分叉了,一个运用一起运转在两个链上,用户该运用哪个链上的运用?哪个算是“正统”的呢?这个问题又回到了一致上,一般哪个区块链具有正统的一致,那么它上面的财物就会保存原有的价值一致,而另一个区块链上的财物会在瞬间失掉价值。
这种价格上的剧烈改变,会导致DeFi运用完全崩溃,借贷运用永久无法平仓,有一些有识之士会抓住分叉的时刻窗口,把“归零”的财物经过AMM等运用兑换成主链代币,然后保存了一些价值,在ETHW分叉事件中,咱们调查到了很多分叉链上的套利行为。
总结
至此,咱们从网络层、一致层和运用层对区块链分叉的安全性进行了剖析,能够看到其间存在的技能危险,对于分叉咱们需要十分审慎地对待。并且,不少分叉的背面不仅仅是技能革新的需要,有的或许存在商业上的直接利益,例如发起方在分叉中直接获取很多的分叉币,这些都需要用户准承认识,防止不必要的丢失。
区块链是一种去中心化的体系,它的晋级不依赖于单一个人或组织,因而分叉在区块链里难以防止,尽管给社区用户带来混乱,但也促进了体系向前发展以更好地服务社会。
{买卖矿机矿机托管上矿机收回网联系电话18108888591}
| | | | |
|
|