跳转到正文
buybitcoinsmart

术语表 /协议与升级

Taproot

又称 BIP341。

Taproot 是什么?
Taproot 是2021年的软分叉升级,它为比特币带来了 Schnorr 签名和一种新的输出类型,这种输出的协作花费路径与普通的单密钥支付看起来完全相同。

规定于 BIP-341。

三项规范一同发布:BIP-340针对 Schnorr 签名,BIP-341针对输出类型,BIP-342针对调整后的脚本语言。激活发生在区块709,632,时间为2021年11月14日,距上一次升级四年。实际效果是,复杂的安排(多重签名保险库、担保托管、通道关闭)在结算时可以与他人的普通支付看起来没有区别。

运作方式

这一设计源于对合约实际如何结束的观察:几乎所有合约都以双方达成一致而告终。

Taproot 输出在一个32字节的值中同时承诺两样东西。一是公钥,由协作各方持有。二是默克尔树,其叶子是备用脚本,即协作失败时适用的后备方案。公布的公钥是协作公钥经其自身与该树根哈希调整后的结果,这意味着该输出承诺了每一个后备方案,却不会暴露其中是否存在任何后备方案。

花费时随后走两条路径之一。密钥路径只产生一个签名,不公布任何关于该树的信息,因此这笔交易与一个人的普通支付无法区分。脚本路径恰好揭示一片叶子,以及证明其属于所承诺树根所需的相邻哈希,其他所有分支永远保持隐秘。一个设有三取二签名阈值、延时恢复密钥和紧急条款的保险库,只会暴露实际用到的那一条条款。

BIP-342为这些叶子调整了脚本语言。OP_CHECKMULTISIG 在 Taproot 叶子中不可用,由 OP_CHECKSIGADD 取代,后者在栈上对成功的签名计数,而不是一次性消耗一批签名,使阈值检查的写法不再像过去那样别扭。10,000字节的脚本大小上限和201个操作码的限制已被取消,改为随见证数据大小而增长的签名操作预算。未知的公钥类型和未知的叶子版本被定义为有效,为下一次升级留出空间,而无需另一种地址格式。

由于 Taproot 使用见证版本1,其地址采用 BIP-350的 bech32m 校验和,而不是原来的 bech32 校验和。因此软件可以接受 bc1q,却仍然拒绝 bc1p。

购买比特币时为何重要

隐私方面的理由适用于几乎所有人,包括永远不会编写脚本的人。

此前保护比特币的每一种方式都会暴露自己。3取2的多重签名存款在链上清晰显示为3取2的多重签名存款,这会告诉链上分析公司以及向其购买数据的任何人:该地址属于持有量足以值得关注的人。从同样的设置发起的协作式 Taproot 花费,只会针对一个公钥公布一个签名。安全性不变,而这一信号消失了。

成本也朝同一方向变化。Taproot 密钥路径输入是比特币上最便宜的输入类型,而且安排越复杂,差距越大,因为从不使用的后备分支不产生任何成本。对于想要搭建本站硬件钱包评测中所述那类继承或多重签名方案的人来说,这改变了值得持有多少个密钥的计算。

摩擦是真实存在的,值得提前规划。一些交易所仍拒绝将 bc1p 作为提币目的地,较旧的硬件钱包固件可能根本无法派生 Taproot 地址。变通办法很平淡:使用同一助记词,向 bc1q 地址收款,待您的整套工具都支持后再转用 Taproot。等待不会有任何损失,因为两种地址类型都来自同一份备份。

关于副作用,需要如实说明一点。Taproot 廉价的见证数据使铭文变得经济可行,由此产生的需求把手续费率推高到普通支付多年未见的水平。这是折扣带来的后果,而不是设计的目标,将其作为对 Taproot 的批评是公允的。

Speedy Trial:促成 Taproot 激活的折中方案

代码在2021年初已不再有争议,而激活方式几乎仍使其夭折。

争论围绕 BIP-8及其 lockinontimeout 标志展开。一方希望将 LOT 设为 true,无论矿工是否发出信号,都在超时时强制激活,理由是2017年已表明矿工可以无限期拖延。另一方希望设为 false,理由是支持度薄弱的强制激活有可能引发其本想避免的分裂。双方数月都不肯让步。

Speedy Trial 通过缩小问题范围打破了僵局。它沿用 BIP-9的版本位计数,把阈值降至2,016个区块中的1,815个,开启约三个月的窗口,并设定固定的最低激活高度709,632,使锁定与强制执行之间相隔一段漫长而可预测的时间。如果矿工发出信号,分叉就在已知日期发生。如果没有,这次尝试很快过期,更难的争论可以继续,而不会有任何损失。

代码于2021年5月1日随 Bitcoin Core 0.21.1发布。矿工在截至2021年6月12日的难度周期内达到阈值,使网络在规则变更前有五个月的预先通知。它仍是比特币使用过的唯一一种主要为低成本失败而设计的激活方式。

Taproot vs Schnorr 签名

Taproot 是整套方案,Schnorr 签名是其中一部分。BIP-340定义的签名方案自1980年代起就存在于密码学中,原则上可用于任何地方,而 BIP-341定义比特币输出的样子,BIP-342定义输出内部运行的内容。在比特币上,三者在实践中密不可分,因为 BIP-340签名只在见证版本1的花费中有效,但它们是解决不同问题的不同文档,人们最感兴趣的密钥聚合是签名方案本身的特性,而不是 Taproot 的特性。

请勿混淆

常见问题

我需要 Taproot 地址吗?

并不紧迫。bc1p 地址的花费成本最低,用于多重签名时隐私性也最好,但各交易所的支持仍不均衡。请保留一个由同一助记词生成的 bc1q 地址,以便在拒绝 bc1p 的平台上使用。

旧钱包可以向 Taproot 地址转账吗?

只有在它支持 bech32m(为见证版本1引入的校验和)的情况下才可以。在 Taproot 之前编写的软件会把 bc1p 地址判定为无效,这是客户端的限制,并非协议本身所禁止。

Taproot 是手续费上涨的原因吗?

是间接原因。见证折扣使得在 Taproot 脚本路径中嵌入任意数据的成本很低,铭文正是这样做的,由此产生的需求与支付交易争夺区块空间。该折扣早于 Taproot,随 SegWit 一同引入。

接着阅读

相关术语

协议与升级中的更多术语

阅读本页英文版