首先区块俩的“分叉”概念要从“系统升级”谈起,区块链主要基于去中心化的系统,而传统的系统大都是中心化的。
核心提示:文章资料收集于互联网,仅作为开发需求者的模式案例参考作用,与平台没有任何关系,如需定制系统请详询,玩家勿扰!
对于中心化的系统来说升级较为即简单,一般分为服务器升级和客户端升级。对于服务器升级来说,只需要在后台部署好即可一键升级;对于终端来说,一般都可以在软件库或者应用商店升级,而且各终端版本的不一致并不会影响用户的使用。联系王小姐189-微2421-电4445.
而对于去中心化的系统来说,升级模式比较复杂。因为其没有中心化的服务器,所以没有服务器升级;对于终端来说,可以在各自社区中下载、安装然后升级。而在去中心的系统中,不同版本的客户端会可能影响到客户的使用,甚至导致其分叉。
通过以上描述我们可以看到,去中心化系统的分叉是由于用户之间的“意见不一致”导致的。因为数字货币每次升级都需要获得社区的一致认可,如果无法获得大家的一致认可,区块链就会分叉。
区块链分叉类型
通常来说,如果新版本和旧版本之间能够互相兼容,称为“软分叉”,反之则称为“硬分叉”。
软分叉和硬分叉都可以向后兼容,这样才能保证新节点都可以从头验证区块链。而软分叉还可以向前兼容。指旧版本可以兼容新版本终端产生的区块。
在比特币中,还有一个最长链原则,即在挖矿中存在2个矿工几乎同时解出题目或计算出Hash值的情况,即同时挖矿成功。在这种情况下2个矿工会形成2个区块,其数据一定不一样。接下来对这2个区块进行分析:
区块链最长链原则
首先,这2个区块中记录的第一笔交易为:CoinBase交易(挖矿交易)。这笔交易没有转出地址,即没有任何人付给矿工这笔钱,这笔钱来自系统;矿工可以理所应当的记录自己获得了12.5比特币;所有节点都认可矿工这样记录,因此矿工就得到了挖矿收入。由于每个矿工只会把挖矿收入转入自己的地址,而每个矿工的地址不同,故2个区块中的第一条记录肯定不一样;
其次,这2个区块中打包的交易数据也不同。由于交易手续费不同,矿工都会优先打包手续费高的交易,当存在相同手续费的交易情况时,每个矿工的选择也会不同。
由于这2个矿工的区块数据都不一样,所以他们解题得出的结果也是不一样的,即计算出的Hash值不同,但都是正确答案,只是区块不同。于是,此时区块链中出现了两个都满足要求的不同区块。
那么,全体矿工这时该怎么办呢?
由于矿工在区块链中的距离远近不同,不同矿工接收到的这两个区块是有先后顺序的。一般情况下矿工们会把自己先看到的区块复制过来,然后接着在这个区块开始新的挖矿工作。而由于不同的矿工跟从了不同的区块,分叉出来两条不同的链,导致算力有差别。
经过一定时间后,两条链的长度一定会有差别。矿工永远认为最长链是正确的,当矿工发现更长链时,矿工会抛弃当前链,复制最长链,再次基础上继续挖矿,当所有矿工继续此操作时,该链就成为了主链。之前的短链会被抛弃,并消失。
区块链分叉分析
1.区块链产生孤块(软分叉)
区块链记账因网络延迟等原因,可能出现两个不同的区块,当短链被抛弃时会成为“孤块”,也就是所谓的“追随最长链原则”。
2.终端版本升级(软分叉)
软分叉指的是旧的节点并不会意识到区块链代码已经改变,并接受由新节点创造的区块,此时矿工可能还没有意识到区块链已经分叉了。
3.终端版本升级(硬分叉)
如果版本升级导致两个版本之间并不互联兼容,会产生两个互相不承认的链,而此时“最长链原则”无效,而交易所不支持旧版本产生的区块奖励,促进旧版本升级。
4.社区、链、币的分裂(硬分叉)
如果不是因为意外导致的两个不兼容的版本,而是一些人坚持不同版本的特征。会导致两个版本同时运行,且互相不接受对方版本的特征,此时产生了两个同时运行的链,社区也会分成两个。
而对于永久性硬分叉来说,此时并不是因为技术原因导致,而是因为彼此的利益问题造成的人性的选择,此时无法单纯从技术角度去解决。