什么是Schnorr签名?什么是Taproot?

什么是Schnorr签名?什么是Taproot?

1个

什么是Schnorr签名方案?

Schnorr签名方案是一种数字签名方案,可让您提高比特币网络的隐私性和可伸缩性。

2

谁发明了Schnorr签名方案?

Schnorr的签名方案和Taproot技术是改进BIP-340和BIP-341比特币协议的建议。 2020年1月21日,开发人员Peter Welle接受了接受软分叉变更的请求。

施诺尔的签名方案是由德国密码学家,法兰克福大学克劳斯·彼得·施诺尔教授于1991年提出的。

Schnorr提出的方案是对El-Gamal(1985)和法币-Shamir(1986)方案的修改,但签名尺寸较小,并且还使用了密码学家David Chaum的成就。

在该计划发布之前,Schnorr为其获得了多项专利,该专利于2008年中本聪(中本聪)引入比特币时到期。 Schnorr的签名当时已经可以使用,但是它们尚未标准化且未被广泛使用。

中本聪创建比特币时,他不得不选择一种现有的签名方案。他需要一种易于使用且安全的开源算法。 ECDSA满足了这些要求。 ECDSA的前身DSA算法是Schnorr方案和El-Gamal方案的混合体,其创建是为了规避Schnorr专利。

得益于Peter Welle和他的同事的工作,比特币的ECDSA变得更快,更高效,他们创建了改进的椭圆曲线secp256k1。

ECDSA存在一些缺陷,开发人员正在寻找替代方法。关于Schnorr签名在比特币网络上可能实现的第一次讨论于2014年进行,几年后,开发商Peter Velle发布了Schnorr BIP。

3

Schnorr签名的主要技术特征是什么?它们比ECDSA更具优势?

安全

与ECDSA一样,Schnorr签名也使用离散对数问题。 Schnorr签名的优点是它们使用的假设更少,并且具有可靠的形式逻辑证明:使用随机预言模型和椭圆曲线点(ECDLP)组中相当复杂的离散对数问题,可以轻松证明其安全性。

Schnorr签名是一种更加透明的应用程序技术,密码学家可以更轻松地使用它。

僵硬

Schnorr的签名被证明是不灵活的,而ECDSA签名则很灵活,这使得无法访问私钥的第三方可以更改现有的有效签名并花费双倍的时间。

线性度

Schnorr签名的一个显着优势是线性特性,这是通过线性数学实现的。

Schnorr的签名是线性的,可以加减。此类操作的结果是一个有效的签名,该签名对应于公钥的相同添加(或减去)。对于ECDSA,这样的方案不起作用-减去或添加这样的数字签名是没有意义的。

Schnorr签名的线性属性允许键和签名的聚合。聚集是指将多个公共密钥组合为一个,以便所有各方都需要一个签名的能力。通过添加几个输入的键,可以将它们聚合为一个单个签名,其中包括所有签名者的部分签名。

下面的等式说明了聚合过程,这可能是由于Schnorr签名的线性特性所致。除了参与者之外,没有人知道三个人背后有一个公共密钥/签名。

在多订阅n交易中,部分签名称为阈值签名。如下图所示,在3-out-5多重签名中,我们有M = 3个签名(n = 5)作为交易输入的一部分。

n个M订阅交易至少需要M个签名者并验证每个签名。要确认多订阅密钥的UTXO所有权,发布scriptSig脚本必须包含M个ECDSA签名。 scriptSigs的大小根据M个签名的数量呈线性增长,这增加了这些交易的大小(以及交易费用的数量)。

另外,观察者将知道A,B和C已签署了该交易,并且将能够识别所使用的多订阅方案。

使用Schnorr签名,将M个签名聚合为单个签名。一旦提供了公共密钥和阈值签名,该交易即被授权,并且看起来像普通的P2PKH交易。

Schnorr的签名仅允许您为所有M个参与者创建一个签名。发布脚本将具有一个签名,该签名是参与者所有签名的集合。

观察者将不再能够将交易签名与一个人,很多人或阈值人数相关联。尽管交易地址和金额仍可公开获得,但Schnorr的签名使使用钱包/指纹识别技术变得困难。

减少交易规模并提高验证速度

就大小而言,Schnorr的签名比现有的签名小11%,现有的签名在事务中大约占70-72个字节。由于它们在区块链上占用的空间更少(它们的固定大小为64字节),因此,您可以减少交易的大小并降低费用。

另外,如果比特币交易包含许多输入,则每个输入都需要一个单独的签名。对于由许多签名者控制的比特币交易,每个签名者必须放置一个单独的ECDSA签名。这些签名将单独验证。为了有效地验证一组签名,必须使用数学计算。

得益于Schnorr的签名,所有输入仅需要一个组合签名。在事务中包含一个签名为其他事务提供了其他选项。减少多订阅交易的交易规模可减少佣金。密钥聚合使您可以选择不检查每个单独的条目并加快验证过程。

使用ECDSA的紧凑型多重签名更难以创建,因为与Schnorr签名不同,此类签名是根据DER标准编码的,而Schnorr签名的编码需要较少的空间。

4

Schnorr签名方案将如何实施?

BIP-340是Schnorr签名的标准化,可让您将其集成到比特币协议中。

更新本身不会引起开发人员的反对。他们认为该方案是现有的最佳方案,因为其数学特性提供了很高的计算精度,具有可塑性,并且在交易确认方面相对较快。

如果实施了Schnorr签名,则一般用户实际上不会注意到其外观(SegWit地址中只有一个字符除外)。 Schnorr的签名不会取代比特币中的ECDSA-这两种方案将共存。

5

什么是Taproot(BIP-341)?

Taproot(BIP-341)是产品的第二部分,包括Schnorr / Taproot / Tapscript。如果Schnorr方案提供了新的签名类型,那么Taproot会通过引入新版本的交易退出和确定支出条件的新方法来扩展其功能。

Taproot关闭,或比特币发展的下一步

6

谁发明了Taproot?何时发明?

Taproot的技术是由Bitcoin Core的开发人员和Blockstream Gregory Maxwell的前CTO设计和提出的。

在2018年4月,数学家Andrew Poelstra发表了数学上的安全证明。那年7月,Xapo工程师和比特币核心开发人员Anthony Townes提出了一种解决方案,以增加Taproot使用的数据量。

在2019年5月6日,彼得·韦尔(Peter Velle)发布了改进比特币协议的提案,他在其中提出了Taproot更新以及Schnorr和MAST签名。为了在比特币代码库中实现更新,Velle提出了软分叉。

2020年1月21日,Velle将Taproot包含在下一个软分叉的更改请求中。

7

Taproot提供哪些功能?

尽管Schnorr签名允许多订阅交易看起来像标准的(Pay-to-Public-Key-Hash)交易,但Taproot与Schnorr签名相结合,通过增加可以提供标准交易外观的交易类型组,扩展了这些可能性:

  • P2PKH和P2WPKH的使用,即单笔消费;
  • 使用MuSig或等价物进行n出n支出(类似于当前使用的P2SH和P2WSH 2出2多重签名);
  • 使用最常见的k个签名者的n个k(对于最小的n个值);
  • 闪电网络中的通道关闭,原子交换和其他协议,有时可能导致各方都同意这一结果。

这四类用例代表了迄今为止的大多数比特币交易。无论合约的复杂程度如何,Taproot都允许您以一键费用的形式在区块链中提供联合结果。

显示合约其他结果的其他脚本未添加到区块链中,从而为特定区块中的更复杂交易释放了空间。

8

Taproot如何运作?

了解Taproot需要事先了解MAST解决方案。

多亏了比特币网络上的SegWit,MAST概念才得以重生

MAST技术(基于Merkle树的抽象语法树)由开发人员Johnson Lau在2016年提出。

MAST提供了使用新见证程序的功能,并使用Merkle树来解码脚本中互斥的分支。

Merkle树是一种数据结构。术语“树”描述其分支的结构。通常,默克尔树如下图所示:根在图的顶部,叶在图的底部。

使用MAST,您可以创建具有许多不同限定词的复杂合约。仅可执行脚本被打开,这节省了区块链中的空间,并允许您实现更复杂的脚本/合约。

Merkle树是通过每个脚本的单独哈希创建的,以获得简短的唯一标识符。接下来,将每个标识符与另一个标识符组合并再次进行哈希处理,从而为该对创建另一个简短的唯一标识符。

重复此过程,直到只有一个标识符称为Merkle根(上图中的Address = Hash(1,2)),该标识符以几个字节唯一地标识整个数据集。默克尔根可被视为硬币的“安全”。

与按脚本哈希(P2SH)不同,MAST允许您在Merkle树中构造许多支出条件。在这种情况下,仅显示满足的条件:借助根和Merkle树,可以确认条件在Merkla树中。树的其余部分保持隐藏。

例如,如果我们有一个复杂的脚本,说一方不能在一个月(时间锁)到期之前花费其硬币,或者可以通过三出五的多重签名交易来花费硬币,那么这两个条件将在硬币出现后立即显示将花费(此方案现在在比特币中有效)。

MAST提供了以下机会:如果扩展了Merkle树中的任何数据,则可以使用Merkle根和许多其他数据(称为Merkle路径)来确认特定数据已包含在Merkle树中。树的其余部分(以及相应的其他条件)仍保留为散列和隐藏状态。这意味着,在所有参与者同意的情况下,仅需披露已满足的条件。

复杂合约的用户可以创建较小的交易,而在具有大量下标的更复杂的合约的情况下,效率的提高也更大。与其他任何现有机制不同,MAST允许您拥有许多其他分支,这使您可以创建更高级的智能合约,而不会增加使比特币节点负担的额外成本。

在上图中,Alice甚至可以将更长的受益者链添加到MAST结构中,而无需更改使用的字节数。佣金的规模没有增加,因为它仍然只使用32个字节来花费其比特币。在网络级别,区块将能够处理更复杂的交易。

缺陷在于,默认情况下,为了维持适当的隐私级别,每个人都必须使用MAST结构。 Merkle树的上部分支始终可见,观察者可以理解存在其他支出条件。另外,大多数不需要附加脚本的事务的负担增加,这导致它们的价值增加。

MAST仍未在比特币中实现,因为对此进行必要的更改太复杂,并且可能导致难以计算的后果。该问题的可能解决方案可能是Snorr / Taproot / Tapscript解决方案软件包,因为它充当了简单性与附加功能之间的中间立场。

9

Taproot如何改善MAST?

Taproot提供了自己的Merkle树版本,称为脚本树。参与者可以选择使用以下方式消费:

  • 公钥作为普通签名;
  • 用脚本花钱。

在第一种选择中,这是默认的支出路径,在这种情况下,单边或多边公钥是无法区分的。

在第二种情况下,隐藏脚本不会显示出来,直到造成浪费为止。可以将不同的脚本组织到Merkle树中,并且还可以通过打开限定符之一来使用输出。

如果我们使用主要支出脚本花费交易,我们只需给出默克尔的证明,其中包括主要支出脚本和替代支出脚本的哈希值-这足以确认主要支出脚本包含在脚本树中。

Taproot使用MAST结构将条件隐藏在Merkle的根后面。在这种情况下,默克尔根源本身是隐藏的,并允许通过密钥直接消费。只有一个密钥被发送到区块链-没有人看到还有其他条件。

结合Schnorr签名,由于Taproot输出,MAST结构得以隐藏。在Merkle树的顶部,可以选择发布单个公钥和签名。结果,事务P2PKH和P2SH看起来相同。

一个例子是闪电通道的关闭。

闪电通道是2选2多重签名的变体。无需使用繁琐的脚本来关闭事务,Schnorr允许您组合签名并将Taproot呈现为公共密钥/签名。当双方都同意时,结果看起来好像有人用常规签名通过发送到两个地址用尽了此输出。观察者将无法确定这是一个闪电通道。

TapBranch是用于关闭Lightning通道的脚本树(TapTree)

为了隐藏MAST结构,使用聚合的公用密钥对上表中的TapBranch哈希进行哈希处理(由于使用了Schnorra方案,Alice和Bob可以添加其公用密钥来创建Taproot内部密钥)。

所得的哈希用作私钥,从中派生另一个修改的公钥。更改密钥(也称为隐藏密钥对)涉及嵌入脚本1和2。

接下来,将更改后的公钥添加到Taproot内部密钥以创建Taproot退出密钥。该过程如下图所示:

如前所述,有两个关键支出。默认的支出路径是Alice和Bob同意关闭Lightning通道,并且Taproot退出键可确保交易看起来像标准的P2PKH交易。在其他情况下,硬币用完后将立即打开使用的脚本,而所有其他选项仍保持隐藏状态。

在上面的示例中,如果Alice和Bob同意进行闪电付款,他们可以将Schnorr签名组合在一起,创建主公钥,将签名添加在一起并创建主签名。

双方都使用各自的密钥放置了部分签名,并且关闭Lightning通道就像直接向公共密钥付款一样。

在闭包不兼容的情况下,仅打开使用的脚本。验证者将能够确定阈值公钥已通过Merkle根进行了更改。但是,所有其他选项/脚本将保持隐藏状态。

上图显示,脚本树提供了一个新的恢复选项,可以访问比特币。 Taproot обеспечивает опцию восстановления для потерянных монет (для пользователей с обновленными кошельками). Если теряется одиночный ключ, он утрачен безвозвратно. Если же пользователь теряет закрытый ключ, и его средства находятся в форме выхода Taproot, то должен существовать другой путь, посредством которого можно заявить права на монеты (например, восстановить резервные ключи 3-из-5, которые удерживают родственники пользователя).

Taproot повышает степень приватности, эффективности и гибкости скриптов биткоина, позволяя разработчикам писать сложные скрипты, минимизируя при этом воздействие на блокчейн.

Усложненные транзакции позволяют значительно сэкономить на комиссиях, поскольку требующие обработки большого количества данных скрипты уже не должны платить комиссии, суммы которых превышают суммы комиссий в стандартной транзакции Pay-to-Public-Key-Hash. Чем сложнее транзакции, тем выше их эффективность.

Поскольку Taproot позволяет осуществлять усложненные транзакции с помощью всего лишь одной подписи, количество байтов, используемых для агрегированных ключей и подписей, не меняется в зависимости от числа подписантов. При использовании мультиподписи Witness-Script-Hash (P2WSH) каждый дополнительный публичный ключ добавляет 8,5 байтов, а каждая дополнительная подпись – приблизительно 18,25 байтов.

С точки зрения приватности Taproot позволяет минимизировать информацию об условиях расходования для выхода транзакции, которая раскрывается в блокчейне. Благодаря Taproot большинство приложений могут использовать путь расходования на основе ключа, конфиденциальность которого защищена.

Хотя схема Шнорра позволяет придавать мультиподписным транзакциям видимость обычных транзакций Pay-to-Public-Key-Hash, Taproot расширяет круг транзакций, которым можно придать такую видимость (сделать Pay-to-Public-Key-Hash и Pay-to-Script-Hash неотличимыми).

Подписывайтесь на канал 0x资讯 в YouTube!

资讯来源:由0x资讯编译自FORKLOG。版权归作者ForkLog所有,未经许可,不得转载
提示:投资有风险,入市需谨慎,本资讯不作为投资理财建议。请理性投资,切实提高风险防范意识;如有发现的违法犯罪线索,可积极向有关部门举报反映。
你可能还喜欢