主页 > imtoken冷钱包官方 > 为什么比特币 Taproot 升级很重要

为什么比特币 Taproot 升级很重要

imtoken冷钱包官方 2023-01-18 20:14:41

Taproot 通过使多重签名交易和时间锁定交易等复杂交易看起来像普通的比特币交易,从而增强了比特币的隐私性。

原标题:《干货 | 比特币升级提案 Taproot 技术解读》原作者:Gaurav Agrawal

本文将讨论比特币升级提案 Taproot,该提案将引入许多新功能。本文将从各个技术层面分析 Taproot,介绍此次升级涉及的技术,以及这些技术将为比特币用户带来哪些好处。

什么是主根?

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

“Taproot 允许复杂的交易(多重签名、时间锁)像单个比特币交易一样执行,从而增强了比特币的隐私。”

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

·P2SH 签名

我们将从技术层面讨论这三个概念,以了解 Taproot 升级将为比特币用户带来哪些好处。

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 的首字母缩写,即比特币交易执行后形成的一个不确定面额的单位。例如,您的比特币钱包中有 10BTC,您想将 5BTC 转给朋友。比特币区块链的处理方式不同。它将花费所有 10BTC(全部余额),将 5BTC 转入您朋友的钱包,将剩余的 5BTC(10BTC -5BTC = 5BTC)转入您自己的钱包。这一次,你和你的朋友各自持有未使用的 5BTC。

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

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

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

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

Pay-to-PubKeyHash (P2PKH)

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

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

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

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

比特币的交易时间段

例如,这些条件可能是:

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

·提供解锁密码。

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

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

Pay-to-ScriptHash 的优势

·使用散列而不是冗长的脚本。

·发送方可以在不知道脚本中指定的消费条件的情况下将任意数量的赎回脚本哈希放入交易中。

·减少发送方的交易费用负担。

MAST(默克尔抽象语法树)

MAST 是 Merklized Abstract Syntax Tree 的缩写。

为什么要使用 MAST?如果您想在 P2SH 地址中花费 BTC,您必须生成具有相同哈希的赎回脚本并将其包含在交易中。如果脚本中指定的消费条件过多,交易量会变得异常大。 MAST 可以很好地解决这个问题。

默克尔抽象语法树是默克尔树和抽象语法树的结合。

就像 Pay To Script Hash (P2SH) 为哈希为某某的脚本付费一样,MAST 为哈希为某某的 Merkle 根付费。 MAST是将一大组条件中的条件组装成一棵哈希树(即所谓的Merkle树),而Merkle树的根值就是一个哈希值,是从所有条件中哈希出来的。

比特币的交易时间段

Merkle 根和哈希树是如何生成的?

首先对所有脚本(条件)分别进行哈希计算;然后将计算出的哈希值与相邻的哈希值结合起来进行哈希计算,生成一组新的哈希值。这个成对哈希计算的过程不断重复,直到计算出最后一个哈希值。这个哈希值就是 Merkle 根。

假设总共有四组条件。首先,分别计算四组条件的哈希值;然后将四个哈希值成对配对,计算出两个哈希值;最后,结合两个哈希值进行哈希计算,生成最终的哈希值。最后一个哈希是 Merkle 根。

这个 Merkle 根可以翻译成能够接收付款的有效比特币地址比特币的交易时间段,即 Merklized 比特币地址。 Merkle 比特币地址有许多优点,主要是能够在不知道所有脚本单元的情况下验证脚本是否在此 Merkle 树上。这种称为 Merkle Proof 的技术可用于轻松验证比特币 UTXO 是否包含某些解锁条件。

在 MAST 中,BTC 与 Merkle 树相关联。这个 Merkle 树指定了可以解锁未使用的 BTC 的所有复杂条件。每个叶节点代表一个条件。为了解锁 BTC,你必须生成一个满足 Merkle 树上的一个分支所代表的条件的脚本。只需使用 Merkle 根来验证此条件是否属于原始条件集(即验证叶节点是否在此 Merkle 树上)。一旦比特币区块链网络发现一个脚本(以及它所代表的条件)属于这个默克尔根,网络就知道该脚本是这些比特币的锁定条件,并开始验证解锁脚本。因此,我们可以花费锁定在 MAST 中的 BTC,而无需生成完整的脚本并将其包含在交易中。这有助于减少 BTC 交易量。

施诺尔签名

在密码学中,Schnorr签名是由Claus Schnorr提出的Schnorr签名算法生成的数字签名。 Schnorr 签名算法是一种以简单着称的数字签名方案,它通过将多个签名聚合成一个签名来优化验证和认证过程。该方案适用于多重签名交易。

要执行交易,您需要使用您的私钥签署交易比特币的交易时间段,证明您是公钥背后的 BTC 的所有者。但是,要执行多重签名交易,您必须提供多个签名。这些签名会占用额外的空间。

以 12/20 的多重签名交易为例。 12/20 意味着执行交易至少需要 20 个签名中的 12 个。签署交易时,签名也存储在区块中。假设1个签名的大小是5个字节,12个签名需要占用一块60个字节(5*12=60)的内存,100个签名需要占用500个字节的内存。这样会增加内存数量。Schnorr 签名正是这样做的。

为了理解 Schnorr 签名,我们来看一个例子:

比特币的交易时间段

假设你需要 100 个签名,每个签名的大小为 5 个字节,Schnorr 签名方案可以将这 100 个签名组合成一个大小为 64 个字节的 Schnorr 签名。节省 436 字节(5*100-64=436) 的内存可用于存储更多的 Transaction。(注意:椭圆曲线签名现在可以超过 5 字节)

比特币升级——Taproot 计划将上述概念引入比特币区块链,以增强其可扩展性、隐私性和灵活性

比特币主根:总结

本文主要围绕以下几点介绍Taproot:

·Taproot 是 Bitcoin Core 贡献者 Gregory Maxwell 在 2018 年提出的 2009 年比特币升级提案。

·Taproot 让多重签名交易、时间锁交易等复杂交易看起来像普通的比特币交易,增强了比特币的隐私性。

·Taproot升级主要包括3个技术概念——P2SH、MAST和Schnorr签名。

·比特币使用脚本来指示花费BTC/UTXO(未花费交易输出)的条件。

p>

· Pay To Script Hash (P2SH) 可以帮助发送方避免额外的交易费用,并将这个责任(额外的交易费用)转移给真正需要使用锁定脚本中指定条件的接收方。

·有了MAST,比特币可以用默克尔树抽象语法树来锁定。 (对应默克尔根)默克尔树决定了所有可以解锁未使用BTC的复杂条件。建议将默认 Merklized 抽象语法树 (MAST) 引入比特币区块链,以减少 BTC 交易的大小,以便接收方无需在交易中附加冗长的脚本。只需使用 Merkl 根来验证接收方生成的脚本是否属于原始条件集。

Schnorr 签名可以将多个签名组合成一个签名。

原文链接