「没有 Schnorr,Taproot 就不会让你一路走到你想去的地方。」
—— Pieter Wuille

原文标题:《Schnorr 即将开启的多签时代意味着什么》
作者:李画,币信特约撰稿人

「Schnorr 签名、Taproot 和带有多签的签名聚合很可能作为一个升级包被同时添加到比特币中,这是一些非常令人期待的加密创新」, Andreas M. Antonopoulos 在今年年初提到比特币的下一次升级时难掩兴奋。

如果说闪电网络给比特币带来速度,那么 Schnorr 将为比特币开启隐私知名比特币布道者 Andreas M. Antonopoulos

Antonopoulos 是《精通比特币》(Mastering Bitcoin)的作者,同时也是加密货币世界里重要的技术专家和备受尊敬的人。他预测比特币的升级将在 6 个月后以软分叉的形式实现,包含 Schnorr 在内的升级将为用户带来如今比特币尚不拥有的在隐私方面的好处。

这次升级的 BIP 已经被创建,相关规范正在最终确定中。比特币核心开发者 Pieter Wuille 和其他开发者编写了实现代码,第一个原型也已经被创建,以 Schnorr 为核心的比特币豪华升级包已在路上。

那么,广受比特币开发者青睐的 Schnorr 究竟是什么?它带来的又是什么?

一、Schnoor 签名究竟是什么

比特币是通过数字签名来解锁 UTXO 中的未花费余额,从而完成交易的。

以下图为例,在交易 B 中,Bob 转给 Carol 一个比特币。Bob 需要分两步来完成这笔交易:

如果说闪电网络给比特币带来速度,那么 Schnorr 将为比特币开启隐私

1)证明自己拥有这一个比特币

Bob 为什么拥有这一个比特币,因为 Alice 给了他这一个比特币;Alice 在交易 A 的「加锁」部分把给 Bob 的这一个比特币用 Bob 的公钥哈希锁上,该公钥哈希也是 Bob 的钱包地址。

Bob 在交易 B 的「解锁」部分提供自己的公钥以及用私钥创建的签名,就能证明这一个比特币是自己的,从而完成解锁,可以使用这一个比特币。

2)把这一个比特币给 Carol

Bob 在交易 B 的「加锁」部分用 Carol 的公钥哈希把这一个比特币锁上,即表明这个比特币是属于 Carol 的了。

当 Carol 要使用这个比特币时,比如想转给 Dave,Carol 就需创建一笔交易 C,先在「解锁」部分用自己的公钥及私钥签名解锁这个比特币,再在「加锁」部分用 Dave 的公钥哈希把这个比特币锁上。

不难发现,比特币需要利用公钥进行加锁,利用私钥签名进行解锁,从而实现加密货币的交易。公钥、私钥及其签名如何产生?通过数字签名算法。

Schnoor 即是一种数字签名算法,它将在下一次升级中取代比特币现在使用的签名算法 ECDSA。Schnorr 由德国数学家、密码学家 Claus Schnorr 提出,该算法可以与 ECDSA 使用同一个椭圆曲线:secp256k1,因此升级起来的变动不会很大。

Schnorr 最突出的特点在于它是「线性」的,也就是说,它可以把多个公钥或多个私钥签名聚合成一个新的公钥或一个新的签名(也可以理解为把多个需要同时解开的锁变成一个锁,把用于解锁的一串钥匙变成一把钥匙),而且这个新的公钥或签名还满足线性特征。

做一个不是特别适合但能说明问题的比喻,在一笔使用 Schnorr 的多签交易中,如果参与方 Alice 的公钥或签名是 1,Bob 的是 2,Carol 的是 3,Dave 的是 4,那么这笔交易对外显示的公钥或签名是 10 (1+2+3+4=10),而不是 1、2、3、4。

二、Schnoor 签名算法的好处

Schnorr 开发者 Andrew Poelstra 认为,人们之所以对 Schnoor 感兴趣,是因为它提高了比特币的可伸缩性,并允许人们创建具有非常多参与者的多签交易,这里边的参与者不仅指多个人,也可能是 Liquid 网络、闪电网络、智能合约等等。

此外,Andrew 认为 Schnorr 签名在结合 Taproot 和 Scriptless Scripts 后,会让所有比特币交易看起来都一样,无论这是一个普通交易还是一个复杂交易,这种方式将极大改善比特币的隐私情况。

这些优势源于在多签的情况下,如果使用的是 ECDSA,用 N 个公钥加锁,就需要有与之对应的 N 个签名来做验证解锁,验证的工作也需要进行 N 次;如果使用的是 Schnorr,N 个公钥可以聚合为一个公钥,验证时也只需用一个聚合签名做一次验证。

这种「线性」的特质让 Schnorr 在性能、体积、隐私等方面均优于 ECDSA。

性能:Schnorr 的性能优势显而易见,它减少了一个多签交易的验证工作量,此外还有可能实现多个交易的批量验证,也就是用一个区块中所有交易的聚合签名一次性验证所有交易,从而提升比特币的验证速度。

体积:Schnorr 使用的是聚合公钥和聚合签名,这会减少多重签名的大小,通过将无关数据移出区块链提高系统的可伸缩性,节点将拥有更多的带宽同时还能减少存储量。Andrew 认为如果每个人都采用这种方法,等于变相将比特币的容量增加了 10% 至 20%。

隐私:Schnorr 的隐私优势在于它在交易脚本中使用聚合公钥和聚合签名完成加锁和解锁操作,某个用户的原公钥和原签名都不会暴露。外界只能看到 10,而不能看到 1、2、3、4,外界甚至无法知道这是一笔多签交易还是一笔非多签交易。

Schnorr 签名还有更多有趣的使用方式,比如它能够在被调整后使用。人们可以把一个聚合公钥乘以 2 作为新的聚合公钥来上锁,解锁时只需要把聚合签名也乘以 2 就能完成解锁。这样一来其他人就无法知道原聚合公钥和原聚合签名是什么,他们也看不出公钥或签名是否被调整过。

三、Schnorr 与 Taproot 的组合拳

币印矿池创始人潘志彪同样认为这次升级意义重大,他在个人微博中写到:「MAST、Schnorr、Taproot,组合起来,燃到爆」,Schnorr 如何与 Taproot 等技术手段组合起来使用?这套组合拳又能给比特币带来什么好处?

先从了解它们是什么开始。Schnorr 是签名算法,它是这些技术中最基础也是最核心的;MAST、Taproot、Graftroot、Scriptless scripts 等则都是脚本结构,它们可以通过利用 Schnorr 让自己的功能淋漓尽致的发挥。

比特币脚本是比特币交易的载体:一笔比特币交易是通过执行一段比特币脚本来实现的,解锁就是执行「输入脚本」,加锁就是执行「输出脚本」。脚本结构是指比特币脚本的数据结构。

如果说闪电网络给比特币带来速度,那么 Schnorr 将为比特币开启隐私

如前文所述,当人们使用自己的未花费余额进行比特币交易时,需要在输入脚本部分提供自己的公钥和私钥签名,以证明自己拥有这些余额。

P2SH 是比特币最基本的脚本结构,它向外展示整个脚本的内容,包括公钥和私钥签名的信息,节点通过这些信息来验证该笔交易。但同时,节点和任何人都可以获取这笔交易的全部细节信息。

因此我们说比特币是透明的。虽然它能够把物理实体的个人与比特币账户隔离,实现物理个体的匿名,但如果站在比特币账户的角度,P2SH 是不为账户提供隐私的,所有人都可以知道这笔资金是哪个 / 哪些账户以什么方式使用的。

因为 P2SH 的缺点,开发者提出了一种新的脚本结构 MAST,它是一种树状的结构,具体而言是一棵默克尔树,即哈希树,树上的每一个节点存储的都是哈希值。其结构如下图所示。

如果说闪电网络给比特币带来速度,那么 Schnorr 将为比特币开启隐私树状结构

比特币交易使用 MAST 结构是指在多签情况下,把一笔资金不同的使用条件单独进行哈希处理,生成一个哈希值储存在这棵树的叶子节点中;这些哈希值逐层向上递归,最终生成一个哈希值放在树的最顶端的节点中,即默克尔根中。

这样一来,当验证某笔交易时就不需要暴露全部的脚本信息,只需要提供默克尔根和抵达某使用条件的默克尔路径上的数据,其他信息仍然是哈希密文状态。MAST 脚本结构不仅提供了隐私性,还增加了数据处理效率。

现在可以讨论 Taproot 了。

Taproot 是一种特殊的 MAST,基于 Schnorr 签名。它可以包含复杂的交易条件和资金使用细节,就像 MAST 一样,再把所有这些内容作为一个新的资金使用条件(新的锁)提供给外界使用,这个新的使用条件和该使用条件下的解锁方法(新的钥匙)是通过 Schnorr 的线性特征来支持的。

在最后的呈现上,Taproot 无需披露任何脚本信息,也无需暴露原公钥、原签名,它的输出是一个聚合签名加锁,也只要用一个聚合签名解锁。

再次做一个不是特别适合但能说明问题的比喻。孙悟空可以把猴毛变成猴子,而 Taproot 做的是把猴子变成猴毛,也就是说,我们把普通交易看做一根猴毛,把 MAST 支持的复杂交易看做一只功能强大的猴子,Taproot 可以把 MAST 这个猴子变成猴毛,即 Andrew 说的让所有的比特币交易看起来都一个样,不管它本身是多么复杂。

这对比特币隐私,包括多签交易下的账户隐私、智能合约隐私,以及 Liquid 网络、闪电网络等的隐私都是极大的改善。因为智能合约、Liquid 网络、闪电网络,以及更多链外扩容的方案都是一种多签,一种复杂交易。

四、组合拳开启多签大幕

在现实生活中,我们常常会提倡某种「生活方式」,在加密货币这个世界的生活中,或许我们该把多签当作一种生活方式来倡导,让多签成为加密货币的常识性和习惯性的资金使用方式。

以 Schnorr 和 Taproot 为基础的多签对交易隐私的提升在前文已经阐述,它可以隐藏参与者的公钥和私钥签名信息,也可以隐藏资金被使用的细节。

多签的另一个好处是提高安全性。不管是加拿大 QuadrigaCX 交易所创始人离世,导致 1.6 亿美元的加密货币被锁事件,还是从 Mt.Gox 开始就一直持续不断的交易所钱包被盗事件,都可以通过多签得到改善。

多签提供了一种加密货币的「寻回」方法,让我们在无法通过某条路径或某种方式解锁比特币时,还能有其他的解锁方式。这就像在现实生活中,如果我们弄丢了储蓄卡取不出钱的时候,还能用存折本取钱。

(注:当然现在是补办储蓄卡,但补卡这种方式和多签的方式是完全不同的。加密货币没有补卡这种方式,因为私钥本身就是终极的唯一的凭证,不像银行在账户凭证之上还有用户身份这一层的凭证可用于补卡)。

多签也可以提供严苛的加密货币「使用」条件,常规情况下只有这些条件同时被满足时才能解锁比特币。这就像进入银行的金库,需要刷卡和刷视网膜打开金库大门,需要密码和钥匙打开保险柜。

这些都是多签带来的好处,而 Schnorr 和 Taproot 的组合进一步升级了这种好处,让多签能以更高效、更隐私的方式实现。

需要注意的是,即使是升级之后,一笔未使用多签的普通交易也是无法得到 Schnorr 和 Taproot 带来的好处的,其隐私级别与升级前是一样的。

因此一方面需要提倡多签,而另一方面,即使普通交易不使用多签,多签也在大量应用场景中被需要,比如通过智能合约使用比特币,通过 Liquid 网络、闪电网络,以及更多链外扩容的方式使用比特币。多签本身的地位正在变得越来越重要。

而 Schnorr 和 Taproot 的组合 —— 后续该组合还可能包含 Graftroot 等更多多签脚本结构 —— 将极大地加强多签的性能,让比特币上的复杂交易成为可能。

复杂交易在过去很容易就可以被识别出来,但升级后它们将和普通交易看起来一样,交易将变得私密,比如当用户打开或者关闭闪电网络通道时,除了参与方之外没有人知道发生了什么,其他人看见的只是一个普通的加锁公钥。Wuille 称 Schnorr 和 Taproot 是比特币在隐私性上的巨大胜利。

Wuille 同时也认为 Schnorr 和 Taproot 是比特币智能合约的巨大胜利。它们将允许创建具有复杂使用条件的多签交易,在 Schnorr 线性特征的支持下,可能衍生出许多新的应用以及链下创新。

此外,在 Schnorr 和 Taproot 的支持下,复杂交易不仅有高的执行效率,还不需要占用额外的比特币区块链空间。Schnorr 使用的是聚合公钥和聚合签名,只需一次验证;Taproot 支持很大的脚本树,但占用的空间却很小。

不难发现,虽然比特币之前就支持多签,但包含 Schnorr 和 Taproot 在内的比特币升级包无疑会全面开启多签的大幕,而多签带来的,不仅是一个更安全、更具隐私、更有伸缩性的比特币区块链,还是一种支持智能合约、Liquid 网络、闪电网络,以及未来更多比特币应用方式的基础设施。

这是一个值得期待的、更好的未来。

来源链接:mp.weixin.qq.com