(Gavin)隔离见证SegWit

2017-5-23 比特币扩容方案达成共识(Segwit、BU、Segwit2MB、UASF)
2017-3-20 铅笔 Joseph Young 隔离验证为什么是区块链扩容解决方案
2015-12-10 Gavin 比特币隔离见证(segwit)很酷,但它不是短期解决方案

《(Gavin)隔离见证SegWit》 来源:http://mt.sohu.com/business/d20170524/143164707_611266.shtml

当前对于比特币扩容的讨论和建议内容五花八门,除了可能导致比特币硬分叉出现的隔离见证(Segwit)和比特币无限(Bitcoin Unlimited,BU方案)外,又先后出现了各种折中的方案,例如Segwit2MB、UASF方案等。

UASF,即User Activated Soft Fork,译为用户激活软分叉。该比特币软分叉提案倡议所有的比特币节点在一个特定的时间激活隔离见证;前提是在特定时间之前,全节点投票的隔离见证和比特币无限还没有分出胜负。

2017-3-20 区块铅笔 隔离验证为什么是区块链扩容解决方案?扩容之后又如何? | 作者:Joseph Young | 编译者:Clover | 来源:Cryptocoinsnews

与大多数人的说法不同,隔离见证(Segwit)并不一定要求用户手动升级自己的系统或钱包来接收隔离验证交易。

据Bitcoin.org开发文档共同作者David Harding表示,用户的钱包将自动切换成隔离验证版本,钱包地址将统一以数字“3”开头,与多重签名钱包保持一致,升级之后花出或者接收的比特币都将被计为1个单位。

隔离验证4MB容量限制,区块扩容解决方案?

在过去的几个月时间里,包括闪电网络(Lightning Network)的共同作者Thaddeus Dryja在内的比特币专家和开发人员都在强调他们发现隔离验证是提高比特币区块容量最实际的方法。经过Dryja的一系列测试,他发现隔离验证能够处理的单个区块容量可达3.7MB

《(Gavin)隔离见证SegWit》 Thaddeus Dryja

Dryja写道:

“这个新的软件不会处理非验证区块。区块容量更大。我手上有一种脚本可以在测试网络中创造3.7MB的区块。它不是一个包含txids和输出脚本,大小为800KB的常规区块,也不是一个包含大量签名的2.9MB验证区块。它是一个单一区块,与旧区块完全相同,只不过多出了一些额外的要求,而且容量达到了3.7MB。”

与Bitcoin Unlimited支持者和开发者所说不同,事实上,隔离验证能够将比特币区块容量增加到原来的3.7倍,以一种既安全又不受争议的方式从原来的1MB增加至3.7MB,就像Bitpay首席执行官Stephen Pair说过的一样。

这就是Harding认为隔离验证的4MB容量限制意义重大的地方。Harding表示,隔离验证升级之前接收到的比特币属于400万个隔离验证单位中的其中4个,相当于每个字节在原始的比特币区块容量中存在1MB大小限制。

然而,有了隔离验证交易,交易容量将减少4倍,在4MB容量限制前提下,从4个单位减少到1个单位。因此,从本质上来说,隔离验证钱包和交易能够增加区块容量至4MB,平均容量如同Dryja发现的一样为3.7MB。

《(Gavin)隔离见证SegWit》 David Harding

Harding写道:

如果你想要花掉在升级之前收到的比特币,那么每个验证字节都将计为400万个隔离验证单位中的其中4个,实际上,每个字节存在着1MB的容量限制;如果你想要花掉在升级之后收到的比特币,那么每个验证字节将计为400万个隔离验证单位中的其中1个,每个字节存在4MB的容量限制。

然而确定无疑的是在隔离验证激活之后,用户不必进行手动更新。毕竟大部分企业、交易所和钱包平台都已经宣布支持隔离验证,而且切换到了激活状态。

2017-05-12 Gavin 导致莱特币疯涨的隔离见证SegWit是个什么鬼
2015-12-10 巴比特 比特币隔离见证(segwit)很酷,但它不是短期解决方案?

近期导致莱特币上涨的主要原因是莱特币激活了隔离见证(SegWit),但是隔离见证究竟是什么,他的主要优缺点,会带来哪些后续影响,我们需要仔细了解。

比特币扩容争议长期以来一直都受到广泛关注,比特币社区内也不断提出各种解决方案来解决这一问题。在这些解决方案中,隔离见证(SegWit)尤为引人注意

什么是隔离见证

在每一个比特币交易中,其实可以分为两部份。

  • 第一部份可称为「交易状态」,是说明结馀的进出的。
  • 第二部份就是所谓的「见证」(witness),是用来证明这个交易的合法性 (主要是签署)。

如果你只关心每个账户的结馀,其实交易状态资料就已经足够。只有部份人(主要是矿工)才有必要取得交易见证

但是中本聪设计比特币系统时,并没有把两部份资料分开处理,导致交易ID的计算混合了交易状态和见证。因为见证本身包括签署,而签署不可能对其自身进行签署,因此见证是可以由任何人在没有交易双方同意下可以改变的,造成所谓交易可变性 (malleability)

在交易发出后,确认前的交易ID可以被任意更改,因此基於未确认交易的交易是绝对不安全的。

在2014年就曾有人利用这漏洞大规模攻击比特币网络,然而这问题一直至今没有解决。

比特币核心开发员 Pieter Wuille 在2015年12月於香港提出的隔离见证 (Segregated Witness,简称SegWit) 软分叉非常巧妙地彻底解决了这个问题。

SegWit用户在交易时,会把比特币传送到有别於传统的地址。当要使用这些比特币的时候,其签署 (即见证)并不会记录为交易ID的一部份,而是另外处理。也就是说,交易ID完全是由交易状态 (即结余的进出) 决定,不受见证部份影响

SegWit由比特币开发团队对于Bitcoin Core的拟议更新。最初,该更新旨在解决交易的可扩展性,这也是比特币软件中众所周知的弱点。虽然这种攻击向量对用户来说并不是最具破坏性的,但目前为止已经在多个攻击案例中被利用,因此也就凸显了修补这一漏洞的必要性。

而且,SegWit提供了一系列其他优势,现在关注的焦点也已从修复交易可扩展性转移到解决比特币扩容的问题。比特币正面临着大规模扩容的问题,而这些问题只会随着时间的推移越来越恶化。

SegWit原理

隔离见证锁定输出的花费,可以不需要用到脚本签名( scriptSig),交易真正的脚本签名,将被放在一个单独的,新的数据结构当中,做验证工作的钱包和矿工会使用新的数据结构,以确保交易的签名是有效的。

在这个新的数据结构中,是一颗反映这些交易的默克尔树(merkle tree),每一笔隔离见证输入(input)的交易,在第二颗默克尔树中,将有一个带有签名数据的条目,每笔输入加上10个左右额外的字节,以允许欺诈证明(fraud proofs)。

将交易和隔离见证梅克尔树合并到同一颗树中,左边树上为交易数据,右边树上为隔离见证数据。而区块头中的梅克尔根(merkle root)将是这颗合并之后的树,可以通过一次硬分叉来完成,但比较可行的是进行一次软分叉,将隔离见证梅克尔根放到每个区块的第一个(coinbase)交易当中,这会是更加复杂的,显得没那么优雅,但意味着它只需要一次软分叉。通过软分叉可以不要求钱包进行升级,但任何生成大量交易的人,都会有强烈的动机去产生隔离见证交易。

当软分叉或者硬分叉也实施完后,如果有小部分交易使用了隔离见证锁定输出,会有更多的交易进入1MB的硬编限制区块当中。例如,

  • 最简单的one-input交易。one-input隔离见证交易会有90字节的交易数据,加上80个左右字节的签名数据,但只有这90字节是需要挤入这1MB区块的,而不是170个字节
  • 更复杂的多重签名交易会节省更多的空间。

所以,一旦所有人都使用了隔离见证锁定输出,所有的交易也都是隔离见证交易,会有2-3倍的交易可以挤入1MB的区块当中。

隔离见证交易,并不会对目前的扩容瓶颈有所帮助,1MB区块消息在整个网络中的传播,将和以前一样会占用同样的带宽。

有几个解决这个问题的项目,目前正在进行中,包括:IBLTs,弱区块(weak blocks),瘦区块(thin blocks),一个“blocktorrent”协议),还有一个已经在部署的,可以让1MB区块消息的传播速度远远超过本来的速度(Matt Corallo的快中继网络(fast relay network))。

隔离见证的优点

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

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

可以大幅改善签署结构,曾经有一个超过5000个输入的交易,因为签署设计缺憾,需要半分钟才能完成检查。SetWit软分叉会把这个问题解决掉。如果推出全新的交易脚本语言,例如:

  • 可以把数以千计的不同脚本通过MAST技术压缩至只有32字节;
  • 亦可以把不同签署合并检查,令检查交易的速度再以倍数上升

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

SegWit主要争议

反对SegWit的关键点可大致分为技术、政治和思想三个方面

  1. 技术上:一些人认为,在目前的状态下SegWit无法解决它承诺解决的问题。而这一观点的一个主要理由在于,这项更新提出的区块容量增加不足以满足比特币用户群不断增长的需求。
    虽然大多数专家都会认同SegWit制定者的高超技术能力以及技术本身的可靠性。但是,不具备一定技术能来的普通人几乎不可能评估双方提出论据的真实性。
  2. 政治上:事实上,目前的争论也不纯粹是技术性的,还包括政治方面的问题,但这也只会使事情更加复杂。许多致力于研究SegWit的人同样受雇于名为Blockstream的公司,该公司主要产品是侧链解决方案
    社区中的一些人声称这会造成利益冲突,因为开发人员受到激励会阻碍在增加区块容量方面上所做尝试,从而人为地扩大对闪电网络等侧链解决方案的需求。尽管对这个说法还没有决定性证据,但是社区中的很大一部分人仍然选择相信这一点,因此也就反对SegWit。
  3. 思想上:而反对这一更新在思想方面的主要原因在于,它无法在提供可扩展性的同时,保证比特币网络在一定程度上充足的去中心化。如前所述,SegWit解决比特币交易容量不足这一长期问题,也只不过是在允许实施第二层侧链解决方案(如闪电网络)这一范围内。
    而一些人认为这里存在的问题是侧链的工作原理。为了不依赖于高度拥挤的区块链,它们将货币转移到第二层系统。在这层系统中,所有的交易都由受信任的第三方处理,而不必在整个网络上进行传播,从而节省了大量资源和时间。
    由受信任权威机构负责却恰恰是比特币想要从货币体系中移除的。对于一些人来说,这种妥协是不可接受的,无论第三方在解决方案中施加的影响有多小。 而大鱼认为这是一种“去中心化原教旨主义”的坚持,有点类似当初的以太坊分裂成ETH和ETC。

http://news.btcfans.com/article-18302-1.html

    原文作者:大圣2017
    原文地址: https://www.jianshu.com/p/ca054b50d4bc
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞