主页 > imtoken最新版本 > Schnorr 签名在哪里?比特币可能会在 2020 年软分叉

Schnorr 签名在哪里?比特币可能会在 2020 年软分叉

imtoken最新版本 2023-01-18 09:59:29

Schnorr签名哪里好 2020年比特币可能为它软分叉

金财经近期推出硬核专栏,为读者提供热门项目的介绍或深度解读。

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

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

这三个 BIP 代表了比特币迄今为止最大的升级,也是自两年前激活隔离见证 (SegWit) 以来的首次升级。三个协议升级捆绑在一起,对比特币的功能、可扩展性和隐私性进行了重大改进。

这个软分叉的激活方法正在讨论中。 BIP 没有规定网络升级的确切方法。 BIP340–342 中描述的升级最早可以在 2020 年冬季实施,但可能需要更长时间。

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

比特币是如何交易的

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

相反,比特币交易基于未使用的交易输出 (UTXO),由输入和输出组成。每个 UTXO 都关联着一个私钥和交易数据。当您转移比特币时,您正在转移 UTXO 的所有权,您需要通过加密签名来证明所有权。

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

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

交易的输出包含两个元素:比特币的数量和一个锁定脚本(或 scriptPubKey),该脚本通过限定某些输出的使用条件来锁定比特币的数量。锁定脚本会将输出锁定在特定的比特币地址,将比特币的所有权转移给新的所有者。

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

为确保您不会花费您不拥有的 UTXO,比特币客户端通过执行脚本来确认交易。每个输入中的解锁脚本与对应的锁定脚本一起执行,查看是否满足消费条件。全节点跟踪和验证整套 UTXO,确保每个人都只能使用自己拥有的比特币。

举例说明

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

Alice 想向 Bob 支付 1 BTC,因此她使用 Bob 的公共地址创建了一笔交易。为了转移比特币,Alice 提供了她的数字签名(通过私钥和交易数据历史记录)来证明她在 UTXO 集中拥有至少 1 个 BTC,而不会透露她的私钥。

Schnorr签名哪里好 2020年比特币可能为它软分叉

典型交易的比特币可视化

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

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

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

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

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

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

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

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

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

Schnorr 签名(BIP340)

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

什么是 Schnorr 签名?

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

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

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

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

密钥聚合

Schnorr 的主要好处涉及多重签名交易。

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

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

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

Schnorr签名哪里好 2020年比特币可能为它软分叉

使用 Schnorr 进行密钥/签名聚合

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

Schnorr签名哪里好 2020年比特币可能为它软分叉

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

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

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

但是,使用 Schnorr,M 个签名被聚合为一个签名。一旦提供了阈值公钥和阈值签名,该交易就被授权并且在观察者看来就像一个正常的 P2PKH 交易。

Schnorr签名哪里好 2020年比特币可能为它软分叉

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

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

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

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

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

Schnorr签名哪里好 2020年比特币可能为它软分叉

减少交易数据,加快验证速度

Schnorr 签名数据比现有 ECDSA 签名数据小 11%,即 A 笔交易占用 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 极大地扩展了比特币的隐私性和可扩展性。

BIP340 是 Schnorr 签名的标准化,可以集成到比特币协议中。将对提案进行全面审查,以确保 BIP340 概述的参数没有问题。升级本身没有争议。 Schnorr 被广泛认为是最好的数字签名方案之一,对比特币有好处。比特币现金开发人员已经看到了 Schnorr 签名的价值比特币转账原理,并将其实施到他们的协议中。

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

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

原文:Schnorr 签名将如何使比特币受益?