前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >块66:软分叉

块66:软分叉

作者头像
申龙斌
发布2018-03-06 11:36:54
6800
发布2018-03-06 11:36:54
举报
文章被收录于专栏:申龙斌的程序人生

阅读此文前,强烈建议先预习分叉这篇文章。

类比时刻:

我在2017年5月23日开设了《区块链生存训练》饭团,三个多月已经完成了65篇文章,使用简单的语言和类比介绍区块链的每一个基本概念,我模仿区块链的区块高度的思路,给每篇文章也弄了一个编号,这样就有了块0、块1、......,直到今天的”块66“。

写这些小块块文章通常要参考好几本权威书籍,消化到自己的肚子里,然后再搜索一堆网文,寻找恰当的类比,用自己的话表达出来,憋出一篇文章经常需要几个小时。然而最近要搞一件大事,写文章的精力慢慢有点不济,就寻找了几位区块链自媒体的朋友共同创作,当然内容仍要经过互相审核,绝对保证质量,我创办这个饭团的信条没变:

“每篇文章必给大家带来价值”

所以,前面66块文章全都是我自己撰写的,但在后面的这些天,将是我们这个创作团队给大家带来更高质量的内容,当然我的文章仍占一定比例。

我啰嗦了这么多,与软分叉有什么关系?现在进入类比的正题。

假设“块67”将由黄黎执笔完成,那么我的饭团将迎来一个软分叉的历史时刻。虽然呈现在大家面前的仍然是一篇一篇的小文章,但是作者将不是我一个人,而变成一个团队、一个集体。

要点一:软分叉其实并没有分叉

上面类比的意思就是,虽然每个块的作者发生了变化,但整个创作团队仍是共同维护一系列的文章,实际上并没有分叉。

在比特币里也是这样,软分叉只是区块的版本或协议发生了变化,但所有的区块仍在一条区块链上,实际上并没有分叉。

要点二:新区块欺骗旧软件

文章的作者发生了一点变化对于系统可能影响并不大,但”饭团APP“是有多个版本的。假设饭团1.0版本的程序员考虑不全,只允许阅读申龙斌团长的文章,其它嘉宾的文章虽然不报错,但却无法正常阅读。为此,饭团发布了2.0版本,修正了上述问题,所有文章都可以正常打开并阅读。

现在回到区块链的世界,用户进行比特币交易会安装不同版本的钱包软件,有人安装了0.8.1的旧版本软件,它知道有新区块67产生了,钱包软件不报错,但它并不理解区块67的内容,即使里面有几笔交易与他有关,他也一无所知,这时他的钱包软件中的余额信息很可能是错误的。

有人则安装了最新的0.14.1版本的钱包软件,所有区块(旧区块、新区块)的信息都可以正常解读,软件运行完美。

从这一点上来看,新区块实际上在欺骗旧版本的钱包软件,旧版本钱包软件不给用户任何警告或错误信息,看上去一切正常,但交易信息、余额信息可能是不完整,甚至是错误的。

要点三:协议升级的无奈之举

我的饭团引入更多的人共同创作,创作人有点变化,但“为大家带来价值”的共识是不变的。

比特币协议从2009年诞生,期间也发生了很多次变化,钱包软件要升级,但全世界的用户太多了,使用的钱包版本都不相同,不可能商量好一起升级。软件开发人员也不能让钱包软件崩溃,影响用户的使用。关键的是不能影响矿工的挖矿,那可以真金白银的苦力。

所以这些升级大多通过软分叉方案来渐进实施,区块链仍是一条,旧块与新块有所不同,而且一直共存,大家的共识是一样的:让比特币交易顺利进行。

现在我们给出软分叉的学术定义,你能看懂吗?

软分叉是指比特币交易的数据结构(这就是被广泛流传的“共识”)发生改变时,未升级的节点可以验证已经升级的节点生产出的区块,而且已经升级的节点也可以验证未升级的节点生产出的区块。

请对应我给出的类比仔细理解上面的定义。

小结:

  • 软分叉其实并没有分叉,还是一条链
  • 新区块欺骗旧钱包软件,让旧钱包软件承认新区块,但并不知道新块中的内容
  • 软分叉是为了协议的升级,共识没有大的变化

--- END ---

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 申龙斌的程序人生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档