想想大家会经常在新闻和论坛里看到某某币将要进行分叉,到底分叉是什么?软分叉和硬分叉又是什么?下面就来给大家分析分析。比特币是一套软件,对软件代码进行修改升级就经常会涉及到两个概念,一个叫硬分叉,一个叫软分叉。这到底是什么意思呢?社区里最常见的定义说是对共识的修改。但“共识”具体指的是什么,很难理解。我们还是多实际的修改代码层面来看下它们的定义吧。
硬分叉和软分叉在bitcoin.org上都有定义,但定义其实很模糊,为了防止我胡说(质疑bitcoin.org上的定义,确实让我诚惶诚恐。),我摘录原文:
硬分叉被定义成这样:
A permanent divergence in the the block chain, commonly occurs when non-upgraded nodes can’t validate blocks created by upgraded nodes that follow newer consensus rules.
https://bitcoin.org/en/glossary/hard-fork
区块链发生永久性分歧,在新共识规则发布后,部分没有升级的节点无法验证已经升级的节点生产的区块,通常硬分叉就会发生。
软分叉的定义是这样的:
A temporary fork in the block chain which commonly occurs when miners using non-upgraded nodes violate a new consensus rule their nodes don’t know about.
https://bitcoin.org/en/glossary/soft-fork
当新共识规则发布后,没有升级的节点会因为不知道新共识规则下,而生产不合法的区块,就会产生临时性分叉。
社区对区块扩容是该执行硬分叉还是软分叉的争议,我猜bitcoin.org上的这两个模糊的定义应该负主要责任。最大的责任是原文中的“consensus rules(共识规则)”定义不清晰,如果我们在去bitcoin.org上寻找“consensus rules(共识规则)”是什么意思,原文是这样的:
The block validation rules that full nodes follow to stay in consensus with other nodes.
https://bitcoin.org/en/glossary/consensus-rules
完整节点为了和其他节点维持共识而遵循的区块验证规则。
这个对共识的定义,在逻辑上就犯了循环认证的谬误,这个定义就是说“共识就是为了维持共识的规则”。这和许三多说的话是一样的:“有意义就是好好活。”“那什么是好好活呢?”“好好活就是做有意义的事情。”其实他根本就没有回答什么是好好活,以及什么是有意义。
另外这两个定义中把硬分叉定义为“permanent divergence(永久性分叉)”,和把软分叉定义为“temporary fork(临时性分叉)”,这种几乎是文字游戏的定义法,让社区很多人害怕硬分叉。认为硬分叉是一个非常可怕的事。
“共识”这个词忽悠了太多的人了。其实在“不破坏共识”包装下的软分叉,本质上和硬分叉是一样要修改相同的对象的,而且更可怕的代价是向前兼容,即要求不升如何下载火币网的交易级的软件去忽视升级过的软件生产的数据和代码,冒这种风险得来的好处仅仅是懒得升级软件。我想任何理智的人都是不愿意接受这种风险收益比的。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。