比特币“区块扩容”:隔离见证

比特币“区块扩容”:隔离见证

96 堂说区块链 关注

2018.04.07 16:35 字数 2946 阅读 45评论 1喜欢 2

写在前面的话:

1)即日起:变更账户主体名字【简亿区块链】-->【堂说区块链】

2)名字改变,初心不变:不管多难,仍然会在区块链相关领域的技术研究上走下去......

3)本专栏系列原创文章同步发布在【堂说区块链@简书】,微信公众号【堂说区块链】以及【开发者头条独家号:堂说区块链】上。

比特币“扩容”

1.比特币网络在“区块扩容”前的现状

我们在《比特币的“区块”中藏有什么秘密:区块链区块结构解析》一文中详细的介绍了区块的数据结构,本文不再赘述,不了解的同学,请点击传送门。

中本聪在比特币网络中,使用difficulty参数,每间隔2016个区块会动态调节一次,新区块的产生速率,使得平均每个区块的生产耗时约等于10min。

在比特币系统 V1中规定,每个区块的大小为1Mb,这使得每个区块平均打包2000比交易。也就是说,平均比特币网络处理交易的速率为3.6笔/秒(最大约为7笔/秒)。

对于日益火热的比特币交易量来说,这个速率显然不够,因此比特币“区块扩容”势在必行。

2.背景介绍:比特币网络的两大阵营

在比特币网络中,有两大阵营发挥着举足轻重的作用:

1)一个是比特币核心开发团队,负责开发维护比特币系统(其中包括,bitcoinj以及client等)

2)一个是以F2Pool(鱼池),蚂蚁矿池(AntPool)等为代表的比特币矿池,行使着挖矿和打包比特币交易的功能。

3.比特币为什么一定要”区块扩容“?

接上,站在两个参与者的角度:

1)对于核心开发团队来说,自然是希望比特币网络能承载更多的比特币交易;

在日益火热的比特币交易大背景下,如何能让比特币网络处理更多的比特币交易,如何能让比特币网络不阻塞稳定的运行是高优要考虑的问题;

PS:2015年7月,出现了恶意堵塞网络的大量小额比特币交易攻击,导致比特币网络被阻塞几个小时,最后还是靠鱼池F2Pool为解决生成了史上最大一笔比特币交易的方式解决(感谢F2Pool,虽然鱼池的目的只是为了多赚取打包交易的矿工费而已)。

2)对于矿工来说,“挖矿”已经越来越难,因此在获得到记账权(新区块生成权)之后,如何能提高收益呢?

之前的文章中介绍过,矿工的费用有两类:coinBase系统奖励和打包交易的交易费。而coinBase奖励动态固定(最终为趋于0),所以 提高本区块的打包交易总费用是首选。

因为在比特币交易单笔容量相对稳定的情况下,区块扩容是最佳选择。

4.比特币“区块扩容”的两种方案

业内争论不休的有两种方案:硬扩容和软扩容

1)硬扩容:以矿工为代表,希望把比特币区块1Mb的大小限制提升到2M;

2)软扩容:以核心开发团队为主,原因有两个:

一是不希望一让再让,因为本次硬扩容到2M,未来比特币交易更高频的总有负载不了的时候,会再次硬扩容到4M;

二是硬扩容意味着每个区块实际容量变大,那么对于比特币客户端需要同步的数据容量就更大,对比特币客户端的存储空间要求会越来越高,这不是一个健康的发展方向。

5.“软扩容”之隔离见证

5.1每一笔交易的数据组成类别?

谈到“隔离见证”,首先先介绍下,每一笔比特币交易的可简单分为两部分的数据:

1)交易的进出明细数据(即交易的结余balance数据明细);

这一部分可以理解是交易的状态性数据。

2)交易的见证数据(用来证明这个交易的合法性,主要是签名SIG);

这一部分可以理解是交易的见证性数据(Witness);

实际情况是:并不是所有的参与者都需要关心这两部分数据的。

在origin版本中,中本聪没有将这两部分数据分开来处理,而是掺杂在一起,导致交易ID的计算混合了交易状态和见证。

PS:因为见证数据本身就包含着签署,而签署不可能对自身进行签署,所以在最初中本聪版本的比特币系统中,会出现一个恶性的问题,见证是可以由任何人在没有交易双方同意下可以改变的,造成所谓交易可变性 (malleability);

关于交易可变性的官方解释,详见《BitcoinWiki # Transaction malleability》

5.2什么是“隔离见证”?

“Segregated Witness (abbreviated as SegWit) is an implemented protocol upgrade intended to provide protection from transaction malleability and increase block capacity. ”

---《BitcoinWiki # Segregated Witness》

"隔离见证是比特币底层协议的一个实现升级,目的是为了解决升级之前比特币存在的交易可变的问题和扩充区块大小容量"

可以举个简单例子

长方体代表一笔交易

区块硬大小为1Mb,可以理解为一个面积为1000单位的开阔地面;一笔交易可以形象的理解为一个长方体(10*2*2单位);

“隔离见证”前:相当于长方体横着放在地面上(10*2着地),那么总共能放50个长方体;

“隔离见证”后:相当于长方体竖着放(2*2着地),那么总共能放250个长方体;

所以说,“隔离见证“相当于在技术上,软扩容了区块大小,相对增加了打包处理交易的个数。

5.3"隔离见证"的底层数据结构有什么变化?

在5.1中介绍过,区块中有两部分数据:见证数据和balance结余数据;

1)SegWit为区块中定义了一个新的数据结构,增加了一个属性“witness”(“见证”字段);

2)将原区块数据中的见证数据部分(主要包含脚本数据和签名数据ScriptSIG),挪到witness数据结构中,并且该结构数据是与交易数据独立分开提交到区块中的。

3)在witness结构中的数据只与验证交易有效性有关,与实际的交易详情数据无关(不参与默克尔树根的计算)。

4)这么做的好处就是:见证数据不再占用1Mb的区块大小限制,也就意味着,可以省下更多的区块空间,打包更多笔比特币交易。见证数据占一个交易记录大约一半左右的空间,把见证数据挪走后,一个交易记录的大小会降低。

5.4“隔离见证”之后,新的权重计量单位

在“隔离见证”版本中,增加了一种新的权重计量单位:WU(weight unit)。每个区块的大小最大允许4M WU。同样的1字节,处在区块的不同的区域结构中,拥有不同系数的WU。

WU的大小定义如下:

处在原始1Mb区域中的数据,每1字节大小等于4WU;处在witness数据结构中的数据,每1字节大小等于1WU,通过此种方式,相当于在技术上,将区块进行了一次扩容,而且没有采用硬分叉方式。

PS:

1)区块扩容并不是“隔离见证”最主要要解决的问题;修复“交易可变性”的bug才是。

2)有了“隔离见证”能更好的实现比特币“闪电网络”,而这一点是最让“矿工”们抓狂不能接受的,原因见3)

3)“闪电网络”可以简单的理解为:在比特币网络中的某两个账户之间,开辟了特殊的点对点子结算网络通道,后续这两个账户之间的转账都在这些子结算网络通道上进行(创建一系列新的交易记录,但不广播到比特币网络上),其交易的真实性也是由加密算法来保证的。直到,最终由某一方发起终态结算,才会将最新的一笔交易广播到比特币网络上。

好处是:因为不需要每一笔交易都广播到主网络上,因此减少了比特币网络的拥塞,并且降低了交易手续费的消耗(而交易手续费恰恰是矿工们的收入来源)。

6.“隔离见证”升级提案落地图谱

官方BIP141:隔离见证图谱

下面将对图中的几个核心字段含义进行详细解释

1)BIP详解:BIP是Bitcoin Improvement Proposal的缩写,比特币升级提案(任何人都是可以提交BIP,注意,在https://github.com/bitcoin/bips 页面上发布一个BIP,并不代表它已被正式接受),一个BIP提案的详细信息如图所示:

其中Title中的Consensus layer代表的是,该提案针对的是比特币网络的哪一层的提案;

其中Status标识的是,该提案的当前状态,提案状态共有9种:Proposed (提出)、Draft(草案)、Active(激活)、Final(落地)、Replaced(被替代)、Withdrawn(撤掉)、Deferred(推迟)、BIP number allocated (BIP编号被分配)、Rejected(拒绝)。

BIP141详情

2)Type:这里指的是MASF(矿工激活软分叉)或者UASF(用户激活软分叉),具体解释详见:《比特币“交易打包”底层原理与区块链“分叉”

3)Purpose:描述的是当前BIP欲解决的问题,可见“隔离认证”要解决的问题是:交易可变性BUG

4)supermajority:指的是投票数符合的激活条件,不一定51%投票数就会被激活。

“隔离认证”的激活条件为:最新生成的2016块区块中,有95%的区块是升级了隔离认证之后的节点生成的区块,则全网通过“隔离认证”,正式启用。

以上,即是“隔离认证”的详细介绍。

欢迎关注转发,欢迎评论Diss~

欢迎关注微信公众号:【堂说区块链】,新鲜出炉的文章会同时发布!

猜你喜欢

转载自blog.csdn.net/jfkidear/article/details/81279428
今日推荐