主页 > imtoken官网app下载 > 黄金硬核 |施诺尔签名好在哪里?比特币可能会在 2020 年软分叉

黄金硬核 |施诺尔签名好在哪里?比特币可能会在 2020 年软分叉

imtoken官网app下载 2023-05-15 07:22:06

金色硬核 | Schnorr签名哪里好 2020年比特币可能为它软分叉

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

正如我们在《全面解读 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,而不会透露她的私钥。

金色硬核 | Schnorr签名哪里好 2020年比特币可能为它软分叉

典型比特币交易的可视化

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

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

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

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

金色财经比特币实时行情

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

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

金色硬核 | Schnorr签名哪里好 2020年比特币可能为它软分叉

从上面的比特币富豪榜,我们可以很容易区分 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 的线性属性进行聚合。除了参与者之外,没有人知道公钥/签名背后有三个人。

金色硬核 | 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 极大地扩展了比特币的隐私性和可扩展性。

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

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

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

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