什么是隔离见证?简单介绍隔离见证

来源:互联网 发布:windows平板系统下载 编辑:程序博客网 时间:2024/04/30 07:24

每一个比特币交易,都可以分为两部分。第一部分是转账记录,第二部分是用来证明这个交易合法性(主要是签名)的。第一部分可称为“交易状态”,第二部分就是所谓的见证(witness)。如果你只关心每个账户的余额,那么转账记录就已经足够了。只有部分人(主要是矿工)才有必要取得交易见证。
(交易信息就是谁给谁在什么时间转了多少钱。
见证信息就是哪个节点在什么时间验证交易信息的可靠性。)

中本聪在设计比特币的时候直接把这两个信息直接放在了区块内,所以一个区块就承载不了更多的交易信息,如果隔离了“见证信息”,那么区块链只记录交易信息,那么一个区块可承载的交易更多交易。
中本聪设计比特币时,并没有把两部分资料分开处理,因此导致交易ID的计算混合了交易和见证。因为见证本身包括签名,而签名不可能对其自身进行签名,因此见证可以由任何人在未得到交易双方同意的情况下进行改变,造成所谓的交易可塑性(malleability)。在交易发出后、确认前,交易ID可以被任意更改,因此基于未确认交易的交易是绝对不安全的。在2014年就曾有人利用这个漏洞大规模攻击比特币网络。

比特币核心开发员Pieter Wuille在2015年12月于香港提出的隔离见证(Segregated Witness,以下简称SW)软分叉解决了这个问题。SW用户在交易时,会把比特币传送到有别于传统的地址。当要使用这些比特币的时候,其签名(即见证)并不会记录为交易ID的一部分,而是进行另外处理。也就是说,交易ID完全是由交易状态来决定的,不会受见证部分的影响。

部分开发者认为比特币的设计有缺陷,在数据结构方面,它把必要的交易信息(输入和输出)和“没那么必要”的交易信息(见证)放在一起打包,这造成了一系列问题,比如“交易可塑性”、交易签名过程复杂、还有存储空间“浪费”。
隔离见证是对整个设计缺陷的一个修改方案,原理说起来挺简单,它允许交易把没那么必要的“见证”部分“隔离”在区块外面,这就是隔离见证的意思了。
目前人们主要关注的是存储空间浪费,因为现在比特币交易量太大,区块空间不够用,大量交易堆积。隔离见证的设计减少了每个交易脚本在区块内的体积,这相当于区块空间扩容,同时降低了数据传输和验证造成的内存、带宽、CPU成本。

这做法有几个重要的结果:
1. 可以用软分叉增加最大区块容量:因为旧有节点根本看不到这些被隔离的见证,即使真实的区块已超过1MB,它们仍会以为没有超过限制而会接受区块。在整场有关区块容量的辩论中,最大的难点就是硬分叉。SW可以提供约2MB的有效区块空间而没有任何硬分叉风险。
2. 从此以后,只有发出交易的人才可以改变交易ID,没有任何第三方可以做到。如果是多重签名交易,就只有多名签署人同意才能改变交易ID。这可以保证一连串的未确认交易的有效性,是双向支付通道或闪电网络所必须的功能。有了双向支付通道或闪电网络,二人或多人之间就可以实际上进行无限次交易,而无需把大量零碎交易放在区块链,大为减低区块空间压力。
3. 轻量钱包可以变得更轻量,因为它们无需再接收见证数据。
4. 可以大幅改善签署结构。在区块链上,曾经有一个超过5000个输入的交易,因为签署设计缺憾,需要半分钟才能完成检查。在建议中的SW软分叉会把这个问题解决掉。