Taproot 即将进入比特币:它是如何运作的、它的历史和影响 PlatoBlockchain 数据智能。垂直搜索。人工智能。

Taproot 来到比特币:它是如何工作的,它的历史和影响

Taproot 即将进入比特币:它是如何运作的、它的历史和影响 PlatoBlockchain 数据智能。垂直搜索。人工智能。

Taproot 和 Schnorr 签名将在比特币区块 709,632 上生效。这将是一项巨大的基础性成就,可以在未来继续发展。隔离见证在网络上上线已经四年了,这是我们最后一次重大协议升级。相当于一个减半周期那么长!

考虑一下。从 SegWit 上线到 Taproot 上线四年了。缓慢而有条理的耐心,这是应该的。但 Taproot/Schnorr 的历史可以追溯到更早的时候。

主根的历史

一些已经在这里呆了一段时间的人可能会觉得这很讽刺,但据我所知,第一次提到 Schnorr 签名实际上是来自前比特币核心开发人员、后来成为企业区块链构建者的 Mike Hearn。 2012年,他 带大 与签名批量验证相关的新密码曲线的想法,可以降低节点验证的计算成本。最终,他提出的计划取决于施诺尔的签名。

Adam Back 正在讨论天真 方案 使用 Schnorr 签名创建一个看起来像 2014 年单签名地址的多重签名地址。甚至加文·安德烈森也包括在内 Schnorr 代替 ECDSA 如果他能挥舞魔杖的话,他希望对比特币做出改变。

自从比特币诞生之初,大多数积极参与比特币核心的开发人员都想要 Schnorr 签名,并且对于它们相对于 ECDSA 签名的优越性一直有相当坚实的共识。事实上,可以说 ECDSA 是专门创建的,因为 Schnorr 签名方案已获得专利,并且非常需要不受专利阻碍的开源加密签名方案。

Schnorr 比 ECDSA 更高效且更易于操作(可以从签名中添加、减去等内容,如果操作正确,仍然可以在用户应该拥有有效签名时为用户留下有效签名)。多年来,在大多数加密应用程序中,使用 ECDSA 是一种必然,而不是渴望。

默克尔化抽象语法树 (MAST) 是即将到来的 Taproot 升级的 Taproot 一半,也有类似的悠久历史。我无法找到引用,但我清楚地记得 2013 年或 2014 年左右,Peter Todd 之类的人在 Bitcointalk.org 上抛出了这句话。

MAST 的 BIP 由 Johnson Lau 于 2016 年提出。该提案在 2017 年左右也出现了一些活动,当时 Mark Friedenbach、BTCDrak 和 Kalle Alm 将其分解为两个独立的 BIP(116117)并扩展了刘的原始提案。

MAST 在接下来的一年里一直处于悬而未决的状态,直到 Greg Maxwell 提出了最初的 Taproot 想法并 出版 将其发送至 bitcoin-dev 邮件列表。他的主要见解是,在他能想到的多个参与者之间的任何合同案例中,都存在一个“最佳结果”,即每个人都可以通过签署适当的结果来解决合同,而不是通过更高级的脚本和交易来强制执行该结果。这是 Taproot 所基于的基本断言,即将 MAST 树调整为常规顶级密钥,可以在不透露其他支出条件的 Merkle 树是否存在的情况下使用该密钥。

本历史课的最后一小部分从 Pieter Wiulle 宣布开始 BIP 草案 Schnorr 和 Taproot 于 6 年 2019 月 2020 日同时发布到邮件列表。到 XNUMX 年 XNUMX 月,这已正式最终确定为 BIP 340、341 和 342。从这一点开始,只是在实施层面细化了很多小细节,一些审查期,然后是漫长的拖延 激活机制之争。这导致我们现在还差一点就激活了。

Schnorr 签名的重要性

那么,Schnorr 签名有什么大不了的呢?好吧,首先,他们缩小了交易规模。对于交易中的单个签名,ECDSA 签名的大小通常约为 72 字节。 Schnorr 签名每个签名最多包含 64 个字节。与 ECDSA 相比,每个 Schnorr 签名的大小大约节省 12%。这对于使用 Schnorr 的人来说是一个直接的好处,他们比 ECDSA 用户支付的费用要少,但对于不使用 Schnorr 的人来说也是一个直接的好处,因为需要在区块链中存储稍微少的数据来处理和验证其他人的 Schnorr签名。

存储较少的数据总是好的,但更好的是提高验证必须存储的数据的效率。 Schnorr 的良好特性之一,即其背后数学的线性性,也允许在比特币数据中实现您想要的良好特性:批量验证。当您的节点从网络接收到一个块时,它会解析每个单独的交易并一一验证每个签名。

这是验证区块会消耗大量 CPU 资源的重要原因。 Schnorr 签名可以全部批处理在一起并立即进行数学验证,有点像将它们粉碎在一起并进行一次数学运算,而不是一堆单独的运算。因此,Schnorr 签名越多,节省的计算量就越大。这对网络来说是一个巨大的扩展胜利。

Schnorr 带来的另一个巨大改进是多重签名脚本。每个多重签名地址都必须在花费时明确揭示多重签名脚本中涉及的所有单独公钥,并且必须为花费过程中涉及的每个密钥提供签名。凭借 Schnorr 的数学特性,多重签名标准 MuSig 的大门打开了。您只需将密钥添加在一起,最终得到一个公钥,每个人的私钥共享都可以使用新的签名协议进行签名。 Blockstream 的乔纳斯·尼克 标杆 MuSig2 需要两分钟 一百万 多重签名地址中的参与者进行签名。多重签名脚本的扩展性改进不容低估。

多重签名脚本的这一巨大飞跃也对隐私配置文件和基于比特币构建的众多应用程序的成本产生了巨大影响。基于 MuSig 的闪电通道现在可以融入链上 Schnorr/Taproot UTXO 的整个匿名集,因为没有人能够区分它们是二中之二多重签名输出这一事实。

它们会融合在一起,看起来就像一个签名脚本。一般来说,任何多重签名 UTXO 都是同样的情况。这对于使用多重签名脚本通过比单个签名脚本更强大的安全性和恢复模型来更好地保护其冷存储的人们产生了很大的影响。

首先,通过观察区块链,他们使用多重签名设置并不明显,因此,就像闪电的情况一样,这将使它们与其他一切融为一体。不过,一个关键的胜利在于经济方面:现在使用多重签名需要为最终花费 UTXO 所涉及的每个密钥提供单独的签名。借助 Schnorr/MuSig,事物将被压缩为单个组合公钥的单个签名,这意味着使用 MuSig 花费多重签名 UTXO 将变得更加便宜,因为它将更少的数据推送到区块链。

Schnorr 签名所做的最后一件很酷的事情是极大地简化了适配器签名的实现。考虑一个适配器签名,该签名是通过从有效签名中添加或减去的值“加密”的。除非您反转该数学运算,或者使用用于操作它的“密钥”来“解密它”,否则它是无效的。这对于 ECDSA 来说是可能的,但由于与 Schnorr 相比,数学是非线性的,因此它相对复杂,并且在实现它时需要考虑很多安全问题。

不过,由于 Schnorr 的线性特性,适配器签名就像取一个值(例如数字 9,300,030)并从中减去一个值(例如 30)一样简单。一旦持有适配器签名的一方知道了减去的值,他们就可以简单地将其加回来并 ,他们又得到了有效的签名。

主根的含义

正如上面所讨论的,Taproot 实际上本质上就是 MAST,只不过它不像 P2SH 那样工作(您对脚本进行哈希处理,或者在 MAST 的情况下,是脚本树顶部的 Merkle 根),您可以“调整” Schnorr 公钥由 Merkle 树的根构成。

调整之所以有效,是因为 Schnorr 的线性特性——当您使用 Merkle 根“调整”公钥(将该 Merkle 根添加到公钥中)时,您可以简单地将 Merkle 根添加到原始私钥并生成支出密钥新的调整后的公钥。即,您向公钥和私钥添加相同的内容,它们仍然是有效的密钥对。这隐藏了 MAST 树的存在,除非使用它的一个分支,但从根本上来说,它仍然只是一棵 MAST 树,只是以一种更有效和更私密的方式致力于的一棵树。

在 Merkle 树中提交不同的支出脚本并仅显示所使用的脚本的能力在智能合约复杂性方面是一个巨大的可扩展性胜利,可以在比特币上构建。

就像区块大小限制每个区块的交易数量一样,交易大小限制为 100 KB。唯一的区别是,它不是共识规则,而是政策规则。这意味着矿工可以挖掘大于 100 KB 的交易,但默认情况下,网络上没有任何节点会首先将大于该交易的交易转发给矿工。

这本质上限制了用于锁定比特币 UTXO 的脚本的大小。即使使用 P2SH,UTXO 被锁定到脚本的哈希值,直到您使用它才显示该哈希值,您最终仍然必须在花费时显示完整的脚本。 Taproot 通过在使用脚本时不要求您显示整个脚本来增加脚本的可扩展性限制。您只需确保可以花费 Taproot UTXO 的任何单一方式都遵守此限制,而不是将您可以花费 UTXO 的所有方式的总大小限制在交易大小限制内。

Taproot 还具有许多隐私优势。 MAST 树的一大好处是能够创造各种条件情况,让其他方可以使用代币。

想象一下继承计划之类的事情,大约一年后,您的孩子可以花掉您的硬币,或者如果您拒绝签署,您的妻子和律师有可能收回硬币。除非实际使用,否则这些支出条件不会向公众透露。这个双重过程为参与您构建的不同支出分支的其他方提供了对他们参与该 UTXO 的合理否认,并保护他们免受小偷或攻击者的攻击,因为他们知道他们对自己的资产有一定程度的控制权。目标的 UTXO。

在技​​术层面上,Taproot 的设计也相对较好。任何深入了解隔离见证的读者都应该熟悉见证版本。

实施隔离见证时,它创建了交易的新“见证”部分,签名数据将移至其中。见证数据有一个版本标志,以便它可以升级到新功能,而不必为新功能使用基础层上未定义的 OP_CODE。

这实际上就是 Taproot/Schnorr 的实现方式。隔离见证交易使用见证版本零。当 Taproot/Schnorr 即将上线时,他们将使用新的见证版本一,以将其与旧的隔离见证交易区分开来。与 SegWit 引入见证版本的方式相同,Taproot 为使用 Taproot 的 UTXO 的 MAST 树中使用的 Tapscript 引入了“tapleaf 版本”。这不仅允许埋藏在 MAST 中的脚本无需在基础层上使用新的 OP_CODE 即可升级,而且也无需升级见证版本!因此 Taproot 的设计目标是在未来尽可能高效地进行升级,而不限制其他与协议无关的升级。

Taproot 将带来许多不同的用例。首先,闪电通道中的所有非合作条款(例如惩罚密钥或允许使用它们的时间锁)都可以埋藏在带有 Taproot 的 MAST 下。除非需要使用,否则没有人会知道它们的存在,这进一步模糊了哪些 UTXO 实际上是闪电通道。

继承方案是另一个用例。想象一下主根树的结构,这样在你六个月没有转移你的钱之后,你的整个家庭就可以聚在一起并按照他们想要的方式花费 UTXO。然后,六个月后,除了一个人之外的每个人都可以花掉它(所以想象一下,如果你有你的妻子、两个孩子和父母作为钥匙持有者,那么想象一下,在额外的六个月之后,你的妻子、一个孩子和父母可以签署,或者您的两个孩子和父母可以在没有您妻子的情况下签名,等等)。

然后,六个月后,除了两个人之外,每个人都可以花掉它。最终,它可能归结为只有一个人在律师的帮助下(以确保不会发生恶作剧)能够花费 UTXO。

或者,如果您使用多重签名来保护您的冷存储,但您只有一个您认为长期安全且可预测的地方,该怎么办?您可以创建一个 MAST,最终,几年后,该安全位置的钥匙可以单独使用这些硬币,以防万一其他钥匙丢失或损坏,但不会立即使您的硬币面临被盗的风险,如果发生这种情况一把钥匙被泄露。

这是对比特币的一次惊人而全面的升级,可以说自从比特币本身诞生以来就一直在进行中,而不仅仅是最近几年制定和实施了实际的实施细节。

这确实是比特币协议的可扩展性和实用性在很多方面的胜利,但由于其中一些协议是多么微妙和“不性感”,所以很难传达。但这并不影响胜利。所以,每个人都系好安全带,准备好玩我们很快就要使用的新玩具,因为 Taproot 来了!

这是 Shinobi 的客座帖子。 表达的意见完全是他们自己的,不一定反映 BTC Inc 或 比特币杂志.

资料来源:https://bitcoinmagazine.com/technical/bitcoin-taproot-explainer

时间戳记:

更多来自 比特币杂志