Schnorr 签名和 Taproot 软分叉提案

摘要:我们归纳和提供了近期比特币软分叉升级提案的来龙去脉,该提案包括一个新的数字签名算法(Schnorr),以及一个名为 Taproot 的添加了扩展比特币智能合约容量新功能的补充更新。升级的结构可确保它们同时提升可扩展性和隐私性。除增加了复杂程度外,该提案没有明显缺陷,其中最具争议的方面可能是缺少其他预期的功能。我们的结论是,虽然很多人会热衷于升级,并渴望看到它推出,但重要的是耐心。

(资料来源:Pexels

概述

2019 年 5 月 6 日,比特币协议开发人员 Pieter Wuille 向比特币开发者邮件群发名单发布了一个名为 “Taproot” 软分叉提案。如果该提案被接受,它可能会补充 2018 年 7 月 Pieter 发布的 Schnorr signature 软分叉升级。这些提案的好处与可扩充性(效能)和私密性有关。可扩充性和私密性现在看起来有一定的相关性而且不可分割。在去除有关业务的细节,确保减少交易处理(提升可扩充性)的同时,他们减少了披露的信息,因此可能无法与不同类型的交易区分,从而提高了私密性。

Schnorr 签名

Schnorr 签名算法由 Claus Schnorr 于 1991 年申请获得专利,并且在 2008 年到期。虽然据称 Schnorr 算法更强大,是它的变体,但数字签名算法(DSA)方案的采用更广泛,因为这一算法的专利在全球范围内免费使用。不过 Schnorr 博士本人一直认为 DSA 应该是在他的专利范围内。 

因使用广泛,所以当比特币在 2009 年推出时,DSA 的变体椭圆曲线数字签名算法(ECDSA)被用于其数字签名算法。但最初的 Schnorr 签名算法比 DSA 更简单和有效,减少了繁重的保安假设。经过比特币 10 年的使用,越发明显的是这些效率的优势会变得重要。因此,比特币转移至 Schnorr 签名算法似乎是合理的。

Schnorr 签名的主要好处是,多重签名交易在链上显示为正常的单一签名交易。使用 Schnorr 签名,多个签名者可以生成联合公钥,然后用一个签名共同签名,而不是在区块链上分别发布所有公钥和每个签名。这是一项重要的可扩展性和私密性改进。这意味着 Schnorr 签名会大量的节省空间和验证时间,随著传统多重签名交易的签名者的增加,比较优势将会越来越明显。

Schnorr 签名空间节省估计值

我们试图计算这种 Schnorr 多重签名(multisig)的集合特性可以带来的潜在比特币网络容量的增加。不过,由于涉及大量假设,下面 13.1% 的容量增加数值应视为非常近似的估计值。

基于 UTXO 计算的节省估计值

通过 UTXO 计数来估计的当前多重签名使用率 5.9%
假设 100% 采用 Schnorr 的有效网络容量增长 13.1%

(资料来源:BitMEX 研究团队计算和估值、p2sh.info)

(注:估计值忽略了 Schnorr 签名规模较小的影响,且只包括了加入公钥和签名的好处。通过使用与多重签名使用率相关的 p2sh.info 并对每个多重签名类型应用节省倍数(范围从 50% 到 85% )来估计容量增加。通过假设 UTXO 使用比例是区块链使用的典型值并对较大的多重签名交易应用较高权重来估计网络范围容量增加。未使用的 P2SH 输出根据未使用输出的比例被分配到多重签名类型。该数值应仅被视为非常近似的估计值。数据截至 2019 年 5 月 7 日)

上述估计的容量增加可以认为是很小,但应该考虑以下因素:

  • 多重签名技术的经济使用情况远比仅考虑 UTXO 计数更为普遍。大约 21.5% 的比特币存储在多重签名钱包中,远远高于 UTXO 计数采用的 5.9%。
  • 如下图所示,多重签名采用率正在快速增长。与此同时,像闪电网络这样的新系统需要采用多重签名,而 Schnorr 签名使得多重签名系统更加强大,采用率可能会增加

按 P2SH 地址类型存储的比特币——图表显示了多重签名技术的强劲增长

(资料来源:p2sh.info

因此,根据我们的基本计算,虽然根据网络的当前使用情况,即使 100% 采用 Schnorr 也只会带来 13.1% 的网络容量增长,但长期来看,潜在的空间节省和网络容量增长可能是远高于此。

默克尔抽象语法树 (MAST)

MAST 是比特币协议开发人员 Johnson Lau 博士 2016 年的一个想法。Lau 博士过去曾在 2002 年 2 月为 BitMEX 研究团队撰写题为 The art of making softforks: Protection by policy rule (软分叉的艺术:政策规则的保护)的文章。MAST 的想法是,除了时间锁定条件之外,交易还可能包含多个支出条件,例如 2 之 2 的多重签名条件。为了避免将所有这些条件和脚本放入区块链中,可以在默克尔树内部构建支出脚本,这样只有在使用它们时才需要显示它们,以及必要的默克尔分支哈希。

MAST 支出条件的图解说明

(资料来源: BitMEX 研究团队)(注:该图表试图说明假设 MAST 与 Schnorr 一起使用的交易结构。在上述结构中,如果 Bob 和 Alice 均签名,资金可以以合作方式赎回,或者在时间锁之后以不合作方式赎回。上述是为了说明打开和关闭闪电网络通道时可能需要的结构类型)

基于上述设计,可以假设只需要显示一种支出条件。例如,要花费输出,所有签名者需要做的是提供一个 Schnorr 多重签名和默克尔树右侧顶部的哈希(哈希(1和2))。因此,尽管存在默克尔树,但在大多数情况下,一切都按计划进行,只需要一个签名和 32 字节哈希。更简明地说,为了验证脚本,您需要通过显示其他分支哈希来证明这是默克尔树的一部分。

不过,这种结构的缺点是即使在正常的最佳情况下,当提供默克尔树左上角的单匙和脚本时,仍然需要用完 32 个字节的数据,向区块链公布另一个哈希(上图中的哈希(1和2))。 这一不足也会降低隐私,因为第三方总能确定是否存在更复杂的支出条件,因为默克尔树的顶部分支始终是可见的。

Taproot

据我们所知,Taproot 想法的起源来自于比特币开发者 Gregory Maxwell 于 2018 年 1 月发出的一封电子邮件。Taproot 的结构除在默克尔树的顶部外,类似于 MAST。就 Taproot 而言,在合作或正常情景中,可以选择仅公布单个公钥和单个签名,而无需公布默克尔树存在的证据。下面图表说明了 Taproot 交易结构。

Taproot 支出条件的图解说明

(资料来源: BitMEX 研究团队)

(注:该图表试图说明与上述 MAST 图表相同的支出标准)

左侧(或地址)上的调整后公钥可以从原始公钥和默克尔根哈希计算得出。在正常或合作支付的情况下,在赎回时,原始公钥不需要在链上,并且不显示默克尔树的存在,需要公布的仅是单个签名。在没有合作或异常赎回的情况下,原始公匙将与关于默克尔树的信息一同显示。

Taproot 与原始 MAST 结构相比的好处很明显,在合作的情况下,区块链或脚本本身不再需要包含额外的 32 字节哈希,从而提高效率。除此之外,交易看起来 “正常” ,只是一次拥有公钥和签名的付款,其他支出条件的存在不需要显示。这对于对外部第三方观察者来说是一个巨大的隐私好处,例如当打开闪电通道或者甚至进行合作闪电通道关闭时,交易看起来就像是常规的比特币支出。该交易可以被构建成使得仅在不合作的闪电通道关闭时,才需要显示默克尔树的存在。越多不同类型的交易看起来一样,隐私就越好,因为第三方可能不太能够确定正在发生哪种类型的交易和产生资金流。一些比特币开发者的长期目标可能是确保无论发生什么类型的交易,至少在所谓的合作情况下,所有交易看起来都一样。

对签名集合的困惑

减少区块链所需签名数量的潜在可扩展性好处巨大,因此这个概念往往会激动人心。Schnorr 签名确实能够在多重签名交易中集合签名,这对比特币来说应该是一个重大的好处。 不过,包含这一点以及其他与签名集合相关想法的存在,导致人们对潜在好处有一些不切实际的期望,至少在此升级提议方面是这样。据我们所知,对于这个特定的升级提议,唯一的集合好处是以在多重签名方案中加入签名的形式,而不是多重输入或多个交易。

签名集合想法的汇总表


包含在软分叉提议中
多重签名交易中将公钥和签名相结合——作为 Schnorr 的一部分包含在内
交易中多个输入需要联合签名
多个交易中多个输入需要联合签名(Grin币在该领域具有一些功能,可以使用Mimblewimble)

(资料来源: BitMEX 研究团队)

结论

我们认为,与此软分叉相关的好处不太可能有争议。此软分叉似乎在功能、可扩展性和隐私方面取得三赢局面。最大的争论方面可能是没有包含其他想法或为什么要这样做的争论。

话虽如此,许多人可能对这些升级的潜在好处感到兴奋,并希望尽快在网络上看到这些升级启动。不过,当谈到比特币,特别是对共识规则的变更时,极为需要耐心对待。

欢迎转载,请注明文章来自

BitMEX (www.bitmex.com)