
接触比特币一段时间的人,多半听过“硬分叉”和“软分叉”这两个词。我的第一反应是“分叉还有软硬之分?!怎么个软/硬法?”
首先,来说说分叉是什么。比特币一个区块容量只有1M(对,你没看错,就是1M),只能容纳4000笔交易,每10分钟产生一个区块,平均每秒可以打包7笔交易。当然这满足不了我们大量交易的需求,曾经最糟糕的情况是有上万笔交易待处理。设想一下,你在超市里买东西用比特币付款,商家迟迟没收到钱,你咋走呢…
为了解决区块容量、交易处理速度的问题,我们就需要进行扩容。其实就是对比特币规则(代码)做一些改变,比如把容量从1M改为20M,或者把部分信息拿出来放到另外的地方去(隔离见证)。但是呢,众所周知比特币是去中心化的,任何一个方案都很难百分百通过,于是就出现了分叉。
一句话总结分叉:对比特币规则更改出现不一致的意见。
其次,再来说硬分叉和软分叉。比特币原有规则中有少部分规则定义不明确,软分叉就是在这部分规则上做改变,因此节点不会认真审核也无法达成统一判断,就像没有标准答案的问题很难说谁对谁错。在软分叉情况下,未升级的节点无法识别升级后节点挖出来的区块有什么不一样,所以旧节点能接受新节点挖出来的区块,如此不会产生新链,节点可以自由选择升级或不升级。
而硬分叉是对规则做了一些较大的改变,未升级的节点不能识别和接受新节点产生的区块,升级后的节点会在另一条链上工作,因此会产生两条链。
软分叉是新旧节点相互能接受对方的区块,而硬分叉是新节点可以接受旧节点的区块,但旧节点并不接受新节点的区块。
由于硬分叉只需要考虑新节点能接受旧节点的区块就行,所以硬分叉有更大的操作空间,我理解为它能更好地扩容。而软分叉其实是靠“骗”过旧节点,让其识别不出新节点产生的区块,来达到不产生支链的目的,稍有不慎软分叉也能变成硬分叉。
最后,我暂时的看法是更支持硬分叉。毕竟如果比特币想支持更大的交易量,扩容是不可避免的,我觉得只是修改定义不明确的规则很难满足我们的需求,因此更支持硬分叉。当然,牵一发而动全身,比特币在庞大的市值前,硬分叉也该谨慎。
我的疑问是,为什么一些节点不愿升级呢?
网友评论