作者:OneKey 中文 来源:X,@OneKeyCN
最近,@NervosNetwork 宣布推动 CKB 成为首个「POW+UTXO」比特币 L2,$CKB 币价应声大涨。
在此前,圈内在谈论 BTC L2 的时候,其实深受以太坊的 L2 Rollup 概念影响。此前各种快速搭建的 EVM 版本的 L2,虽然技术成熟、生态发展门槛低,但是其原生安全性一直被诟病。同时,这类型的 L2 使用起来需要用户在 BTC 钱包与 EVM 钱包之间来回切换,用户体验很不优雅。总而言之,在这些问题被解决之前,BTC 社区内「挑剔」的 OG 和鲸鱼可能没那么容易被「FOMO」。种种问题之下,UTXO 同构的 L2 方案能否成为一条新出路,已成为近期热议的话题。
本文面向入门小白,以「万恶之源」 UTXO 为起点串起铭文、CKB 的「无跨链桥」 BTC L2 的发展科普。
什么是 UTXO 和 eUTXO?
UTXO (Unspent Transaction Output),直译就是「尚未花费的交易输出」。比如,你收到了一笔 10 个 BTC 的转账,并且没有花费给其他人,这一笔 10 BTC 就是一个 UTXO。
让我们通过对比和例子来理解。
目前区块链主流的两个交易记录模型,也就是 UTXO 模型和账户模型。以太坊采用的账户模型非常好理解,这个模型就和银行账户、支付宝微信账户一样。这种模型下,账户里的资金总量直观显示为一个整体余额,系统只需要跟踪用户账户的余额变化。打个比方:你的账户里有 1000 元的余额。你购买 600 元的 OneKey Classic 时,系统会在你的账户里计算扣除 400 元,同时在 OneKey 的账户里面增加 400 元。
相比以太坊使用的账户模型,比特币的 UTXO 抽象会更像真正的「钱包」和「钞票」,更像真正的现金交易。打个比方:想象你有一个钱包袋子,里面有很多不同面额的钞票。每一张钞票都可以看作是一个 UTXO,即一笔你可以使用的钱。在比特币这样的系统里,当你收到别人转账的比特币,这笔钱就像是钱包里的一张新钞票,你还没用它来支付别的东西,所以它是“未花费的”。每次你进行一笔交易,比如用一张 1000 元的钞票买了一个 600 元的 OneKey Classic,你会拿回 400 元的找零。在比特币系统中,这种操作相当于你用一个 UTXO(1000 元)创建了两个新的 UTXO:一个是支付给我们 OneKey(600 元),另一个是找回给自己的(400 元)。你「花费」掉了原来的 UTXO(1000 元),同时「生成」新的 UTXO(600 元和 400 元)。
有了上文,eUTXO(Extended Unspent Transaction Output,即扩展版的尚未花费的交易输出)的概念,就很好理解了。在 Cardano 这类使用 eUTXO 模型的系统中,它不仅记录了钱的数量,还能包含更复杂的数据和逻辑(例如,这笔钱只能用来购买特定的商品或服务)。这样一来,每笔交易不仅是转移资金,还可以执行一些条件甚至是智能合约的内容。这使得交易变得更灵活,但同时也更复杂。
BRC-20 等铭文与 UTXO 有什么关系?
如果你对 BRC-20 协议有所了解,你很快就会发现——「卧槽,他们在做的事就是在 UTXO 模型上面跑账户模型」。毕竟,协议名字的来源是使用账户模型的以太坊的代币标准 ERC-20。
在 BRC-20 中,代币的操作,包括部署(deploy)、铸造(mint)和转移(transfer),都是通过在比特币的 UTXO 交易中嵌入 JSON 格式的数据来实现的。这相当于,我们在之前提到的「钞票」上写字记录。这种方式做到比特币链上可以自由发行代币。可是,比特币无法管理账户模型,且 BRC-20 的内容是放在 Segwit 的 Taproot 脚本中,比特币无法识别里面的数字并计算。这就像银行系统只认钞票的面额,不会去管你在上面写了什么字。好在,不像中心化的银行,所有的比特币交易都是公开的,我们能查到所有的「钞票」上写了什么字。只要我们按照一定的规则(序数理论)去做账本,在链下计算加加减减就行。所以 BRC-20 目前就采取在链下构建一个索引服务器,来实现 BRC20 的代币的各种账本计算。但这种方式,显然会存在中心化的风险——这个维护账本的服务并没有 POW 或者 POS 的公平博弈机制来保证不做恶。所以这也很好解释,为什么 BRC-20 在一些比特币核心开发者极客的眼里——这就是画蛇添足和技术倒退。
所以后面又发展了各种新的铭文协议,来解决 BRC-20 的缺点。比如 ARC-20 和 Runes 采用了一种类似的方法来让比特币计算余额,即直接让代币的数量等于 UTXO 中比特币的数量(单位:聪)—— 1 token = 1 sat,而不是另外计数。这相当于,你在最小面额的钞票上面打了「特殊记号」,来代表另外一种货币。其实也就是币圈上古历史出现过的“染色币”。这样做的好处是,在追踪交易、计算余额等方面,不需要任何的链下系统。只是需要一个索引服务器来识别这个「特殊记号」,降低了索引服务器的成本。但是这也引入了一个新问题,比特币网络为了减少垃圾交易,有一个最小交易输出限制(546 聪),导致 ARC-20 这样的铭文代币无法拆分出更细颗粒度的交易,导致流动性类似 NFT,不是真正的同质化代币。但是要引入拆分交易的计算,兜兜转转,又不得不进行中心化链下索引交易。在这个问题上,ARC-20 卡了很久,几个月都没有拆分的方案。目前看起来项目方寄希望于启发于 BitVM 的 AVM 来实现质押拆分计算,开发难度不小。
CKB 如何实现无跨链桥的 L2?
从技术来讲,不少 Meme 型铭文资产发行方案本身给比特币技术进步的推动有限。铭文创造了许多新的资产,但是应用也止步在了发行资产。但是其财富效应和 FOMO 让人们看到了 BTC 生态的想象力。在一次次链上玩家的实战需求中,比特币网络和 UTXO 的种种限制,更刺激了人们对于比特币扩容和更复杂生态应用的需求。
从扩容的角度,闪电网络已经是一个足够棒的 L2,闪电通道通过博弈(基于惩罚的可撤销承诺交易)实现去信任且运行多年。但闪电网络的状态通道架构也基本局限在了支付,无法实现更多复杂的意图。前面提到,实现一个相对安全优雅的 L2,走与 BTC 同构的 UTXO 模型,并采用 eUTXO 概念进行扩展,或许是一个出路。公链 Ergo 和 Cardano 均已在 eUTXO 模型上有所建树,都实现了智能合约功能。不过率先想到去实现 L2 解决方案的是 CKB。
CKB 的答案是提出 RGB 的扩展协议:RGB++,其实与其说是扩展,不如说的「大魔改」。CKB 的拓展继承了 RGB 协议的核心,但是直接采用不同的虚拟机和验证方案。RGB 协议作为一个开源智能合约系统协议,其设计目的是在 UTXO 区块链(如比特币、Liquid)上运行可扩展、稳健和私密的智能合约。目前 v0.11 尚未发布,其虚拟机 AluVM 距离完全落地还有一定的距离(有一说是这一轮牛市结束了都不一定能做出来)。其技术重点「同构绑定」,是将
比特币 UTXO 映射到 Nervos CKB 的 Cell —— 一种魔改版 UTXO,可以结合实现智能合约能力。对于验证方案,所有的 RGB++ 交易都会在 BTC 和 CKB 链上同步各出现一笔交易。原本的链下客户端验证被改成了 CKB 的链上公开验证,这对于用户来说友好了很多,不需要使用独立的客户端,不需要自行保存原始交易数据。粗略地理解,即在比特币一层发型的 RGB++ 资产,可以在 CKB 二层使用智能合约实现各种复杂意图。CKB 没有使用任何跨链桥,而是使用了原生的客户端验证方案。
某种意义上,这是一种相对前沿的想法——去做意图(Intent)跨链扩容,而非传统的资产跨链。L2 们总是在想办法使用各种方式将 BTC 在 L2 锁定,但实现扩容和复杂应用,也许只需要在 L2 做面向意图的应用就行呢?
虽然 RGB++ 目前还只是构想,实践尚未深入,但是这个方案相信会给 BTC L2 的正统性探索提供了新的道路。未来可期。