比特币网络节点能互相独立工作并达成一致的基础是什么?

作者:周全  时间:2020-03-20  分类:区块链知识教程  

  本文于2019年1月5日首发于aaron67.cc

  作者:周全

  原文:比特币共识的升级

  长期来看,为了演进比特币系统,添加新特性,修复 bug,共识规则并不总是一成不变的。

  与传统的软件升级不同,比特币没有官方机构,其软件的升级,需要协调和考虑多数系统参与者的意见。

  这篇文章,介绍升级共识规则的两种方式,软分叉(Soft fork)和硬分叉(Hard fork)。

兼容性


在开始之前,先介绍两个软件开发中的概念,向后兼容(Backward Compatibility)和向前兼容(Forward Compatibility)。
这里的“前”和“后”,是根据英语的习惯描述的,以现在的软件为基准:

  “后”(Backward)指的是向后退,是过去

  “前”(Forward)指的是向前进,是未来


Office Word 2007 可以打开 Office Word 2003 创建的 doc 文档,是向后兼容。
Office Word 2007 可以打开 Office Word 2010 创建的 docx 文档,是向前兼容。
一般来说,软件做到向后兼容,比做到向前兼容要容易。

软分叉

  软分叉的意思是,比特币协议发生了一些变化,但旧节点却不能发现这个变化,从而继续接受新节点用新协议挖出的区块。

  新版本软件产生的交易或区块,可以被旧版本软件验证通过并接受,反过来也成立。

  旧节点将会在他们不能完全理解的新区块上继续添加区块。

  软分叉不是真正的分叉,如果有节点没有升级软件,软分叉后的区块链看起来就像下面的样子。

  比特币网络节点能互相独立工作并达成一致的基础是什么?

  软分叉很好理解,就像你使用 Office Word 2007 和 Office Word 2010 一样。

  你能用 Word 2007 打开和编辑 Word 2010 创建的 docx 文档,反过来也一样


但你不能在 Word 2007 中使用 Word 2010 提供的新功能,就像软分叉后,旧版本软件无法知道新的共识规则一样

  还记得CLTV时间锁么,由 BIP-65 通过软分叉激活。

  新版本软件因为知道新的共识规则,会在验证交易时验证时间锁是否已经释放,但运行旧版本软件的节点并不会这样做。

  这正是软分叉被诟病的地方,软分叉放松了验证

  比特币网络节点能互相独立工作并达成一致的基础是什么?

  一家公司里有一些审计人员,还有一些交易员。交易员想开展一项当前不被公司认可的新业务,审计人员会拒绝这种新交易。有一天,某个机智的交易员想出了一个方法,“我要做一些衍生品合约交易,但会在交易记录上写成买入土地。当你们看到的时候,就在脑子中把土地替换为衍生品合约,一切照常,审计人员不会发现的”。

  这里的审计人员就是拥有算力的全节点(运行着旧版本软件),而交易员的行为就是软分叉。

硬分叉

新版本软件产生的交易或区块,旧版本软件无法识别或验证通过,就像你使用 Word 2003 无法打开 Word 2007 创建的 docx 文档一样。
对某次硬分叉升级,如果绝大多数人都同意(都会使用新版本的软件),硬分叉后的区块链形如下图。

  比特币网络节点能互相独立工作并达成一致的基础是什么?

  

  因为不存在分歧,所以旧链不会被继续延长(没有算力支持),硬分叉后仍只有一条链。


但如果双方矛盾不可调和且都有算力支持,硬分叉后便会有两条链存活下来。

  比特币网络节点能互相独立工作并达成一致的基础是什么?


因为区块大小的争论无法调和,Bitcoin Cash(BCH)从 Bitcoin(BTC)的区块高度 478558 硬分叉诞生
因为发展理念的不同,Bitcoin SV(BSV)从 Bitcoin Cash(BCH)的区块高度 556767 硬分叉诞生

总结

  软分叉和硬分叉是改变共识的两种方法,它们都是“向后兼容”的,否则新版本的软件将“不认识”过去的区块,无法从头验证整个区块链。

  软分叉还是“向前兼容”的,旧版本软件会接受新版本软件产生的区块,只是不能完全“理解”而已,这在某种程度上放宽了共识的验证。

  硬分叉不是“向前兼容”的,没有分歧的硬分叉升级不会产生两条链(不会产生新的币)

  一个自由的社区,会在发展过程中不可避免的产生分歧。当分歧实在无法调和时,相较于陷入无尽的争吵和诋毁,停滞不前,通过硬分叉分道扬镳(获得算力支持并存活下来)可能是更好的选择。毕竟,各自按路线图好好发展,构建完整生态赢得更多用户才是最重要的,虽然这样的硬分叉会带来社区的割裂和短暂的混乱,但这是自由的代价。

  请注意,在本系列文章中一般使用 Bitcoin 来指代协议,使用“比特币”来泛指 Bitcoin(BTC)、Bitcoin Cash(BCH)和 Bitcoin SV(BSV)这些不同版本的比特币(同一协议的不同实现)

参考

  精通比特币(第二版)译文 原文

  有关共识和分叉 -硬分叉和软分叉有什么区别?(Mike Hearn)

  On consensus and forks

版权信息
作者:周全
来源:BSVOfficial

关于我们

联系我们

作者进驻

公众号

Copyright © 2013 比特巴 www.btb8.com
只为您提供客观公正有用的比特币 区块链 加密数字货币新闻、技术教程、行情分析、行业人物资讯
手机版