作者:臻甄
时间:2018年2月2日
来源:简书
在阅读bitcoin-core代码的过程中,发现了大量witness的踪迹。
隔离验证的提出和落实
- 2015年12月:PieterWuille提出
- PieterWuille 是Bitcoin Core主要开发者,几乎一己之力把比特币重新写了一次。
- 面对本聪写的代码难以维护地问题,Pieter不止一次的对外说明如果由他来设计比特币,一定不会是今天这个样子。
- 2016年3月:发布第四个迭代版本的隔离验证测试网络。
- 2017年7月21日,比特币分叉方案BIP91已经获得全网算力支持。
- 一致同意先进行隔离见证升级,并在之后的6个月内把底层区块链的区块大小升级至2M
- 2017年8月21日:隔离见证(SegWit)提案获得了几乎所有比特币矿池的支持,进入锁定期。
- 2017年8月24日,在区块高度481824上,比特币隔离见证已经正式激活。
- 2017年8月1日,搅局者出现,“搅局者”出现了——挖矿巨头比特币大陆旗下的矿池ViaBTC准备了一套硬分叉的体系,基于比特币的原链推出“比特币现金”。
- 支持大区块(将区块大小提升至8M),不包含SegWit功能
隔离验证的争执
- 隔离验证最开始被认为是一种比特币区块的扩容方案,会影响到比特币区块的大小,极有可能造成比特币分叉,引起了社区的激烈讨论。
- 先是挖矿公司比特大陆Bitmain被指控出于自身利益而阻止隔离见证,后来主要的几家比特币公司和矿池联合起来支持自己的扩容计划Sigwit2x。最终,又有用户不满意这种计划,转而支持用户激活软分叉方案等。
- 隔离验证要点有三个:
(1)改变了比特币区块中数据的存储方式
(2)提高了区块容量,并且还能与旧版本兼容
(3)解决了许多比特币项目中存在的一个主要问题:交易延展性 - 持续的斗争
- 隔离验证是为了优化区块链代码而生的,从技术角度来说是一个正确的选择
- 但一些比特币用户始终认为隔离见证方案是一个错误的选择,他们固执己见并导致了比特币的硬分叉,即创造出了一个被称为比特现金(BCC)的新链
隔离验证的本质
- 隔离验证就是隔离验证,它的主要目的跟它的字面意思一样,就是要隔离的做验证,而不是为了增加块大小,最终隔离验证能增加块大小只是它的副产品。
- 不过由于块大小、分叉的话题太过激烈,才引起巨大的争执。
我们先来看一个具体的比特币交易
中本聪的设计:
缺点:设计多个输入,多重签名的交易,非常多的、混乱不堪的代码来做数据构造工作
隔离验证的方法和好处
将签名放在交易内容中其实没有任何好处,反而增加的结构的复杂度和交易延展性的风险,这显然是得不偿失的。那么,最合理的交易结构到底应该是什么样子的呢?
-
- 也就是单独把签名拿出来。隔离验证其实就是把原来的比特币交易中签名的部分单独拿出来放到另一个叫 witness 的结构中。
- 签名就是要用来进行“验证”的数据,放在另一个地方就是要“隔离”出来。
- 隔离验证的好处:
- 交易是交易,签名是签名。当用户决定好花哪一笔钱、要花给谁的时候,交易的内容就已经是确定了的,交易的数据就不会再发生改变了,最终的 tx_id 也就是不变的了。
- 想要验证签名?那就去 witness 里找到对应的签名数据验证一下合法性即可,又简单、有没有交易延展性的问题
- 隔离验证对于所有的基于比特币区块链的扩展应用(包括冷钱包和闪电网络等)都有好处,精确的 tx_id 当然会让很多基于 tx_id 所扩展出来的应用都容易的多,也可靠的多
- 隔离验证与块大小的关系:
- 本质上不是为了解决块大小的问题而产生的改动,而是为了程序结构更合理
但是签名单独拿出来了,原本的块大小可容纳的交易数量增多,加上签名数据后,一个块的大小就变大了。
- 本质上不是为了解决块大小的问题而产生的改动,而是为了程序结构更合理