好书/好文 [学习笔记] 比特币共识的升级

aaron67 · 2019年01月14日 · 最后由 aaron67 回复于 2019年01月16日 · 41 次阅读
本帖已被设为精华帖!

https://aaron67.cc/2019/01/14/bitcoin-consensus-fork/


共识规则决定了什么样的交易和区块是有效的,是比特币网络中的节点能互相独立工作并达成一致的基础

上篇文章介绍了当区块链发生暂时分叉时,整个网络如何在短时间内自动达成一致

长期来看,为了演进比特币系统,添加新特性,修复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通过软分叉激活

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

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

Imgur

一家公司里有一些审计人员,还有一些交易员

交易员想开展一项当前不被公司认可的新业务,审计人员会拒绝这种新交易

有一天,某个机智的交易员想出了一个方法,“我要做一些衍生品合约交易,但会在交易记录上写成买入土地。当你们看到的时候,就在脑子中把土地替换为衍生品合约,一切照常,审计人员不会发现的。”

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

硬分叉

硬分叉会带来区块链的永久分叉

新版本软件产生的交易或区块,旧版本软件无法识别或验证通过,就像你使用 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)这些不同版本的比特币(同一协议的不同实现)

总结

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

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

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

一个自由的社区,会在发展过程中不可避免的产生分歧

分歧实在无法调和时,相较于陷入无尽的争吵和诋毁,停滞不前,通过硬分叉分道扬镳(获得算力支持并存活下来)可能是更好的选择

毕竟,各自按路线图好好发展,构建完整生态赢得更多用户才是最重要的,虽然这样的硬分叉会带来社区的割裂和短暂的混乱,但这是自由的代价

参考

共收到 2 条回复
aaron67 将本帖设为了精华贴 01月14日 23:31

你真是个高产的孩子

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册