这篇文章直观地解释比特币中的Taproot协议,特别是如何利用merkle tree来隐藏多种可能花费条件的复杂性。
Taproot 于 2021 年 11 月作为软分叉在比特币网络中激活。其设计目标包括:
本文重点解析第二个目标:如何用默克尔树隐藏交易条件的复杂性(Schnorr 签名的细节可参考 conduition 的精彩文章)。
默克尔树是一种二叉树,其叶子节点为数据,inner 节点为子节点的串联哈希。树的顶端称为默克尔根。示例结构如下:
图中叶子节点为数字 0、1、2、3,视为想承诺的数据。通过哈希这些叶子节点以及它们的串联哈希构建这颗树。
在密码学中有一种称为 承诺方案的设计。
密码学中的承诺方案允许在不暴露具体值的情况下承诺该值,即 隐藏性(Hiding)特性;且使得参与一方承诺之后无法再更改数据或状态,这叫做绑定性(bindin)特性。
最经典的例子是哈希函数。假设有一个x值想承诺它,可以对x值做哈希然后发送哈希值到其它参与方;未来你可以披露x的值然后其它参与方对它做哈希、检查与你发送的哈希是否匹配。
哈希函数是单值承诺方案的典型例子。对于多值承诺,默克尔树通过以下方式实现:
Pay-to-Taproot(P2TR)地址的结构如下:
Taproot 通过默克尔树将复杂的交易条件压缩为一个根哈希,既节省链上空间,又增强隐私性。结合 Schnorr 签名,比特币网络的效率和可扩展性得以显著提升。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。