OKCoin

隔离见证是什麽? 为什麽我们必须尽快实行?

Johnson Lau 发布在 技术指南 9 7153

segregated-witness

作者jl2012,是来自香港的比特币技术爱好者,亦是三份有关隔离见证的比特币改善方案 (BIP) 的草拟者。

每一个比特币交易,其实可以分为两部份。第一部份是说明结馀的进出,第二部份是用来证明这个交易的合法性 (主要是签署)。第一部份可称为「交易状态」,第二部份就是所谓的「见证」(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软分叉会把这个问题解决掉。

而在该次软分叉完成後,核心开发者们已有计划进一步完善整个系统的可用性和安全性:

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

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

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

在另一篇文章,本人会再解释硬分叉和软分叉的利弊。

参考:

四份有关隔离见证的比特币改善方案:
1. 隔离见证软分叉

https://github.com/CodeShark/bips/blob/segwit/bip-codeshark-jl2012-segwit.mediawiki

2. 隔离见证通信层

https://github.com/CodeShark/bips/blob/segwit_peer_services/bip-codeshark-segwit-peer-services.mediawiki

3. 隔离见证交易地址

https://github.com/jl2012/bips/blob/segwit-address/bip-segwitaddress.mediawiki

4. 隔离见证签署检查

https://github.com/jl2012/bips/blob/segwit-checksig/bip-segwit-checksig.mediawiki

系统扩展常见问题解答:

https://bitcoin.org/zh_CN/bitcoin-core/capacity-increases-faq

需要30秒检查的交易:

https://blockchain.info/tx/bb41a757f405890fb0f5856228e23b715702d714d59bf2b1feb70d8b2b4e3e08

版权声明: by nc" sa 作者保留权利。文章为作者独立观点,不代表巴比特立场。
发文时比特币标准价格 买价:¥2882.88 卖价:¥2877.12

评论:9

您需要登录后才可以回复 登录|注册
    罗付雄鹰
    罗付雄鹰 331 天前

    新年好 已加您关注 请加我关注

    +1
    +1
    我要点评

    不是 你说的是链外交易 和隔离见证无关

    +1
    +1
    我要点评
    裤是衫下
    裤是衫下 331 天前

    好好好

    +1
    +1
    我要点评
    鱼殊
    鱼殊 331 天前

    终于等到砖家来普及知识

    +1
    +1
    我要点评
    leihang1980
    leihang1980 331 天前

    隔离见证在实现上我们是不是可以这样理解:好比我们都在一个特定的比特币钱包实现转账。钱包内部转账不记录在比特币区块链上,这样达到秒转和安全。当发送到或者从另一个比特币原版钱包产生交易时区块链才记录数据。这样降低比特币区块数据,实现秒转。。。。对不??

    +1
    +1
    我要点评
    长铗
    长铗 331 天前

    《隔离见证是什麽? 为什麽我们必须尽快实行? 》作者jl2012,是来自香港的比特币技术爱好者,亦是三份有关隔离见证的比特币改善方案 (BIP) 的草拟者。 http://t.cn/R4SkmUu

    +1
    +1
    我要点评

    为啥不直接扩大区块,搞这种复杂的方案?就是因为硬分叉么[好囧]

    +1
    +1
    我要点评
    Author Image
    王大锤子 331 天前

    有意思,开发者们干起来了,Jeff Garzik和Gavin Andresen变成一个阵营的了,支持者有coinbase这些支付公司,blockstream现在跑来中国市场拉人了

    +1
    +1
    我要点评
    巴比特资讯
    巴比特资讯 331 天前

    【隔离见证是什麽? 为什麽我们必须尽快实行?】每一个比特币交易,其实可以分为两部份。第一部份是说明结馀的进出,第二部份是用来证明这个交易的合法性 (主要是签署)。第一部份可称为「交易状态」,第二部份就是所谓的「见证」(witness)。http://t.cn/R4SkmUu 作者是隔离见证的BIP草拟者。

    +1
    +1
    我要点评