https://mp.weixin.qq.com/s/wIDTs2J1ZkLkAEHqQnkYnw

什么是分叉?为何对区块链发展至关重要?

Uselink公有链 Uselink公有链 2018-12-20

在区块链世界,我们经常可以听到“分叉”、“软分叉”、“硬分叉”等等字眼,首先,什么是分叉?

什么是分叉

分叉是区块链体验的核心,类似于系统升级。“分叉”一条链,本质上就是要对运行区块链的软件做出改变。根据不同的情况,分叉所引发的问题也非常多,有的很快能够达成共识,有的则极具争议。

一个区块链核心开发人员团队如果有长期发展规划,则可以使用分叉来推动区块链网络升级,但有时候,有些“叛徒团队”也会在正常的发展路线之外提出并尝试分叉。但从另一方面来看,分叉也能够展示这些区块链网络的去中心化特质。毕竟区块链讲得就是真正的去中心化,没理由不给分叉吧。

知道什么是分叉,而区块链分叉其实分为“硬分叉”和“软分叉”,软分叉很少会引起争议,因为它们是向后兼容区块链的前叉实现(pre-fork implementation),而且在区块链中没有新的分支创建。

而当系统升级与旧版本区块链软件不兼容时,就会发生硬分叉,任何不升级到新版本的人都会被“遗忘”在老区块链上。不仅如此,一旦绝大多数开发人员和挖矿节点都支持对区块链进行升级,那么这个“硬分叉”过程就会发生。

为何说分叉对区块链的至关重要

举个例子:

最受瞩目的两个区块链——比特币(BTC)和以太坊(ETH)都经历过硬分叉。

2015 年 7 月 30 日,"V神"和以太坊基金会创建了第一个智能合约平台,并设计了 TheDAO 以太坊合约。2016 年 4 月 30 日正式部署了 The DAO 智能合约,就在同年 6 月 17 日,The DAO 被黑客攻击,黑客共盗取了约 5500 万美元的以太币,导致其价格也从 20 美元暴跌到 15 美元,对以太坊社区造成了巨大的伤害。为了挽回投资人的损失,社区一部分人想要使用硬分叉将被盗窃的资金还给原来的代币持有人,但也有一部分人反对这一行动,认为作为一种货币形式,硬分叉会使以太坊代币的完整性失效,而且一旦开了硬分叉的头,后续可能会导致出现其他不良硬分叉。

最后以太坊还是决定实施硬分叉,但是在实施升级时许多不同意见的人拒绝升级它们的软件,这也让此前的以太坊区块链上留下了大量用户,而原来的那个区块链现在被称为以太坊经典(ETC),新分叉则保留了原名,以太坊(ETH)。以太坊和以太坊经典共存的相对平和,这种共存似乎对社区而言也是一件好事。

相比于“和谐“的以太坊硬分叉,比特币的硬分叉似乎没有获得令人满意的解决。

在 2017 年 8 月 1 日,比特币区块链经历了一次重大的硬分叉。大部分开发人员和矿工把他们的节点升级到了新的且不兼容的比特币软件版本,本次分叉将比特币分成了两个分支:一个是主分支,另一个则是全新的、可行的二级分支,现在被称为比特币现金(BCH)。

如今,比特币和比特币现金两个加密社区各自独立,而且也都十分活跃,而从2017年中旬开始的比特币硬分叉争论——什么是真正的比特币——也一直持续到了今天。

无论是硬分叉还是软分叉,分叉都是区块链体验中不可分割的一部分。有时候,区块链进行分叉时社区很快就能达成共识,而且基本没有任何争论发生,也让开发过程变得轻松简单;但有时,区块链分叉会导致社区内部产生分歧。

https://mp.weixin.qq.com/s/nBr9RY7wExvW9bGnN1AVCg

以太坊基金会官宣:君士坦丁堡升级注意事项

原创: Hudson Jameson Unitimes 1月12日

如果我是矿工或者节点运行者,但是我没有参与此次升级,会怎么样?

如果你使用的是未更新到最新版本(上面列出)的以太坊客户端,升级之后,你的客户端将同步到预分叉(pre-fork)区块链上。你会被锁在一个不兼容的链上,按旧规则运行,而且无法发送以太币或者在升级后的以太坊网络上进行任何操作。

 
 

最新文章

  1. 基础3.Jquery操作Dom
  2. JAVA基础知识之JVM-——类加载器
  3. javascript练习----复选框全选,全不选,反选
  4. [Angular 2] Angular 2 Smart Components vs Presentation Components
  5. Java中static作用及用法详解(转)
  6. NSURL
  7. registerForRemoteNotificationTypes: is not supported in iOS 8.0 and
  8. MyReport报表引擎2.7.6.7新功能
  9. [iOS]C语言技术视频-11-指针变量练习一(交换值)
  10. 【模版 Floyd最小环】
  11. 区分getchar(),getch(),getche()三个函数:
  12. JS中让新手倍感震惊、违反直觉、出乎意料、的一些知识点汇总记录
  13. bitset中_Find_first()与_Find_next()函数
  14. 学号 20175201张驰 《Java程序设计》第4周学习总结
  15. ASP.NET Core 添加NLog日志支持(VS2015update3&VS2017)
  16. python中split()和split(' ')的区别
  17. jQuery跨域调用Web API
  18. Mac mysql sql_model引起的问题
  19. DOM心得
  20. 撩课-Web大前端每天5道面试题-Day35

热门文章

  1. MRC下delegate 野指针问题
  2. Rocketmq 集群部署
  3. Win10删除或是不显示快速访问中最近使用文件记录
  4. GNS3 介绍
  5. RT-Thread--时间管理
  6. Centos7下安装MongoDB4.0.10
  7. idou老师教你学Istio 28:istio-proxy check 的缓存
  8. Python3+Appium学习笔记08-元素定位
  9. Vant UI 组件库如何做rem适配?
  10. C# EPPlus 导出Excel