主页 > imtoken官方版下载安卓最新版 > 什么是 Taproot(比特币升级 Taproot)

什么是 Taproot(比特币升级 Taproot)

2021年11月14日左右,比特币将迎来自己的重要软分叉升级Taproot。超过 90% 的矿工已经同意升级,因此在 SegWit 升级期间不太可能出现社区分叉。争议。看来这次升级并没有引起太多关注,但也有很多文章称其为最重要的升级。

Taproot 升级到底是什么,它真的令人兴奋吗?

Taproot 本身就是主根植物的意思,大概如下图。Taproot 的作者 GregoryMaxwell 解释说,他希望在比特币交易支付的过程中,能够像主根植物一样关注大主根,隐藏那些不必要的小枝。

什么是主根?

Taproot 由比特币核心贡献者 Gregory Maxwell 于 2018 年首次提出。此实现目前正在开发中。如果没有 Taproot,这些复杂的事务(时间锁、多重签名)需要多个事务才能完成,因此很容易失败。

Taproot 通过允许像单个比特币交易一样执行复杂的交易(多重签名、时间锁)来增强比特币的隐私。

Taproot 升级包括三个重要的技术变化(概念),旨在增强比特币的可扩展性、隐私性和灵活性。

P2SH

桅杆

施诺尔签名

P2SH(Pay-to-ScriptHash)

比特币地址是一串字母和数字。用户可以与他人共享,以便从后者那里接收 BTC。比特币交易有两个主要标准:Pay-to-PubKeyHash (P2PKH) 和 Pay-to-ScriptHash (P2SH)。

在讨论 P2SH(Pay To Script Hash)和 P2PKH(Pay-To-PubKey Hash)的概念之前,我们先来熟悉一些比特币的背景知识:

在比特币网络中,比特币的形式是UTXO。UTXO是Unspent Transaction (TX) Output(未花费交易输出)的缩写,即比特币交易执行后形成的不确定面额的单位。例如,您的比特币钱包中有 10 BTC,您想将 5 BTC 转给朋友。比特币区块链的处理方式不同。它将花费所有 10 BTC(全部余额),将 5 BTC 转入您朋友的钱包,并将剩余的 5 BTC(10 BTC - 5 BTC = 5 BTC)转入您自己的钱包。这一次,您和您的朋友各有一个未使用的 5 BTC。

比特币使用脚本(几行代码)来规定花费 BTC/UTXO 的条件。脚本用作锁定机制。

BTC 被锁定在脚本中。当脚本返回成功(即条件满足)时,BTC被解锁。

任何人都可以将 BTC 发送到任何比特币地址。只有满足脚本中定义的某些条件,才能使用锁定的 BTC。该脚本确定接收方如何使用收到的 BTC。发起交易时,发送方会在交易中放置一个名为“PubKey Script(又名锁定脚本)”的脚本。接收方(未来消费时)需要生成一个“签名脚本(也称为解锁脚本)”,它是满足PubKey脚本的数据参数的集合。签名脚本在代码中也称为“scriptSig”。

在上面的例子中,当您向朋友发送 5 BTC 时,锁定脚本也包含在此交易中。如果你的朋友要花掉这些 BTC,就必须生成一个解锁脚本,满足锁定脚本中指定的条件。

Pay-to-PubKeyHash (P2PKH)

Pay-to-PubKeyHash 是一种传统的比特币地址格式。它的地址以数字 1 开头。

只有 P2PKH 地址的所有者才能解锁 PubKey 脚本,并通过提供公钥哈希和私钥签名来花费收到的 BTC。私钥用于证明公钥哈希的所有权。

正如我们上面所讨论的,该脚本定义了可以在特定地址上使用 BTC 的条件。当网络满足并验证指定条件时,该地址上的 BTC 将被解锁以进行消费。

这个过程是如何工作的?- 接收方首先生成一个 PubKey 脚本并与发送方共享。发送者在发送 BTC 时将此 PubKey 脚本添加到交易中。在接收 BTC 时,如果接收方想要解锁这些 BTC UTXO,必须提供公钥哈希和私钥签名,并满足 PubKey 脚本中提到的条件。

例如,这些条件可以是:

解锁 BTC 至少需要两个签名。

提供密码(password)来解锁。

BTC需要等待一段时间才能解锁。

以上情况可以作为解锁BTC的条件。

发送比特币时,发送方需要在交易中包含 PubKey 脚本。因此,这增加了交易量,产生的交易费用是正常交易的 5 倍左右。

在这里,发件人必须承担额外的费用。Pay-to-ScriptHash 可以帮助发件人避免这种额外费用。

Pay-to-ScriptHash (P2SH)

Pay To Script Hash (P2SH) 可以帮助发送方避免额外成本,并将这个责任(额外成本)转移给真正需要使用锁定脚本中指定条件的接收方。Pay-to-ScriptHash 比特币地址以数字 3 开头。

在此交易标准下,发送方无需将长 PubKey 脚本放入他们的交易中。在这里,锁定脚本被替换为赎回脚本哈希。赎回脚本哈希由赎回脚本计算。兑换脚本类似于 PubKey 脚本,包含接收方在花费未使用的输出之前必须满足的条件。发送方只需在交易中注明赎回脚本的哈希即可。赎回脚本哈希可以转换为标准比特币地址,发件人无需任何特殊操作或额外费用即可将 BTC 发送到该地址。

当接收方想要解锁这个 P2SH 地址上的 BTC 时,需要生成一个具有相同哈希值的赎回脚本,并将其包含在交易中。因此,接收方用于解锁 UTXO 的交易规模会增加,执行交易的成本也会增加。

例如,Alice 想向 Bob 发送 10 个 BTC。Alice 必须在交易中包含兑换脚本哈希。首先,Bob 生成一个赎回脚本,然后将赎回脚本的哈希发送给 Alice,这样 Alice 就可以将哈希添加到交易中并发起交易。如果 Bob 想要花费这个 UTXO,他必须生成一个具有相同哈希的解锁脚本并满足脚本中提到的条件。

别忘了,Alice 只需要将赎回脚本的哈希添加到交易中比特币Taproot升级时间,而不是整个脚本。因此比特币Taproot升级时间,Alice 不会产生额外费用。

通往不可能三角的道路

无论升级什么样的区块链,最终都会解决区块链中的不可能三角问题。区块链世界中的不可能三角理论是由 Vitalik 在一篇名为《论分片区块链》的文章中提出的。这意味着在一个区块链网络中同时实现去中心化、安全性和性能(效率、可扩展性)三个条件是非常困难的。现实情况往往是,当我们改进某些两个条件时,我们不得不以牺牲第三个条件为代价。

而这次 Taproot 的升级,也不是脱离了这个大框架。Taproot升级主要对应两个方面。首要目的之一是进一步提高其匿名能力,即进一步提高安全性。另一方面,期望通过改变区块本身的数据结构来提高交易的性能,减少交易中不必要的数据负担。

分解主根

Taproot 升级是三个互补 BIP 的统称,包括 Schnorr 签名 (BIP 340)、Taproot (BIP 341) 和 TapScript (BIP 342)))。

施诺尔签名

Schnorr签名是由德国密码学家Claus Schnorr提出的,但由于专利原因,直到2008年Schnorr签名才能免费使用,这让2008年出生的比特币错过了它(这里指的是2008年发表的原始论文),使用ECDSA签名。

目前,Schnorr 签名在性能和安全性的几乎所有方面都超过了 ECDSA 签名。更重要的是,Schnorr 和 ECDSA 使用相同的椭圆曲线算法,因此在升级方面更容易实现。Schnorr 最引人注目的部分是作用于交易输出级别的聚合签名。

在多重签名的情况下,我们经常要在交易数据中放入多个签名,尤其是当签名很多的时候,会带来很大的交易费用和内存负担。但是通过聚合签名,我们可以将多个签名组合成一个签名,如下图所示。

同样,在 Schnorr 签名下,也可以聚合公钥,大大提高了比特币网络在交易过程中的性能。

在验证时,传统的 ECDSA 只能支持一对一的验证方式,但 Schnoor 受益于它的聚合思想,可以对节点进行批量验证。

直根

我们知道,匿名性一直是比特币所追求的重要安全问题。在地址层面,虽然比特币地址的伪匿名性在一定程度上隔离了物理世界身份和链上世界地址,但不同的交易、地址类型的分裂却非常明显。下面这些地址的交易类型一目了然,这就导致了攻击者对交易进行地址分析的可能性。

Taproot 的目标是提高比特币地址的匿名性,让所有地址看起来都一样,你无法从地址分析交易类型。使用 Taproot 可以将独立的 P2PKH 和 P2SH 合并,使它们彼此无法区分,但交易费用是一样的,而这正是使用 Schnorr 的思路。

同时,Taproot 使用 Schnorr 创建 Merkle 抽象语法树(MAST,一种融合抽象语法树和 Merkle 树的数据结构)。在前面的案例中,假设我们有一笔交易,设置条件是用户 A 可以在交易发起前 30 天使用该交易,用户 B 可以在交易发起 30 天后使用该交易。最终,无论是谁使用了交易,用户 A 和 B 的信息都会暴露出来,这显然是不必要的。

在 MAST 中,只会暴露使用该交易的用户,而隐藏其他用户的信息,极大地保护了用户的隐私。

TapScript

BIP 342 是关于 Taproot 脚本实现的具体内容。它添加了一些用于执行、部署 Taproot、Schnorr、软分叉和其他代码级功能的操作码,例如“OP_CHECKSIGADD”。“OP_CHECKMULTISIG”和“OP_CHECKMULTISIGVERIFY”等低效操作码被禁用。修订了“OP_CHECKSIG”和“OP_CHECKSIGVERIFY”以提供 Schnorr 功能。比特币脚本的内容已作为一个整体进行了改进,以适应 Taproot 升级。

总结

综上所述,Taproot 升级确实有一些亮点,但更多 Taproot 更像是对 SegWit 遗留问题的完善和补充,如 bip-0341 中的摘要所述:“本文档提出了新的 SegWit 版本 1 输出类型。 ..” 这只是 SegWit 输出级别的新解决方案。

还有一个问题是Taproot升级是软分叉,真正激活Schnorr要到明年才能开始,所以Taproot本身的升级过程也不是一蹴而就的。如果 P2TR(Taproot 下的地址)未能成为主流,那么 P2TR 显然没有达到对其他地址匿名的目的。

此外,也有声音质疑 Taproot 的实际效果,认为 Taproot 会导致地址空间碎片化,让攻击者更容易分析。

对于普通用户来说,Taproot 最直观的好处就是降低了交易费用,提高了交易的匿名性和效率。无论如何,Taproot 升级对比特币会有什么影响,能否达到预期目标,只有时间来验证。

来源网站: