首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

虾说区块链-61-隔离见证

一直在说区块链是一系列技术结合后的新的技术架构,那么这里分别介绍下这些相关技术,也涉及到一些扩展开去的相关内容。

区块链-隔离见证:

之前有写过隔离见证的专题,结合bitcoin看到一些新的内容,大概再作个整理说明。参考:

http://book.8btc.com/books/6/masterbitcoin2cn/_book/appdx-segwit.html

隔离见证:segwit是一次bitcoin共识规则的网络协议的升级。基于BIP-9分叉方案。Pieter Wuille 在中国香港提出隔离见证 (Segregated Witness)软分叉方案,为了彻底解决区块的大小和交易效率的问题。用户在交易时,会把bitcoin传送到有别于传统的地址。当要使用这些bitcoin的时候,其签署(即见证)并不会记录为交易ID的一部份,而是另外处理。也就是说,交易ID完全是由交易状态决定,不受见证部份影响。

在密码学中,见证(witness)用来形容一个加密难题的解决方案,在bitcoin中见证满足一种被放置在一个未使用的交易输出(即UTXO)上的加密条件。理解为一个数字签名就是一种类型的见证,见证是一个更广泛的任意解决方案,即满足加在UTXO上的一个条件,才能使UTXO解锁花费,所以有些理解为见证即一个解锁脚本的概念。

在出现隔离见证之前,bitcoin交易的输入后面都有一个对其解锁的见证数据,见证数据作为输入的一部分内嵌其中,简单理解,将某个特定的输出的签名分离开来,或对特定的输入脚本进行解锁,即为分离解锁脚本(separate scriptSig)或分离签名(separate signature)。隔离见证是bitcoin的一种结构性调整,为了将见证数据部分从交易解锁脚本字段中移出至一个伴随交易的单独的见证数据结构。但bitcoin客户端中请求交易数据的时候,可通过选择该部分伴随的见证数据。

隔离见证是bitcoin的一个改进协议:

BIP-141隔离见证的主要定

BIP-143版本0见证程序的交易签名验证

BIP-144对等护肤-新的网络消息和序列化格式

隔离见证的出现实现多方面的影响:(针对bitcoin的现状)

交易延展性:将见证移出交易后,用于标识符的交易hash不再包含见证数据,在bitcoin中见证数据是交易中唯一可能被第三方修改的部分,这样一处后,也就避免了交易延展性的攻击。通过隔离见证,交易除了自己以外对于网络中其他人都是不可变。大大提高了许多其他依赖于高级bitcoin交易架构的协议的可执行性(支付通道、跨链交易、闪电网络)。

脚本的版本管理:引入隔离见证脚本后,交易和区块都有其版本号,那么每一个锁定脚本也有一个脚本版本号,脚本版本号的条件允许脚本语言使用一种软分叉方式的升级,引入新的脚本操作数、语法。这种升级脚本语言的能力会加快bitcoin的创新速度。

网络存储扩展:在bitcoin交易过程中,复杂脚本占据了交易的很大存储空间,那么将见证数据移出,提升了bitcoin的扩展性,节点在验证签名后移除见证数据,那么在简单支付模式下整个忽略,见证的数据不需要分发到每一个节点,也就节省了存储空间。

签名验证优化:在隔离见证之前,生成签名需要大量的hash操作,隔离见证升级签名函数,那么就减少了算法的计算复杂性。

离线签名改进:隔离见证签名包含在被签名的hash散列中,之前一个离线签名在签署交易前验证每一个输入的数量,通常是通过大量的数据流来完成,这些数据是关于之前的交易被引用作为输入。由于这些是已签名的承诺hash散列的一部分,那么离线设备就不需要之前的交易,发现数量不匹配则签名无效。

隔离见证工作原理:使用到隔离见证的交易输出称为隔离见证输出,但一个交易使用一个UTXO,必须提供一个见证,传统的UTXO在交易使用的时候,UTXO锁定脚本要求见证数据在该交易输出部分以内联的方式被提供,但在隔离见证UTXO中指定的锁定脚本满足处于输入之外的见证数据。

隔离见证,这个是字面翻译,千万不要咬文嚼字去理解概念,我们还是从交易开始说,来解释说明这个概念,之前文章里有对bitcoin交易做过解释说明,其中bitcoin中的数据结构UTXO,UTXO直接决定了交易中资金的使用和支配权。在bitcoin交易中交易是以输入输出的信息存在,输入信息证明资金的所有权,在转账过程中,转账者需要用自己的私钥签名表明能够使用这个资金,同时加上接收者的地址,说明这笔资金是转账给谁,这个过程中签名占用了大量的字节,bitcoin网络中的旷工需要验证这个签名,而网络中的普通节点只需要知道这个资金是不是可用,简单来说,大多数节点不涉及自己的交易并不是很关心这个签名,所有在bitcoin系统中出现一种将签名信息隔离开来的提议,那在UTXO中放一个指向签名信息的指针即可。从数据结构角度来说隔离见证方案就是将原来的UTXO信息分为输入、输出、签名(见证)。

本文由币乎社区(bihu.com)内容支持计划赞助。

之前写了点东西,随着对区块链的理解,发现有些理解的并不透彻,重新整理。如有理解不正确的地方,请及时指正,同时有兴趣一块交流的可以加笔者微信:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180108G08I1X00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券