什么是 Schnorr 签名, Schnorr 签名的优势: 密钥和签名聚合, 批量验证
比特币使用数字签名来实现在区块链上转移代币。数字签名用于证明特定代币的所有权并授权将其转移给新所有者。
我们将电子代币定义为一系列数字签名。每个所有者通过对上一笔交易的哈希和下一个所有者的公钥进行数字签名来将代币转移给下一个所有者。
– 中本聪在比特币白皮书(2008 年) 中解释 UTXO 模型
目前,比特币使用椭圆曲线数字签名算法(ECDSA)。通过 Taproot 升级,比特币将集成 Schnorr,这是第二种具有多个优势的签名方案。
自比特币问世以来,ECDSA 一直用于保护比特币。ECDSA 之所以被选择用于比特币,有几个原因:
然而,ECDSA 也有一些缺点,而 Schnorr 对此进行了改进。因此,开发人员决定比特币应该实现一种不同的签名方案,即 Schnorr。
与 ECDSA 类似,Schnorr 数字签名方案使用椭圆曲线密码学(ECC)。Schnorr 签名在计算效率、存储和隐私方面比 ECDSA 提供了几个优势。
Schnorr 签名提供的最重要优势是密钥聚合。典型的数字签名包含一个公钥、待签名的消息和一个签名,表明公钥的所有者签署了给定消息。当多方希望签署相同的消息(例如从 multisig 地址支出)时,它们必须分别包含自己的公钥和签名。因此,如果三方希望签署相同的消息,则证明将包括三个公钥和三个签名。出于计算和存储原因,这对每个节点来说都不是最佳选择,因为每个节点必须执行三次签名验证(一项昂贵的操作)并存储三组签名和公钥。
密钥聚合消除了多个公钥和签名的需求。Schnorr 公钥和签名可以聚合,以便如果三方希望签署一笔交易,它们可以信任地将它们的三个公钥组合成一个单一的公钥。然后,使用它们的三个私钥,它们可以签署相同的消息。最后,它们可以将它们的三个签名组合成一个单一的签名,该签名对于聚合公钥是有效的。验证者只需验证一个签名和一个公钥,就可以确保所有三方签署了消息, 查看以下动画:
密钥聚合的隐私影响是显著的。因为多方可以聚合密钥和签名,多签交易可以完全类似于单签交易。因此,所有 Schnorr 支出将彼此类似,使得链分析无法区分多签支出和单签支出。这将使链分析使用的几种启发式方法失效,包括共同输入所有权启发式和脚本类型启发式。这种隐私优势将延伸到所有使用 Schnorr 的比特币用户,但不适用于使用 ECDSA 交易类型的用户。
当节点接收到新区块时,通常会逐个验证该区块中的每笔交易和签名。这是一个耗时且资源密集的过程。
密钥聚合使比特币节点能够批量验证签名,这种方法显著减少了验证具有多个输入的交易所需的时间和计算资源。
由于 Taproot 是软分叉,即使在激活 Schnorr 后,大多数比特币用户和钱包仍将继续使用 ECDSA。区块将继续同时具有 Schnorr 签名和 ECDSA 签名,从而在短期内限制了批量验证的好处。
自 1990 年发明以来,Schnorr 签名一直受专利保护,严重限制了它们的使用并扼杀了创新。由于 ECDSA 是开源的,因此被广泛使用、经过严格测试且值得信赖。尽管 Schnorr 专利于 2008 年到期,即比特币问世的同一年,但人们认为 Schnorr 签名缺乏足够的普及和测试,无法确保其足以保护像比特币这样关键系统的安全。
Schnorr 签名通过 2021年 11 月 Taproot 升级引入比特币。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!