当前位置:首页 > 比特币新闻 > 正文

中本聪为何在交易数据结构和区块数据结构中添加一个版本号

来源: 互联网时间:2016-10-14 08:17:00

download

第0章 引言

你知道HTML5这个5代表什么意思吗?答案这是一个版本号,HTML叫超文本标记语言,一共经历过2.0、3.2、4.0、4.01和5等版本。

比特币的编码也有一个版本号,目前还是版本1,和中本聪开发时是一样的。

第1章 比特币交易数据结构里的版本号

我们又要搬出比特币区块数据结构和交易数据结构了。请看图。

1

这个图就是比特币的交易数据结构,图中红色加粗的字段就是和HTML5里的5类似的标识交易版本的代号。

从中本聪开发到现在,这个交易版本号一直没有变过,但区块版本号是经过几次变化的。(作者注:区块版本号是有变化过的,目前是vision 5)

第2章 比特币交易版本号是用来干吗

这两个版本号就是用来标识参照的规则的。这和HTML5是一样的,HTML也是用一个字段来标识传播数据参照的规则。

因为是软件,肯定需要进化和添加新功能。比特币到现在为止,一共快8年了,交易和区块的数据结构其实变了很多,有了很多次软分叉,也有过硬分叉。但从来没有修改过版本号。

整个区块链的交易的版本号都是相同的,那就意味着,在软件层面上它们认为大家是一样的。如果我们对交易规则进行较大的修改,需要修改版本号吗?

软件行业的通用做法是要修改的。就像HTML这样,因为这样意味着在全网明确规则改变了,如果你修改了数据结构,但不告诉以前的区块和交易,那就需要更复杂的设计以蒙混过关。

不同的版本的数据结构,就需要不同的代码进行解析。当我们的开发者决定大幅度修改交易时,明智的做法就是修改版本号,以明确这次代码升级的规则是变化的。然后升级在比特币网络激活时,比特币网络就需要冻结解析旧版本号的软件,要求他们升级到最新的代码,才能解析新区块和新交易数据结构。这样的升级方式是清晰的,大家目标一致的,而不是需要新旧软件相互欺骗。这样的升级方式也叫硬分叉。

中本聪遗留下这个版本号的设计,这意味着中本聪是想通过硬分叉来升级软件。但我们的Core dev,核心开发组却违背了中本聪的设计愿意,而且是违背了软件行业通用的设计规格。他们每一次修改代码都使用软分叉。

软分叉就是不去修改交易的版本号,但却修改交易的数据结构。因为版本号没有修改,所以旧节点软件也会试图去解析修改过交易。为了实现旧节点也能够解析修改过的数据结构,整个修改就非常复杂。这种复杂性带来的是技术债务。

第3章 隔离见证软分叉会带来无穷无尽的技术债务

隔离见证软分叉就是大幅度修改了比特币交易数据结构和区块数据结构。直接将交易数据结构中的解锁脚本那个字段给移出了交易数据结构,同时也要移出区块数据结构。

3

这么大幅度的修改,交易版本号却不去修改,这就意味着隔离见证不打算告诉旧节点说它修改过区块和交易,而是一种隐藏修改代码的方案叫旧节点默认这是可以解析的代码。当然实际操作起来的复杂性是非常恐怖的。去查阅隔离见证的文档,他对比特币交易和区块数据结构一共做出了11项修改。

这有多恐怖呢?

中本聪在2008年发表了比特币白皮书论文,然后在2009年初就完成了Bitcoin第一个版本软件的开发,并且发布在网络开挖出了创世块。看起来整个过程开发没有超过一年。而且我们还都认为中本聪是一个人在开发。

但隔离见证呢?从2015年12月在香港扩容大会由Peter Wuille提出的隔离见证方案,到现在已经是2016年10月份了。隔离见证开发快一年了。但还没有结束。要知道Core dev核心开发组的开发力量,无论是人力、物力和财力都远远超过当时中本聪孤军奋战。可他们在中本聪开发的比特币基础上做一个修改,花的工期要超过中本聪开发整个比特币项目了。

可见隔离见证的复杂性有多么恐怖。

复杂性带来的就是不安全。

更恐怖的是,当隔离见证被激活时,如果出现什么问题,我们是没有任何处理预案的,在这么复杂的代码面前甚至是没有可处理的办法的。至少核心开发组到现在都没有提这一回事。这是非常不负责任的。

第4章 看看Bitcoin Classic开发者对比特币协议升级的方案

这里有一个短视频,是Bitcoin Classic开发者Tom Zander谈比特币协议升级。Tom从传统软件行业的做法聊起,讲到比特币协议升级的简洁方式。特别评价了隔离见证的事。

让我们来看视频结束这篇文章吧。我添加了中文字幕。

第5章 结束语

everything should be made as simple as possible but no simpler——爱因斯坦。

免责声明:

1.本文内容综合整理自互联网,观点仅代表作者本人,不代表本站立场。

2.资讯内容不构成投资建议,投资者应独立决策并自行承担风险。