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

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

中本聪在设计比特币的时候直接把这两个信息直接放在了区块内,因此一个区块就承载不了更多的交易信息,若是隔离了“见证信息”,那么区块链只记录交易信息,那么一个区块可承载的交易更多交易。
中本聪设计比特币时,并无把两部分资料分开处理,所以致使交易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软分叉会把这个问题解决掉。svg