c5161c2dc440667b0f4fca4c4a7d32d13efac12a71994651b048ce", "taproot_asset_root": "8aada842f74c2b11e9b5a0a716baa0c453855ab6ea316222a8a28e7e79506f41", "merkle_root": "8aada842f74c2b11e9b5a0a716baa0c453855ab6ea316222a8a28e7e79506f41", "tapscript_sibling": null, "num_passive_assets": 0 }, "script_key": "0225357fc148c441fbd5c5ea533fd6c33686697967a1cf8c493628788a535f433c", "script_key_is_local": true, "amount": "21", "new_proof_blob": "00245663d6bf6a1de069c4562620f...", "split_commit_root_hash": null, "output_type": "OUTPUT_TYPE_SIMPLE" } ] } } 铸造资产的用户使用对应锚定了资产的 UTxO 作为输入,并且产生两笔输出到两个地址。outputs 中的信息则便于接收者验证自己所收到的 UTxO 是否合法,同时 outputs 中的信息也为接收者提供了生成下一次转账时所需要的信息,用以生成合法的见证脚本保证这笔 UTxO 能够被正常消费。结合前文对资产树和 Taro 资产转移的过程,asset_id 可以被用于在资产树中索引到表示资产的叶子节点,叶子节点还存放了资产的总额,而这些信息被存放在 Taro Universe 中,可以将它看作一个链下的索引程序。而通过 script_key ,可以在对应资产的 MS-SMT 中查询到对应可花费这些资产的余额。满足可消费条件的钱包可以利用这些输出作为下一笔交易的输入来进行交易。 上面的”转移“是一个”分割“的过程(100 -> <79, 21>),所以到自身的输出类型是 OUTPUT_TYPE_SPLIT_ROOT,类似的还有合并操作,合并将某个钱包能够消费的不同 script_key 下的资产合并为一份。 Taro 资产所涉及的这些操作只在区块链上体现为一个 Pay-To-Taproot (P2TR)的形式,主要的资产转移过程还是在链下发生,所以从这个角度看 Taro Asset 可以看作是比特币的一个二层网络。 最近进展 在 Taproot-Asset 页面中可以看到目前已经实现的功能有: 资产铸造 Taro Universe 的同步 发送/接收资产 导入/导出资产证明 创建和管理 CLI 配置文件 而从最新的 v0.2.3 版本来看,Lightning Labs 团队还在修复 Taro 程序的遗留问题,并且对原来的程序逻辑进行改进,例如将区块高度添加到资产的铸造证明。而在该程序的 Github 页面下,也写到该代码不适用于主网,可能导致 Taro 资产和 BTC 的丢失。在官方讨论的 Slack 下,开发者也提到闪电网络还不支持 Taro 资产。 满足资产铸造的的 v0.2.0 版本也是在今年五月份才正式发布,该版本已经实现了资产铸造 / 转移 / 接收功能,剩下的或许是细化交易规则(正如前文提到的问题),修正程序存在的 bug。所以,Taro 资产仍然有很长的路要走,它目前还无法满足在主网运行的要求,笔者认为,在未来一两年的时间里或许有希望能见证 Taro 资产的正式运行。 拓展:Atomicals Protocol 在笔者完成该系列的上篇,到撰写本文的两周时间里,出现了另一个 Ordinals 的竞品 —— Atomicals Protocol10(原子协议),它和 Ordinals Inscription 的铸造很像,都是需要一笔 commit 交易作为输入,并在见证脚本中写入”信封“再进行 reveal,且数据格式也特别类似: OP_FALSEOP_IF 0x0461746F6D // Push "atom" 4 bytes // Followed by a single push to denote the operation type // Payload (CBOR encoded) for the operation OP_ENDIF ARC-20 ARC-20 是基于原子协议的同质化代币,它有和 BRC-20 完全不一样的铸造、转移规则。 铸造:ARC-20 的铸造也需要有预先的代币部署,部署的方式是发送 Atomicals 格式的交易,部署需要指定代币的名称、铸造高度、关联的图像、铸造数量等信息,在索引器索引到后,其他人可以通过索引器得到代币的信息并且进行铸造。ARC-20 还设计了类似挖矿的铸造方式,部署者可以指定 commit tx 的碰撞前缀和 reveal tx 的碰撞前缀,如果有设置这些前缀信息,铸造者就需要在铸造的时候选取一个 nonce 来改变 commit tx 和 reveal tx 的哈希来选择满足条件的前缀(截至目前还没有要求 reveal tx 碰撞的需求,但是源代码中拥有该功能)。在用户找到满足条件的 nonce 后会发送铸造代币名和满足条件的 nonce 到编码后的原子协议交易到 Bitcoin 链上完成铸造,而余额信息则由索引器进行索引。 转移:ARC-20 的转移和彩色币极为相似,但又简单得多,ARC-20 和聪进行了绑定,如果使用到了这些代币的 UTxO 作为输入,那么第 i 个输入会流向第 i 个输出,如果没有足够的输出,即输入数量大于输出数量的情况下,这些代币会流向第一个输出。 原子协议 这样的转移方式的好处是避免了像 BRC-20 一样的需要先铸造 transfer 铭文才能交易的过程,使得同质化代币的交易更为方便,如果使用部分签名技术,可以通过整合交易的方式来完成单笔交易内的代币和 BTC 的交换,甚至是多种不同代币的交换。而缺点则是这样的实现太容易使得用户丢失代币了,特别是在用户接收多份同类代币,整合过 UTxO 后,这些表示着代币的 UTxO 极容易被当作 gas 花费出去,甚至是在铸造其他代币的过程中花费出去。 此外原子协议中还包含了 NFT、域名(独立于 NFT)的设计,文档中还有未完工的合约、事件,由于官方文档的缺失无法继续深入介绍。 协议对比 在此需要把 Taro 资产、 Ordinals 的 BRC-20 代币以及原子协议进行对比,它们的相似之处在于代币的铸造、转移都是由链下程序追踪并记录的,但是记录的规则和在链上的体现又不尽相同。 各协议对比 结语 最后,在介绍完这些技术后探讨一下 Bitcoin 实现的可能性:在常见的二层网络实现中,通常是另外构建一个区块链网络来执行事务,然后将这些已执行的证明放到 Layer 1 的主链中,这也是 Rollup 的基本原理,定期向主链提交证明。闪电网络作为 Bitcoin 的一个二层支付网络,它的实现方式也类似 Rollup 技术,交易双方在建立通道后进行一系列的交互,最后确认的时候关闭通道,再向链上提供证明。 Taro 资产设计了类似 UTxO 的方式来完成资产的铸造、转移,其目的或许在于能够兼容闪电网络,使得这样的交换模式也可以在闪电网络中生效。双方只需要利用类似闪电网络的模式进行资产的交换,最后需要回到 Bitcoin 时再提交证明交易,以证明这些资产已经再二层网络中实现。如果这些资产的实现过程都在 Bitcoin 上实现,那么可以看成每一笔交易都被在 Bitcoin 上提交了证明,保证了链下的资产证明是有效的。但是这样的实现方式极度依赖于链下的 Taro Universe 索引,如果元数据丢失,很有可能造成用户资产的流失。这些索引是十分分散的,或许能够将这些 Universe 组成一个 P2P 网络,形成一个类似 IPFS 的分布式存储?这样的好处是便于用户进行同质化代币类资产的流通,缺点在于非同质化代币资产就显得没有意义(正如会有人问,那为什么不直接使用 ERC721?)。 而 BRC-20 是暴力地记录铸造、转账数据,索引器索引账本信息。它所存在的缺点是显而易见的,用户需要先铭刻转账铭文才能进行转账,而这是它依赖 Ordinals 实现而不得不满足的条件。如果 BRC-20 不依赖于 Ordinals 实现而是设计一套类似 Ordinals 的设计来实现,或许能满足较好的流动性,但是这样或许就不能利用 Ordinals 的热度而爆火了。当然,这样带来的好处是索引的方法很简单,也不用存储过多额外的元数据(对比 Taro 资产所存放的元数据信息),而这也限制了它的扩展性。而 Ordinals 作为 NFT 所能表现出的功能是很好的,它的数据存放在链上可索引(尽管矿工可以舍弃掉这部分 witness 数据),表现出了和 ERC-721 不一样的方式。Ordinals 本身不能算是一个二层网络,但是在有了 BRC-20 之后表现出了一个二层网络的样子,但是数据的变动都是表现在 Bitcoin 上,而非表现在这个二层网络(索引器)中,它本身只是为了保证记账的准确。 由此可见,Taro 资产和 Ordinals 都有各自的亮点,特别是在同质化代币和非同质化代币的实现下,Taro 对同质化代币的实现考虑得很多,考虑了 Taproot 来压缩交易,使得一笔交易中可以交换数额庞大的资产,以及 UTxO 类的交易方式来满足闪电网络的兼容。但是其对 NFT 的实现则显得尤为鸡肋,相比于 Ordinals 铭文的链上数据存放以区别和 ERC-721 的不同而成为亮点。而基于它所实现的 BRC-20 在用户交易过程中又显得繁琐,Taro 资产中的交互不会让用户感知这一切。从这样的对立中很明显能感受到同质化代币和非同质化代币的不同,特别是在 Bitcoin 这样基于 UTxO 的区块链上,协议所采取的底层设计方式显得尤为重要。 来源:金色财经lg...