什么是隔离见证?
比特币如何扩容,是很多人关心的问题, 开发者们大致提出了两个方案, 一个是扩大区块的容量,比如到8M左右, 另外一个就是隔离见证的方案。中本聪曾经在代码中写到,在审核统计区块大小的时候,每一个区块大小不超过1M,那么在现有的区块审核逻辑情况下如何缓解现在比特币拥堵问题? bitcoin-core的开发者给出了一个巧妙的方案,就是隔离见证。
在隔离见证之前,比特币的交易验证,需要依赖两部分数据:
1.交易信息: 包括输入交易id,vout和输出交易的锁定脚本和金额
2.见证信息: 交易花费者提供的解锁脚本
隔离见证就是把解锁脚本签名(scriptSig)信息从基本结构 (base block) 里拿出来,放在一个新的数据结构当中。做验证工作的节点和矿工也会验证这个新的数据结构里的脚本签名,以确保交易是有效的。当审核统计区块大小的时候。脚本签大小不会被计算在内。
比特币扩容,好比网络的宽带升级。而隔离见证的扩容方式,不是把区块大小进行扩充,而是把比特币的交易记录和签名信息隔离开来,分开见证。Segwit代表分离的见证,是对比特币协议的更新。隔离见证从交易中删除签名,将其放入一个名为Witness的单独数据结构中。由于见证与交易隔离,因此被称为——隔离见证。
隔离见证地址与普通地址的区别
1、隔离见证地址的转账比普通地址转账所需的矿工费更少。
2、如果你需要将隔离见证地址的 BTC 转到普通地址,需要进行链上转账。
3、隔离见证地址“3”开头,普通地址“1”开头。
图解隔离见证
比如我们有一个交通法规,说一条大路上只能容许总面积是100单位面积的车辆。每个车我们有30个单位的面积。大马路上一次只能跑3辆车。
这时候把车的结构重新调整下,把拖车放到了顶上。每个车的面积单位变成了14个单位. 这时候大马路上一次能跑7辆车了。
好我们现在把刚才浅显易懂的比喻换一下。马路 = 1个区块 车 = 每一笔交易
问题1: 脚本签名是不是和每笔交易在一起?
如图所释:车顶上的那个方块(脚本签名 ScriptSig) 是属于车的一部分。验证交易的时候签名当然会被一起验证。
问题2:见证是不是在区块链上?
如图所释:只是改变了车的结构,而且整个车还是开在马路上。所以当然在区块链里面!
隔离见证的好处
1.解决了延展性攻击问题:
由于见证数据解锁脚本的由算法设计带来的不唯一性(不同的解锁脚本均可以花费这笔utxo),导致当前交易的id的不唯一性。这被称之为延展性攻击,会带来相当的不安全性, 隔离见证的提出,将见证数据隔离在区块基本信息之外,也就意味着交易ID只跟交易信息有关,那么交易一旦发生,任何人都无法再修改交易ID,这就顺利解决了所谓的延展性攻击(作恶者不能通过修改解锁脚本来修改交易ID)。
2.隔离见证增加了比特币区块的容量限制:
目前,比特币可扩展性问题主要源自区块容量不足。连续交易区块组成了区块链。反过来,区块链是截至目前为止在网络中发生的所有交易的分类账本——加密货币的命脉。
这里的问题就在于当前区块的硬编码限制为1兆字节。而这并不足以承担用户每分钟尝试发送的数百笔交易。
因此,很多用户必须排队等候,直到他们的交易得到确认,这个等待的时间可能是几个小时,甚或是几天。随着网络规模的扩大,交易强度也随之增加,但区块容量限制则保持不变,这就意味着问题会不断恶化。
隔离见证将锁定脚本剔除到交易之外, 为当前块提供了大量的空间来容纳更多的交易。
锁定脚本只是对于需要验证交易的矿工来说是有意义的,对于其他的更多的不挖矿全节点,轻节点,钱包等等来说, 锁定脚本完全不需要同步下载,这在相当程度上减轻了网络压力。
3.为允许比特币实施第二层解决方案(侧链,闪电网络) 提供了极大的便利:
闪电网络的目的是实现安全地进行链下交易,其本质上是使用了哈希时间锁定智能合约来安全地进行0确认交易的一种机制,通过设置巧妙的‘智能合约’,完善链下通道,使得用户可以在闪电网络上进行0确认的交易。
核心的概念主要有两个:RSMC(Recoverable Sequence Maturity Contract)和 HTLC(Hashed Timelock Contract)。RSMC 保障了两个人之间的直接交易可以在链下完成,HTLC 保障了任意两个人之间的转账都可以通过一条“支付”通道来完成。这两个类型的交易组合构成了闪电网络。从而实现任意两个人都可以在链下完成交易。
闪电网络是在比特币网络上,两个账户间创建一个交易记录,这个交易记录锁定一些比特币。我们可以认为这两个账户间创建了一个子结算网络。后续这两个账户之间的转账都在这些子结算网络(创建一系列新的交易记录,但不广播到比特币网络上)进行,其交易的真实性也是由加密算法来保证的。直到某一时刻,某个账户提出结算申请(将最新的交易记录在比特币网络上广播),最终的交易在比特币的网络上进行。如果两个没有创建子结算网络的账户希望通过闪电网络转账,如果他们之间能找到一条结算网络的路径,也可以通过一系列的交易实现低手续费交易。
由于闪电网络的具体实现需要创建一系列相互依赖的父子交易记录,需要先对子交易记录签名,然后将子交易记录交换后,再对父交易记录签名并广播。所以,有了隔离见证后,才能更完美的支持闪电网络。