隔离见证的由来

隔离见证最初是由 Pieter Wuille 在 2015 年的一次 btc 会议上提出的。Pieter Wuille 是 Blockstream 公司的开发者和共同创始人。该公司是一个专注于数字资产安全与金融服务的技术公司。

Wuille 提出隔离见证是为了修复 btc 协议的一个瑕疵。这个瑕疵就是交易的延展性。关于这个问题,我会在下文详细描述。

在隔离见证提出来后,比特币社区经过了长达 2 年的讨论,最终在 2017 年才开始激活,为了保持与之前版本的兼容,进行了软分叉升级。莱特币在这之前也做了隔离见证的升级。

交易的延展性

现在我们来说一下什么是交易的延展性。

比特币的一笔交易是由输入输出组成的,每个输入都会附带一个签名来证明自己的所有权。每一笔交易都有一个 hash 叫 交易 id,这个 id 是独一无二的,用来区分不同的交易。但是后来发现这个签名可以在不影响验证的情况下修改一些字段,进而导致这个交易 id 的改变。这就是交易的延展性

这个延展性在某些情况下会引起资金安全。

当我们发起一笔交易时,首先发给一个节点 a,然后再由这个节点 a 通过 p2p 广播到其它节点,进而让整个网络知道这笔交易。如果这个节点 a 作恶了,或者说跟这个节点直接相连的节点作恶了,将你发送的那笔交易的 id 修改了,然后广播出去。虽然你的确把钱花出去了,但是你还在拿着原来的交易 id 去查询交易是否成功,显然是查不出来的。当年的门头沟事件就是利用了这个漏洞,盗取了大量的比特币。

隔离见证的具体实现

既然是签名的改变导致的交易 id 的变化,那我们在计算交易 id 时不把签名这部分数据计算在内不就行了?实际上就是这么干的,顾名思义隔离见证的意思就是将见证的数据也就是签名数据隔离开来,纵使签名数据被修改了,也不会影响交易 id 的改变。

隔离见证带来了什么

  • 最重要的就是解决交易的延展性,确保了交易 id 的唯一。
  • 为二层协议的开发比如闪电网络打下了基础。
  • 一定程度上扩展了块容量,增加了 tps。