您当前的位置:首页 >> 电影
比特币问题解析——隔离见证
发布时间:2019-06-30
 

通常比特币交易,分为两部分:第一部分是说明结余的进出,第二部分是用来证明这个交易的合法性 (主要是签署)。第一部分可称为「交易状态」,第二部分就是所谓的「见证」(witness)。如果你只关心每个账户的结余,其实交易状态资料就已经足够,只有部分人(主要是矿工)才有必要取得交易见证。

比特币问题解析——隔离见证

中本聪设计比特币系统时,并没有把两部分资料分开处理,导致交易ID的计算混合了交易状态和见证。因为见证本身包括签署,而签署不可能对其自身进行签署,因此见证是可以由任何人在没有交易双方同意下可以改变的,造成所谓交易可变性 (malleability)。在交易发出后,确认前的交易ID可以被任意更改,因此基于未确认交易的交易是绝对不安全的。在2014年就曾有人利用这漏洞大规模攻击比特币网络,然而这问题一直至今没有解决。

比特币问题解析——隔离见证

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

1、可以用软分叉增加最大区块容量:

因为旧有节点根本看不到这些被隔离的见证,即使真实的区块已超过1MB,它们仍会以为没有超过限制而会接受区块。在整场有关区块容量的辩论中,最大的难点就是硬分叉。SW可以提供约2MB的有效区块空间而没有任何硬分叉风险。

2、从此以后,只有发出交易的人才可以改变交易ID,没有任何第三方可以做到。如果是多重签名交易,就只有多名签署人同意才能改变交易ID。这可以保证一连串的未确认交易的有效性,是双向支付通道或闪电网络所必须的功能。有了双向支付通道或闪电网络,二人或多人之间就可以实际上进行无限次交易,而无需把大量零碎交易放在区块链,大为减低区块空间压力。

3、轻量钱包可以变得更轻量,因为它们无需再接收见证数据。

4、可以大幅改善签署结构。在区块链上,曾经有一个超过5000个输入的交易,因为签署设计缺憾,需要半分钟才能完成检查。在建议中的SW软分叉会把这个问题解决掉。而在该次软分叉完成后,核心开发者们已有计划进一步完善整个系统的可用性和安全性:

a.全节点可以为轻量钱包提供很简洁的证明,以检查交易是否合法。以后的节点就不再局限於完全验证和完全不验证,而是可以按个人的资源作部分验证,也就是说一台手机也可以参与保障系统安全。这可以大为降低系统对全节点的依赖,即使以后区块容量提升了,我们仍能保持安全。

b.将会推出全新的交易脚本语言,例如可以把数以千计的不同脚本通过MAST技术压缩至只有32字节;亦可以把不同签署合并检查,令检查交易的速度再以倍数上升。

其实比特币一开始就应该是要隔离见证。以上的计划,是核心开发者们在过去数年对系统的了解日增而得到的成果。SW的测试网已在2015年12月开始运作,本人也有参与第一手测试,对2016年4月推出的目标感到乐观。实行SW将是比特币技术的一大飞跃,希望中国币圈的各位能多加关注和支持。

另外几份资料供参考:

隔离见证软分叉 、隔离见证通信层 、隔离见证交易地址、隔离见证签署检查

#热议区块链#