主页 > imtoken苹果手机不能下载 > 科技|Schnorr签名在哪里? 2020年,比特币可能是它的软分叉

科技|Schnorr签名在哪里? 2020年,比特币可能是它的软分叉

imtoken苹果手机不能下载 2023-04-07 07:59:09

正如我们在《BTC 第三次减半全解读》中所说,2020 年比特币值得关注的发展之一是 Schnorr/Taproot 软分叉。 计划中的分叉将包括三个比特币改进协议BIP 340、341和342。我们将对这三个BIP进行一系列解读。 本期Hardcore解读BIP340,主要是Schnorr签名。 好好享受

2020 年 1 月 21 日,开发者 Pieter Wuille 提交了比特币进行下一次软分叉升级的请求。 这个请求意味着更多的开发者将审查代码。 这对比特币来说意义重大,因为这意味着这些协议进一步集成到比特币协议中。 这些升级被称为比特币改进协议 BIP340、341 和 342,其中包括 Schnorr 签名、Taproot 和 Tapscript。

这三个BIP代表了比特币迄今为止最大规模的升级,也是两年前隔离见证(SegWit)激活后的首次升级。 三种协议捆绑升级,对比特币的功能性、可扩展性和隐私性都有显着改进。

本次软分叉的激活方式正在讨论中。 BIP 没有指定网络升级的确切方法。 BIP 340-342 中描述的升级最早可以在 2020 年冬季实施,尽管可能需要更长时间。

作为本系列的第一篇文章,我们将解释比特币交易的工作原理,介绍比特币使用的脚本系统,概述 Schnorr 签名,以及 BIP 340 的好处。接下来的两篇文章将介绍 Taproot (BIP 341) 和Tapscript(BIP 342),请关注黄金硬核。

比特币是如何交易的

比特币交易不像您可能熟悉的银行交易那样基于账户余额。

相反,比特币交易基于未花费的交易输出(UTXO),它由输入和输出组成。 每个 UTXO 都与私钥和交易数据相关联。 当你转移比特币时,你就是在转移 UTXO 的所有权,你需要通过加密签名来证明所有权。

UTXO 由描述支出策略的比特币脚本标记,这些脚本包含一个交易指令列表,说明比特币的新所有者应该如何使用它们。 通过使用 Script 编程语言,交易可以包含许多条件,包括多重签名(multi-sig)方案。

交易的输入是要花费的UTXO,输出是交易创建的UTXO。 例如,当你创建一个新的比特币交易时,你将使用一组你拥有的 UTXO 并提供你拥有这些比特币的证明。 要签署和授权交易,您需要提供与私钥关联的数字签名以证明您是所有者。

交易的输出由两个元素组成:比特币的数量和锁定脚本(或 scriptPubKey),它通过限制某些输出可以花费的条件来锁定比特币的数量。 锁定脚本将输出锁定到一个特定的比特币地址,该地址将比特币的所有权转移给新的所有者。

新所有者通过提供解锁脚本(或 scriptSig)和与其私钥关联的签名来解锁输出,然后花费这些比特币。 解锁脚本是下一个交易输入的一部分。

比特币 数字资产_数字货币——比特币数据报告与操作指南_比特币的数字签名有哪两种技术组成

为确保您不会花费不属于您的 UTXO,比特币客户端会执行一个脚本来确认交易。 每个输入中的解锁脚本与相应的锁定脚本一起执行比特币的数字签名有哪两种技术组成,以查看是否满足支出条件。 全节点跟踪和验证全套 UTXO,确保每个人只能使用自己拥有的比特币。

例如

下图说明了比特币交易的工作原理。

Alice 想付给 Bob 1 BTC,为此,她使用 Bob 的公共地址创建了一个交易。 为了转移比特币,Alice 提供她的数字签名(从她的私钥和交易数据历史记录生成)以证明她在 UTXO 集中至少拥有 1 个 BTC,同时不泄露她的私钥。

5e0ZtzMgMw1N4bEK7n6AdilMPMhIZVvxZ9kK6oFI.png

典型比特币交易的可视化

作为交易的一部分,只有 Bob 可以解锁锁定脚本。 交易转移后,UTXO 将被转移并添加到比特币区块链中。 通过提供签名,Bob 可以解锁锁定脚本(或 scriptPubKey),并可以使用 UTXO 作为下一笔交易的输入。

比特币交易最常见和基本的形式是使用支付公钥哈希 (P2PKH) 脚本。 比特币的脚本语言使用命令(或函数)来确定为每笔交易和更复杂的交易记录的指令。 它们被称为操作码 (OP_CODE),允许我们设置特定条件来转移比特币的所有权。

例如,一个多重签名方案(简称 multi-sig)可以指定 5 个参与者中有 3 个必须提供签名才能使用比特币。 另一个例子是使用时间锁(例如 nLockTime),它将比特币锁定到未来的指定时间点。

另一种高级交易类型是支付给脚本哈希 (P2SH),它允许付款人将资金转移到任何有效脚本的哈希中。 P2SH 的示例包括多重签名和非本地 SegWit 交易。 此外,可以结合多种支出条件来创建复杂的智能合约。

P2SH 交易中的锁定脚本现在被“兑换脚本”所取代。 当比特币的所有者花费它们时,所有脚本都会显示出来,以及锁定比特币脚本的解决方案。 使用区块链中脚本的哈希值,任何人都可以检查花费这些比特币的脚本的条件。

比特币 数字资产_比特币的数字签名有哪两种技术组成_数字货币——比特币数据报告与操作指南

P2SH地址以“3”开头,而P2PKH地址以“1”开头。 P2SH 交易的一个缺点是它们会在多重签名中揭示所有可能的条件和身份。

RJZhVz7t1g6BkjUX1sCJ8PDwV0PhXw1Q8luFjpjv.png

从上面的比特币富豪榜,我们很容易区分出P2PKH和P2SH地址。 上面以“3”开头的地址被标识为多重签名地址(3-of-5 和 2-of-3)。 以“3”开头的地址也可以是 SegWit 脚本或闪电网络客户端。 以“1”开头的地址是 P2PKH 地址,未启用 SegWit。

一旦比特币被花费,P2SH 交易就会显示整个脚本,因此网络参与者可以发现满足其条件的所有不同方式(从而可以区分多重签名交易和 P2PKH 交易)。 网络参与者还可以推断出使用了哪个钱包。

在可扩展性方面也有一个缺点:复杂的脚本有更大的交易数据,需要更多的区块链空间(导致更高的交易费用)。

Schnorr 签名 (BIP 340)

Pieter Wuille 提出的三个 BIP 中的第一个是 BIP 340,它提出了一种更高效的比特币数字签名方案:Schnorr 签名。

什么是 Schnorr 签名?

正如上一节关于比特币交易如何运作的部分所述,脚本语言控制比特币的支出并使用数字签名来转移比特币的所有权。 比特币使用椭圆曲线数字签名算法(ECDSA)来验证密码签名(该算法本身不支持多重签名交易,导致 2012 年 P2SH 交易标准化)。

总之,Schnorr 签名方案是一种更高效的签名方案。 签名方案由Claus-Peter Schnorr于1989年开发,专利直到2008年才到期。

Schnorr 建立在“隔离见证”之上,该见证于 2017 年 8 月在比特币上被激活以解决延展性问题。 SegWit 将所有脚本和签名数据移至“见证”部分。 见证是交易的一部分,作为一个单独的结构比特币的数字签名有哪两种技术组成,不再包含在输入列表中。

数字货币——比特币数据报告与操作指南_比特币的数字签名有哪两种技术组成_比特币 数字资产

让我们来看看 Schnorr 的主要属性及其对比特币的好处。 首先,我们看一下具有线性特性的键聚合。

密钥聚合

Schnorr 的主要优势在于多重签名交易。

Schnorr 签名是线性的,因为它们可以加减。 公钥的加法(或减法)相当于相应签名的加法或减法。 而ECDSA没有这个特性,加减ECDSA的数字签名是没有意义的。

由于线性属性,Schnorr 可以聚合密钥和签名。 聚合意味着我们可以将多个公钥组合成一个,因此各方只需要一个签名。 通过对输入密钥求和,它们被聚合成一个签名,每个签名者贡献签名的一部分。

以下等式说明了如何通过 Schnorr 的线性属性进行聚合。 除了参与者之外,没有人知道公钥/签名背后有三个人。

YS6QEgymfqu1ej9LqSiIlfd47zyzfSfBngpb2yRc.png

使用 Schnorr 的密钥/签名聚合

对于 M-of-n 多重签名交易,部分签名称为门限签名。 如下图所示,在当前的 3-of-5 多重签名中,有 M = 3 个签名(n = 5)作为交易输入的一部分。

Kb7wVFl79eAtxBP0YVslxEi3o1bwBUSq433D1Xus.png

3-of-5 多重签名的工作原理。 观察者可以识别 a) 这是一个多重签名设置,以及 b) 多重签名背后的公钥。

比特币 数字资产_数字货币——比特币数据报告与操作指南_比特币的数字签名有哪两种技术组成

M-of-n 多重签名交易至少需要 M 个签名者(并且每个签名都需要被验证),为了证明多重签名密钥的 UTXO 的所有权,scriptSig(或解锁脚本)必须包含 M 个 ECDSA 签名。 scriptSigs 的大小随着 M 个签名线性增长,这增加了这些交易的规模(以及交易费用)。

同样,观察者将知道 A、B 和 C 签署了交易,他们还可以识别使用的多重签名设置。

然而,对于 Schnorr,M 个签名被聚合成一个签名。 一旦提供了阈值公钥和阈值签名,交易就被授权并且对观察者来说就像正常的 P2PKH 交易一样。

4D2rspFbI6Za4HYUpL2ATipxttNudai504N0odOz.png

Schnorr 执行 3-of-5 多重签名交易。 观察者无法识别这是一个多重签名设置,只能将聚合签名/公钥链接到交易。

Schnorr 允许我们只为所有 M 方提供一个签名。 解锁脚本只需要一个代表参与者签名集的签名。 观察者不能再将交易签名链接到个人。

虽然地址和交易金额仍然公开可见,但 Schnorr 本身使钱包/用途识别变得更加困难(两者都可用于交易分析)。

Schnorr 的加法或减法可以进一步产生新的有趣的应用。 一个例子是无脚本脚本,这是一种在比特币上执行智能合约的方法。 无脚本脚本依赖于 Schnorr 的线性属性来创建适配器签名,从而允许原子交换。

下表显示了无脚本原子交换的优点。

Aa9DvrZzWIRRIu8ej1d3iFmJlj24OFove0xkciJ1.png

减少交易数据并加快验证

比特币的数字签名有哪两种技术组成_数字货币——比特币数据报告与操作指南_比特币 数字资产

Schnorr签名数据比现有ECDSA签名数据小11%,现有签名每笔交易占用70-72字节。 由于 Schnorr 签名在交易中/在区块链上占用的空间较少(它们固定为 64 字节),因此可以实现更小的交易数据和更低的费用。

此外,如果比特币交易包含许多输入,则每个输入都需要自己的签名。 请记住,输入指向您收到比特币的地址。 对于由多重签名用户控制的任意数量的比特币,每个签名者都必须将其个人 ECDSA 签名发布到交易中。 这些签名是一个一个被验证的,要有效地验证大量的签名,必须依赖一些数学技巧。

使用 Schnorr 签名,所有输入只需要一个组合签名,因为不同的签名聚合在一起。 将交易包含在签名中允许交易具有更大的容量。 多重签名交易的较小交易数据可降低费用。 使用键聚合,我们不必检查每个单独的输入并且验证速度更快。

使用 ECDSA 的紧凑型多重签名也更难生成,因为它们是使用 DER(专有编码规则)编码的,而 Schnorr 签名是以更节省空间的方式编码的。

Schnorr 至少比 ECDSA 更安全

ECDSA 和 Schnorr 数字签名方案都依赖于离散对数问题。 但 Schnorr 的优势在于它使用的假设比 ECDSA 少,并且有正式的证明证明它是安全的。

ECDSA 缺乏正式的安全证明,并依赖于额外的假设来保证这一目标。 因此,Schnorr 是密码学家使用的更清晰的框架。 Schnorr 至少比 ECDSA 更安全,甚至更安全。

总结

简而言之,Schnorr 对可扩展性和交易隐私(而不是交易链接隐私)有多重影响。 这种效率的提高开启了更复杂的多重签名交易的使用,允许非常大的 M-of-n 方案和更高级的合约。 结合 Taproot 和 Tapscript,Schnorr 极大地扩展了比特币的隐私性和可扩展性。

BIP 340 是 Schnorr 签名的标准化,允许将其集成到比特币协议中。 该提案将经过彻底审查,以确保 BIP 340 中概述的参数正确无误。 升级本身没有争议。 Schnorr 被广泛认为是目前最好的数字签名方案之一,对比特币有好处。 比特币现金开发人员已经看到了 Schnorr 签名的价值并将其应用到他们的协议中。

不使用复杂支出策略的普通用户几乎不会注意到新的 Schnorr 签名方案(隔离见证地址中的一个字符除外)。 它们不会取代比特币中的 ECDSA 签名(两种签名方案将共存)。 就像 SegWit 一样,一旦实施,钱包开发者/用户必须采用 Schnorr 才能获得好处。

在下一篇文章中,我们将研究 Schnorr 签名和 Taproot (BIP 341) 的结合如何为比特币提供更好的隐私性和可扩展性。