复制成功

分享至

主页 > 数字货币 >

什么是Taproot Assets?如何发行?一文读懂Taproot Assets协议

2023.10.20

撰文:金色财经0xjs

2023年10月19日,闪电网络开发商Lightning Labs宣布Taproot Assets协议上线。Taproot Assets协议支持在比特币和闪电网络上发行资产。

什么是Taproot Assets协议?Taproot Assets协议如何发行、转移资产?本文带你一文读懂。

Taproot Assets协议

根据Taproot Assets协议BIP,Taproot Assets协议是一种构建在比特币上的Taproot原生资产(Taproot-native asset )层。Taproot资产可以在比特币链上表示任意资产,而不会导致比特币网络膨胀。该协议的设计使得与Taproot资产交互的交易与常规比特币交易没有区别。

Taproot资产使用嵌套资产脚本树(nested asset script tree,这是一个merkle-sum Sparse Merkle Tree或MS-SMT)。其扩展了基础Taproot脚本树,该脚本树将有效见证人作为结构化元数据提交,从而可以证明资产在交易图中的移动。Taproot资产转移的证明可以使用密封证明(hermetic proof )进行验证,或者使用外部维护的Universe进行验证。Universe是一个索引链上资产发行+转移的MS-SMT。

Taproot Assets支持通过闪电网络通道(基于BOLT协议套件)进行链外单跳和多跳传输,后者使用Taproot Assets独特的嵌入式资产脚本系统来体现。一系列链上和链下Merkle证明促进了链上Taproot资产传输的轻客户端验证,可以通过将信任关系委托给活动的Universe实例来压缩这些证明。

理解Taproot Assets协议需要的几个概念

Taproot交易

Taproot是BIP 341中定义的一种新交易类型,自2021年11月起在比特币主网上线。 Taproot交易与传统比特币交易的主要区别在于,控制脚本包含在称为“tapScript分支”的树结构中,该结构是私下承诺参与交易。如果使用KeySpend路径来移动比特币,则不需要透露这些脚本。

虽然传统交易需要公开整个脚本,但Taproot交易可以使用密钥来避免公开脚本,如果密钥花费路径不可行,则仅在区块链上公开脚本的执行部分。所有其他脚本路径都可以保持私有,或者有选择地在链外公开。

这使得创建更复杂的脚本成为可能,而无需增加在keySpend路径中向区块链提交额外数据的成本,以及对修剪后的脚本数据进行有效验证。在Taproot Assets的背景下,它允许人们将任意数据可证明地附加到交易中,而无需在链上泄露这些数据。

Taptweak:承诺哈希

将包含此类任意数据的交易称为承诺。一旦交易被包含在区块中,我们就已经承诺了该数据,并且不能再更改或修改它。

为了承诺数据,人们使用称为“Taptweak”的技巧来调整Taproot支出密钥的公钥。它允许人们有选择地暴露数据而不泄露私钥,或者在不泄露承诺的情况下花费输出。

该技术在Taproot交易中用于提交到Taproot脚本树,并且可用于提交任何任意数据。

Q= P+H(P|c)G

Q = 最终的Taproot公钥;P = 内部公钥;H(P|c) =内部公钥和承诺的哈希值

要使用我们的私钥签署交易,需要使用与公钥和承诺相同的哈希值 H(P|c) 来调整私钥。

Sparse Merkle Tree

Sparse Merkle Tree是一种可以证明Merkle树中不存在特定数据的数据结构。SMT是经过验证的键值存储,这意味着叶的键或位置和叶的内容相互绑定。

为了实现此属性,对叶子的内容进行哈希处理并创建默克尔树,其中叶子的位置对应于哈希摘要的位图(bitmap)。这必然需要一棵 256 层和 2^256 个叶子的树。树的生成是高效的——尽管尺寸明显很大——因为绝大多数分支包含空叶子并且可以用零哈希来表示。

es5tV6f4hNFXr2qYml1b2oJtJS5KO5TnG2gjpKdL.png

构造一个Sparse Merkle Tree

例如,我们可以使用虚构的哈希函数sha002构造一棵Sparse Merkle Tree,其结果为 0 到 3 之间的数字。我们生成一棵具有 4 个叶子的Sparse Merkle Tree:0、1、2 和 3。只有叶子 2 是已填充,所有其他叶子都是空的。为了找到叶子 2(用二进制写为 10),我们在第一个分支 (1) 处向右移动,然后在第二个分支 (0) 处向左移动。

EsZVrX1d7mdiLUomZWY3rvr1QZCNXSpre2rXxzu5.png

识别Sparse Merkle Tree中的叶子

为了验证叶子 2,我们现在只需要揭示该叶子的值,加上叶子 3 的哈希值和分支 0 的哈希值。

在Sparse Merkle Tree中,当以二进制形式表示时,每个叶子都可以通过映射来描述为自身的指南。地图就是Sparse Merkle Tree本身,指南由在每个岔路口左转还是右转的指示来表示。例如,2^4 大型 Sparke Merkle 树中的第 9 个叶子用二进制表示为 1001,这意味着我们通过左转、右转、右转、最后左转来找到合适的叶子。

免责声明:数字资产交易涉及重大风险,本资料不应作为投资决策依据,亦不应被解释为从事投资交易的建议。请确保充分了解所涉及的风险并谨慎投资。OKEx学院仅提供信息参考,不构成任何投资建议,用户一切投资行为与本站无关。

加⼊OKEx全球社群

和全球数字资产投资者交流讨论

扫码加入OKEx社群

相关推荐

industry-frontier