解读比特币的可扩展性方案:隔离见证

解读比特币的可扩展性方案:隔离见证

免责声明:本文旨在传递更多市场信息 , 不构成任何投资建议 。 文章仅代表作者观点 , 不代表火星财经官方立场 。
小编:记得关注哦
来源:以太坊爱好者
原文标题:《干货|详尽解释隔离见证》
作者:MagomedAliev
解读比特币的可扩展性方案:隔离见证

比特币的可扩展性问题是其面临的主要问题之一 , 也是许多人努力的方向 。 比如说 , 有个设想是“闪电网络”;但是 , 要在比特币网络中实现闪电网络 , 条件似乎还不具备 , 因为比特币自身的一些缺陷 。 另一个解决方案“隔离见证(SegregatedWitness)”也致力于提高可扩展性 , 但它同时也解决了许多问题 , 包括闪电网络实现所需修补的一些缺陷 。 本文中我们会讲解隔离见证的优势及其工作原理 。
隔离见证(SegWit)是一个由多个BIP(141、142、143、144和145)描述的软分叉 , 其主要用意是优化比特币交易和区块的结构 , 将交易的签名(也叫“脚本签名(scriptSig)”、“witness”或“解锁脚本”)从交易中移到一个独立的结构中 。 它不仅允许降低比特币交易的数据量大小(因此能让一个区块塞下更多的交易) , 也能解决“交易熔融性(transactionmalleability)”问题(也就是我们开头提到阻碍闪电网络实现的缺陷) , 对支付通道和闪电网络这样基于比特币交易结构的技术来说极为关键 。
隔离见证如何工作
在开始之前
我们先要简单回顾一下比特币的支付系统 。 它并不像银行那样 , 是一套账户和余额的列表 。 相反 , 每个比特币地址的余额都是由一系列发送给这个地址的交易来表示的;交易这一数据结构的主要部分就是输入和输出 。 输入是我们想要花费的前序交易(准确来说 , 输入不会是完整的一笔交易 , 而是某笔的输出 , 因为我们可能会在一笔交易中将资金转往多个地址) , 而交易的输出就是我们的资金发送的目的地址 。 下图展示了比特币交易的结构:
解读比特币的可扩展性方案:隔离见证

输出中的PubKeyScript字段(下文简称为“scriptPubKey”)就是我们所说的“锁定脚本” 。 它用来保证只有接受地址的所有者才能使用这个支出 。 SignatureScript字段(下文简称为“scriptSig”)也就是所谓的“解锁脚本” , 因为它是用来打开锁定脚本的钥匙 , 是用来证明地址所有权的 。
(编者注:这里有一个gif动图 , 展示了比特币的堆栈是怎么执行的 , 但微信公众号推文中无法显示 。 强烈建议到网站上观看 。 )
有关比特币交易和锁定脚本、解锁脚本功能的更多细节 , 可看此处 。
【解读比特币的可扩展性方案:隔离见证】后向兼容性
实际上 , 隔离见证不仅改变了交易的结构 , 也改变了交易的输出 。 不过 , 这不是说传统类型的UTXO(未花费的交易输出)和SegWit类型的UTXO无法在同一笔交易中花费:这种情况下 , 传统类型的UTXO将在输入(脚本签名字段)内加载所有权证明 , 而隔离见证类型的UTXO将在交易输入以外的结构中加载证明 。
不管怎么说 , 隔离见证的定位是一个软分叉 , 这个升级应该是可以忽略 , 无需强制的 , 而且 , 这也意味着 , 未升级的节点应该可以处理隔离见证类型的输出 。 实际上 , 旧的节点和钱包将以为任何人都能花费这些UTXO , 也即这些UTXO是空签名也可花费的 , 因此即使在交易中没有看到签名 , 交易也仍然是有效的 。 而升级后的节点和钱包将在交易输入以外的地方 , 一个专门的“witness”字段寻找签名 。