根源链:解读隔离见证

1 隔离见证是什么

英文:segregated witness,简称segwit,缩写SW

这里所述的隔离见证技术是应用于Bitcoin core,我们的根源链PC客户端Srcchain core是从Bitcoin core叉(Fork)出来的。

如果摆脱Bitcoin来讲隔离见证就显得空洞,隔离好理解,就是分离,把A分离成B和C。那么见证是什么呢?答:一个加密难题的解决方案。这是加密学角度的阐释,似乎说了等于没说。

在比特币上下文中,一个数字签名就是一种类型的见证。更确切地说见证是一个解锁脚本。

1.1 比特币交易结构

Fig 1. 比特币交易结构
这里写图片描述
注意:scriptsig就是解锁脚本,作用是解除txid的锁定。其中txid的锁定体现在scriptpubkey,锁定的对象是value,也就是资产。

2 为什么使用SW

2.1 原因1

如果不限制区块的大小,就会受到DDOS攻击。DDOS攻击是通过伪造区块阻塞网络来达到攻击的目的。试想每个用户的带宽是有限的,如果区块大小不受限制,那么正常的、异常的区块通过网络来往于每个用户,不仅用户的客户端需要处理大规模的数据,而且网络负载也相当巨大,最终导致客户端消耗大量的时间处理无用的伪造区块,而无法处理正常区块的业务。

方案:限制区块大小到1MB。通过限制区块大小,那些伪造的大区块很快被检测并被丢掉。

2.2 原因2

虽然上述方案解决了DDOS问题,但是却引入了新的问题:容量不足。

随着Bitcoin的关注和使用的提高,1MB的区块已经明显出现瓶颈,这主要表现在:
- 单个交易的增大,而且主要是签名部分数据量大(问题1)
- 单个区块打包交易数量有限,导致交易效率极低(问题2)
- 由于签名算法不够强壮,从而通过签名伪造导致TXID被伪造。虽然面向区块链网络没有多少影响,但是这种攻击会导致第三方交易平台资产的损失。这种攻击也被称之为延展性攻击(Malleability Attack)(问题3)

业界也为此争论不休。主流的建议主要是3个方面:[1] 提高区块容量 [2] 使用附加结构,例如闪电网络(Lightning Network,LN) [3] 在现有的结构中优化,例如隔离见证(SW)

方案:通过问题123的反映,分离签名的方式更为托贴,也就是隔离见证技术。此外,闪电网络(LN)也是基于隔离见证(SW)之上构建的。

3 隔离见证SW优点

3.1 隔离见证后的交易结构

俗话说:结构决定性质。隔离见证前的交易结构参见Fig 1.。隔离见证后的交易结构如下:
这里写图片描述
Fig 2. 隔离见证后的交易结构

注意:scriptsig被剥离出来,通过新增flags控制Witness部分的去留。

3.2 新结构新算法

俗话说:结构决定性质。隔离见证后的区块结构也发生了变化。
这里写图片描述

Fig 3. 隔离见证前的区块组织方式
这里写图片描述
Fig 4. 隔离见证后的区块组织方式

隔离见证后的区块组织方式导致了新的计算规则,最直接的变化就是区块原本的上限使用1MB(M Bytes)进行度量,现在使用4M WU(Weight Unit)进行度量。

因此,基于隔离见证技术的区块扩容方式,属于技术扩容,而不是物理扩容。由于涉及内容较多,细节您可以参考https://en.bitcoin.it/wiki/Segregated_Witness

3.3 优点

  • 彻底解决了延展性攻击(Malleability Attack)问题,因为隔离(剥离)了见证数据之后的交易被创建是无法变更的。

  • 手续费(Fee)的减少,因为手续费取决于两个要素:[1] 单笔交易的容量 [2] 单位容量的手续费定价。公式:Fee = 单笔交易容量 x 单位容量手续费定价。例如,Fee = 2KB x 0.003 BSTK/KB。由于隔离见证后,每笔交易剥离了见证数据,所以单笔交易的容量减少。

  • 区块打包交易增多。

  • 交易确认性能提高,因为区块打包交易增多。隔离见证前,某交易可能需要等待若干确认期之后,才能从内存池打包到区块中;隔离见证后,交易被打包的概率明显升高。

  • 众多技术的基础,例如闪电网络、侧链、Omni的实现基于SW

  • 软分叉,换句话说就是向后兼容,用户使用的软件客户端允许不升级到具有隔离见证能力的新版本(个人建议,最好每个用户都升级,因为能够支撑闪电网络等新技术,带来更多用户体验)