加载中…
个人资料
区块链的作坊
区块链的作坊
  • 博客等级:
  • 博客积分:0
  • 博客访问:31,052
  • 关注人气:9
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

[[学习笔记]关于隔离见证

(2017-06-09 23:44:12)
标签:

比特币

区块链

隔离见证

软分叉

 1、什么是见证

       见证(witness)就是包含在比特币交易里的证明信息,用来证明交易的合法性,具体形式是交易各方用自己的私钥对交易信息所做的数字签名。每一个比特币交易信息可分为两部份:第一部份是说明结余的进出,第二部份是用来证明这个交易的合法性。第一部份可称为「交易状态」,第二部份就是所谓的「见证」(witness)。一般用户只关心账户的结余,交易状态资料就已经足够。比特币交易的验证只有部份人(主要是矿工)完成,所有只有部分人才有必要取得交易见证。下面是比特币交易信息的简单示意。

[[学习笔记]关于隔离见证
 2、为什么要隔离见证

        随着比特币交易不断增长及其应用的急剧扩大,有关比特币交易验证、区块链容量等问题凸显。      

        (1)比特币的区块大小是1M字节,这个在以前不是问题,但是随着大家对它认可程度的提高,使用比特币进行交易的情况越来越多了,全网交易数暴增,这直接导致1M大小的区块被迅速填满,现在已经逼近了1M的临界值,很多交易被放到一个池子里面被暂缓处理。日积月累,待验证的区块数量越来越多,交易处理的效率越来越低,犹如越来越拥堵的汽车交通,长此以往,势必导致比特币流通性降低。

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

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

 [[学习笔记]关于隔离见证

3. 隔离见证的优缺点

        隔离见证软分叉方案的优势在于:

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

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

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

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

        (4)可以大幅改善签署结构。在区块链上,曾经有一个超过5000个输入的交易,因为签署设计缺憾,需要半分钟才能完成检查。在建议中的SW软分叉会把这个问题解决掉。

        但是,隔离见证并非是一个完美无缺的方案,从另一个角度来看,它也存在以下可能的缺点:
        (1)如果SegWit激活,那些未升级的签名将无法接收来自SegWit钱包的交易。如果有人通过SegWit钱包向你发送比特币,你不会看到这笔交易直到某位矿工在区块中对这笔交易进行确认。这本质上破坏了所有不想升级SegWit的钱包的0确认支付。复杂的新支付类型可能会导致那些代码质量差的钱包出现bug。SegWit钱包需要在如何处理发送资金到更新和未更新钱包方面表现的更加聪明。如果出错,就可能导致资金丢失。
         (2)隔离见证实际上降低了矿工收取的手续费。矿工处理一个区块包含更多的交易,有效获得与1MB区块数据价值相同的费用。隔离见证牺牲交易手续费,以此让网络获得更高的每秒交易吞吐量。也许以后会增加比特币交易手续费。
        (3)隔离见证无法被回滚,因为对于未升级的客户端,SegWit交易看起来像所有人支付(从技术上讲,所有可以支出输出的人)。SegWit激活后,如果通过大多数矿工软件自愿降级来回滚SegWit,那么隔离见证输出的所有资金都能被不道德的矿工拿走。随着越来越多的资金被锁在segwit输出,那么对矿工相互串通的激励就越高。
         (4)SegWit实际上并不增加区块大小,它只是以一种不同的方式来计算区块大小,对隔离见证数据进行打折。这就意味着正常的非隔离见证交易将不会被计算在内。这也意味着只有比特币网络的所有人都使用SegWit交易,这样才能实现有效区块大小增加。 
        对于那些非SegWit输出而言,SegWit实际上并没有修复延展性错误或者二次哈希问题。是的,这就意味着只要区块链上存在非SegWit输出(例如,中本聪的那些长时间未动过的比特币),这些问题仍旧会存在网络上。就像伪区块大小增加一样,SegWit实际上并不会提供区块大小增加,除非整个网络升级并且将他们的非SegWit比特币转换成SegWit比特币。如果你将此与之前的概念结合——随着越来越多比特币被放入SegWit输出,对矿工相互串通盗窃比特币的激励就越大——我不认为完全使用SegWit的比特币网络的激励平衡会与目前的比特币网络一样。例如,目前51%矿工合谋的危险等于交易能够被审查或者矿工能够重复支付自己交易的危险。目前,51%的联合无法窃取你的比特币。但是如果每一个人都使用SegWit,那么这就可能成为现实。
4. SW实施时间
        在纽约的共识会议上,据称矿工们已经同意在今年9月之前激活SW。SW的测试网已在2015年12月开始运作。

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

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

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

发文时比特币价格 ¥19349.90 (来源:okcoin网)

[参考资料]

1. https://www.btcd1.com/news/tnotice/227.html

2. http://www.jianshu.com/p/94ad9f6f34ba

3. http://www.btc38.com/btc/altgeneral/12679.html

4. http://www.8btc.com/segregated-witness

5. http://8btc.com/forum.php?mod=viewthread&tid=23878&page=1

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有