Home » Taproot大升级:神话与真相

Taproot大升级:神话与真相

by Tim

上周,比特币历史上最重要的升级之一Taproot被激活。但它的实际作用很难理解,而且经常被误导。因此,我们询问了一位专家。

上周,Taproot被激活,这是有史以来最大的比特币升级之一,社区已经热切期待了多年。但究竟什么是Taproot?那它是做什么的呢?

任何带着这个问题阅读关于Taproot新闻的人都会收获相当多的困惑。因此,本文首先对其他人的写作进行了一番概述。

当新闻机构已经在报道比特币的升级时…

Taproot最引人注目的特点之一是,它是第一个对新闻机构DPA有新闻价值的比特币升级。这就解释了为什么你会突然在几乎所有的媒体上找到关于Taproot的信息,从《南德意志报》和《联邦日报》到《维也纳标准报》和《小镇公报》。或者说:错误的信息。

Finanzen.net解释说,Taproot “对比特币区块链具有深远的意义”。这次升级使比特币 “更加敏捷和灵活”,并为 “重要的技术创新铺平道路”。FAZ和其他许多报纸引用DPA的报告说,升级带来了 “更多的隐私,更少的存储要求和下降的成本”。

所有这些仍然是如此模糊,以至于既不可能是错误的,也不可能是正确的。如果想更具体地了解,就会学得比较少,如果是这样,那就会很高兴地出现错误或误导。例如,Finanzen.net说Taproot “只生成一个用于支付的公钥,而不是几个公钥[……]”,除了术语混乱之外,最多只能说是一半正确。此外,Taproot实现了 “比特币区块链上更复杂的智能合约”,这就是为什么比特币可能很快与以太坊竞争。

在FAZ中,人们了解到Schnorr签名 “为比特币提供更多的隐私”。该报和DPA要求区块链教授Philipp Sandner就此发表声明,他讲道:”这些Schnorr交易……用一个签名释放了一捆交易”。即使是教授,有时也会错得让人不知道从何下手。

关于Taproot的最有能力的信息来源是Heise。IT杂志解释说,这次升级引入了 “Pay-to-Taproot(P2TR)交易类型”,”它结合了Schnorr签名和’Merklized Alternative Script Trees’的概念”。但是,当该杂志声称Taproot增加了交易隐私,或者Schnorr允许你在交易上签字时,即使是Heise也陷入了困境。

这充其量是半真半假,更重要的是显示了理解–和解释–像Taproot这样技术上复杂的升级是多么困难。

Upgrade like a wrap

我们正在努力为Taproot的混乱带来一点秩序。为此,我们与马克-艾哈特取得了联系,他在互联网上也被称为默奇。马克在纽约的Chaincode实验室工作,此前他曾在帕洛阿尔托的BitGo工作。很难有比巴登人更接近比特币发展中心的地方了。

马克不仅帮助我们在概念上更好地理解Taproot,而且还帮助我们掌握了现在升级的具体含义。

Taproot在改变什么?更新的好处是什么?

Taproot大致由两部分组成。施诺尔签名和一个脚本树。这两个组成部分是相互独立的,但它们一起工作,而且每一个都不容易理解。这是理解Taproot真正作用的障碍之一–以及它没有什么作用的障碍。

Schnorr – 更好的ECDSA

施诺尔的签名是最容易理解的。马克解释说,这些都是在比特币使用的签名算法ECDSA之前出现的。

“签名过程超级有趣,但发明者克劳斯-彼得-施诺尔为其申请了专利。由于专利费太贵,其他密码学家发明了ECDSA,也是基于椭圆曲线的签名。然而,在此期间,专利保护已经过期”。

ECDSA很好,事实上非常好,这就是为什么中本聪为比特币选择这种算法。但它还不如Schnorr好,如果没有专利保护,可能就没有理由让人使用ECDSA而不是Schnorr。

最重要的区别在于一个小但部分关键的细节:”ECDSA中的签名不是线性的,而是Schnorr中的签名,”马克解释说。”如果一个签名方案是线性的,你可以聚合多个签名,这样的聚合可以让你检查。你不能用非线性方案来做,比如ECDSA。”

因此,从理论上讲,FAZ和Heise所声称的是真实的:人们可以通过Schnorr将交易中的所有签名汇总成一个签名。目前,如果一个交易有许多输入–所以它结合了许多硬币–你必须签署每个输入,并将每个签名写入区块链。这占了很多交易数据的比重。施诺尔实际上可以改变这种情况。

可以! 因为 “不幸的是,这种聚合没有进入Taproot的升级,”马克澄清说。”这将需要额外的定义和讨论,所以他们决定以后再做。”

签名秘密集合

尽管如此,现在已经可以用Taproot聚合Schnorr签名了。但只是不用于普通交易,只用于多符号交易。多重认证是指两个或更多的当事方必须签署一项交易,以便从一个特殊的地址(多重认证地址)发行硬币。

“比方说,我们一起创建一个钱包,只有我们双方都签字,才能花钱。这将是一个 “2乘2多义词”。感谢Taproot,我们可以聚合我们的公钥。你把你的公钥给我,我把它和我的公钥结合起来,结果就和普通的地址没有区别了。所以你看不出来这是一个共享的钱包。”

这种 “不能说 “是Taproot据说能改善隐私的确切原因。

以前,多义词地址很容易被识别。他们以三开始,而不是像传统地址那样以一开始。SegWit使这一情况有所缓和,因为SegWit地址格式也以3开头。然而,不同的地址类型造成的差异,部分地破坏了比特币的隐私。

有了Taproot,这种差异就可以完全被拉平了。无论一个地址体现了什么输出条件–一个签名、多个签名、定时器、智能合约–它们看起来都一样。

但仅靠施诺尔的签名是不够的。因为这些只对简单的多义词结构有效:”2的2″,”3的3″,等等。然而,在实践中,其他模式更受欢迎,即所谓的阈值签名,如 “3的2″。第三方有一把备用钥匙,在另一把钥匙丢失时介入,或者在另外两个人意见不一致时进行仲裁。

在这样的模型中,通过Schnorr签名进行的聚集不起作用。所以在这一点上我们需要谈谈Taproot的第二部分:脚本树。

其他情况的脚本树

Mark的前雇主,钱包提供商BitGo,提供了一个经典的 “2 of 3″结构:有三个钥匙。一个由客户持有,一个由BitGo持有,第三个是安全系数高的冷库备份。在这三个密钥中,需要两个密钥来发送交易,这两个密钥通常是客户和BitGo.

的密钥。

“对于使用哪两把钥匙是有预期的。现在可以用聚合的Schnorr签名来服务。因此,我们用来自你和BitGo的密钥形成一个P2TR输出,当正常情况发生时,我们可以用一个聚合签名来签名。”

这种由双方签署交易的方式是最优雅、最简单、最漂亮的方式。相比之下,目前使用 “P2SH”(支付给脚本的哈希)地址的方法简直是复杂得令人发指。

但是,如果到了后备情况下怎么办?如果我丢失了我的密钥,而BitGo用备份密钥签名?或者,如果BitGo失败了,我不得不让备份钥匙发挥作用?

“这些其他的、非预期的路径被作为叶子编织到Taproot引入的脚本树中,”马克解释说。当然,这种解释也叫人自己去解释。

From leaves to the root

一个脚本树基本上 “只是 “一个脚本的Merkle或哈希树。但什么是哈希树?

哈希树是大量哈希值的一种特殊排列。例如,假设我们有四个比特币交易,我们对它们进行散列。然后我们会有四个哈希值。在哈希树中,它们被称为 “叶子”。

练习的目的是要从树叶到树枝再到哈希树的根部。要做到这一点,我们首先将第一和第二哈希值连接在一起,然后哈希。我们对第三个和第四个也是这样做的。作为结果的两个哈希值–分支–我们也是哈希值。这给了我们根:一个代表众多哈希值的哈希值。

这棵哈希树看起来像一棵倒置的树。树冠在下面,树根在上面。图片来自wikipedia.org, 许可: Creative Commons

这棵哈希树看起来像一棵倒置的树。树冠在下面,树根在上面。图片来自wikipedia.org, 许可: Creative Commons


这样的根是做什么的?它允许用一个哈希值来证明各种数据。比特币区块就是一个例子:矿工拿着大量的交易–通常是几千笔–并从这些交易中形成哈希树的根。这个根是采矿的基础,它允许任何人检查一个区块是否有效。

在Taproot介绍的scriptbaim中,每一片 “叶子 “都是花费比特币的一种方式–一个脚本。上面提到的multisig地址不仅包含两个公钥的总和,而且还包含脚本树的根。

现在,如果发生非预期的情况,我用我的和备份密钥签名,因为BitGo失败了,会发生以下情况,马克解释说: “我揭示了相应的脚本,它存储在脚本树的一个叶子里。为了证明原始地址编码了这些输出条件,我揭示了其他叶子和分支的哈希值,这样就可以重建根。然后我用两把钥匙的签名来满足叶子中包含的脚本。”

因此,我们有一个程序,多义词交易通常–当预期的情况发生时–更优雅、更简单,也更私密。只有在非预期的情况下,脚本树才会启动。其结果与P2SH方法类似,也很复杂–但它在某种程度上更加私密。

因为在P2SH中,整个脚本都是散列的,其中包含了所有关于硬币如何使用的可能性。为了写出一个有效的交易,我必须显示脚本的纯文本。所以我必须公开哪些公钥参与其中,即使它们根本没有被使用。

另一方面,对于P2TR,如果我写出交易中实际发生的纯文本的选项就足够了。所有其他选项仍然是模糊的。

The breakthrough for multisig

没有必要争论Taproot是否优雅。它是。脚本树是对施诺尔签名的一个有益补充。像马克这样的开发者对Taproot感到兴奋,并迫不及待地想让升级版到达所有钱包,这是可以理解的。

但是,对于那些技术上的优雅本身不是目的,而是一种手段的人来说,现在很可能会问:从实际情况来看有什么意义?那么,比特币现在用Taproot能比以前做得更好吗?

“马克说:”Multisig是一种更安全的资金管理标准。”你可以建立备份,并使其更难花钱。它使你不那么脆弱。”

然而,直到现在,多重签名的方法都有很大的缺点:它们往往很复杂,对用户和开发者来说都是如此,它们限制了隐私,而且费用更高。所有这些缺点在Taproot中都消失了。”你泄露的私人信息更少,你透露的设置更少,你可以用区块链上更少的数据做更多的事情。”

马克希望Taproot能帮助Multisig取得突破。更多的钱包将采用Multisig,会有更好的标准,而且目前往往还很糟糕的用户体验会变得更好。

What Taproot doesn’t do

尽管有这么多的热情,马克警告说不要有夸大和错误的期望。这使我们回到了我们开始的地方。关于DPA的报告及其在新闻室的解释。

“有时人们会说,Taproot给比特币带来了DeFi,因为它可以实现智能合约。这是不对的。智能合约已经存在,Taproot所能做的一切在以前都是可能的–只是更复杂、更昂贵、更不隐私。”

关于Taproot的隐私问题,也有一些误解在流传。”昨天我在一家德国大报上看到,由于Taproot的存在,比特币正在变得更加匿名。这也是不正确的。确实,你不再能看到一个或多个当事方是否在签字。但地址仍然是假名的,你仍然可以看到哪些硬币正在发行。”

区块链分析师对钱包和地址的分析和聚类将和以前一样没有问题,即使在Taproot之后。”你只是对引擎盖下的设置了解得少一点。无论是普通的地址、闪电通道还是多义词设置,你都无法看到它了。但资金流的总体可追溯性仍然是一样的。”

现在轮到生态系统了

正如比特币经常出现的情况,升级需要一些时间才能到达钱包和用户手中。想想SegWit就知道了。升级花了很长时间才推广到很大一部分交易,而对bech32地址的支持则需要更长时间才能广泛推广。

默奇希望这对Taproot来说会更快。”BitGo钱包已经可以用Taproot接收硬币。这表明,这次可以更快”。

要理解这一切是怎么回事,以及为什么它不直接,你需要知道一些更多的技术细节。冒着让你不知所措的风险,我们需要谈谈所涉及的地址格式。

  • 默认地址被称为 “Pay-to-Public-Key-Hash”(P2PKH),以1开头。
  • 我们已经说过的 “Pay-to-Script-Hash”(P2SH)地址以3开头。这些被用于multisig和其他智能合约,如时间锁。
  • SegWit最初也是建立在以3开头的地址上。嵌套的SegWit地址 “或–对不起:”Pay to Script Hash Pay to Witness Public Key Hash”(P2SH-P2WPKH)。在这里,或多或少,SegWit的脚本被散列并转移到一个P2SH地址。这使得SegWit能够以较少的破坏性方式被引入。
  • 原生的SegWit-v0地址,或Pay to Witness公钥哈希(P2WPKH)地址,技术上工作更有效,使用bech32格式。这个新制定的标准看起来完全不同,地址更长,只由小写字母组成,以 “bc1 “开头。

Pay-to-Taproot(P2TR)也使用bech32标准。然而,在地址的生成方面有一点差异,这就是为什么到目前为止使用的v0地址不兼容。这是故意的,以防止任何人损失金钱。

“在准备Taproot的过程中,我们发现一些钱包忽略了bech32地址中的Witness版本,总是将输出定义为Native-Segwit-v0,”Mark解释说。 “如果这些钱包中的一个向P2TR地址汇款,P2TR脚本将被编码在输出中,但由于版本错误,需要完成P2WPKH脚本才能花费。受援者就不能花这笔钱”。

因此,对马克来说,重要的是尽可能多的钱包首先允许向Taproot地址发送资金。因为在这一点广泛实现之前,用户使用这些地址永远是不利的。

核心开发人员已经完成了他们的工作。但在这一点上,生态系统的工作才刚刚开始。

Related Posts

Leave a Comment