主页 > imtoken怎么用 > 比特币 - 隔离见证(Segwit)

比特币 - 隔离见证(Segwit)

imtoken怎么用 2023-10-13 05:09:33

什么是证人

在密码学中,隔离见证用于描述密码学难题的解决方案。 在比特币中,数字签名是一种见证(witness),可以用来描述UTXO(未花费的交易输出)中满足锁定脚本的条件。 隔离见证是将交易输入中的解锁脚本移动到交易附带的另一个数据结构中来存储交易见证,相应的锁定脚本也必须修改。

为什么使用隔离见证

1.交易可扩展性

当见证从交易中移除后,交易中唯一可以被第三方修改的部分不存在,交易变得对任何人(交易生成者除外)都不可修改,可以抵抗交易延展性攻击。 同时比特币加密方式,它极大地提高了许多其他依赖高级比特币交易架构的协议的可执行性,例如支付通道、交叉连接交易和闪电网络。

2.脚本管理

引入隔离见证后,类似的交易和区块都有版本号。 每个锁定脚本前面都有一个脚本版本号。 脚本版本号条件允许以向后兼容的方式升级脚本语言以引入新的脚本操作数、句法或语义。 无损升级脚本语言的能力将大大加快比特币的创新速度。

3. 网络和存储扩展

见证数据占据了整个交易空间的很大一部分。 删除见证数据可以减少每笔交易的大小,从而更容易存储交易并在网络中传输它们。

4. 签名验证优化

Segwit升级签名函数(CHECKSIG、CHECKMULTISIG等)降低了算法的计算复杂度。 在引入 SegWit 之前,用于生成签名的算法需要进行大量与交易规模成正比的哈希运算。 O(n2)的签名操作次数增加了数据哈希计算,给所有验证签名的节点带来了很大的计算负担。 引入隔离见证后,算法更改降低了 O(n2) 复杂度。

5.离线签名改进

隔离见证签名包含被签名的哈希中每个输入引用的值(数量)。 以前比特币加密方式,离线签名设备(例如硬件钱包)必须在签署交易之前验证每个输入的金额。 这通常是通过将有关先前交易的大量数据流作为输入来完成的。 由于金额现在是已签名承诺哈希的一部分,因此离线方式不需要先前的交易。 如果金额不匹配(被入侵的在线系统错误报告),则签名无效。

P2PKH 的 Segwit 输出和交易实例

Alice创建一笔交易来支付咖啡费用,这笔交易的锁定脚本如下

OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG

如果Bob想使用这笔钱,他需要提供以下解锁脚本

升级为P2WPKH(Pay-2-Witness-Public-Key-Hash),交易的锁脚本变为

如果 Bob 想要使用这笔钱,他需要提供以下形式的解锁脚本

隔离见证大大减少了锁定和解锁脚本的大小