作者:Kernel Ventures,Jerry Luo, SevenUp DAO
TLDR:
现今的比特币网络上存在着多种智能合约方案,其中最为主流的便是 Ordinals 协议与 RGB协议。
- Ordinals 协议的诞生,使得比特币网络也可以实现智能合约开发,并将其安全性与比特币区块链进行了绑定。但是 Ordinals 资产转账的确认和记录均在比特币主网上进行,与 1 个 sats 的转账相绑定。这带来了高昂的手续费,同时也使 TPS 低下的比特币主网更加拥堵。
- 在 RGB 协议中,提出了链下通道以及批量打包交易的方式,这些方式使得 RGB 中资产转移的手续费大幅下降,速度也得到提升。同时,客户端验证的方式也大大减小了维持网络正常运行所需记录的数据量,从而提升了网络可拓展性。
- 虽然 RGB 协议通过以上方式改善了交易速度和可拓展性,但同时也带来了许多新的问题。链下通道在优化交易费用和速度的同时带来了链下记录的安全问题。客户端验证减小记录数据量的同时也大大拖慢了验证速度。
本文从安全性、可拓展性、交易费、交易速度等维度比较了 Ordinals 与 RGB 协议,并分析了 RGB 叙事未来可能的走向。
1. 市场总览
当前 BTC 占整个加密市场市值的 49% 左右,但由于其脚本语言不具备图灵完备性,主网智能合约缺失且交易速度较慢,其长远发展受到严重阻碍。为了对上述问题做出改进,比特币开发者们在扩容和提速方面做出了大量尝试,主要为以下 4 种解决方案:
- RGB 协议:RGB 是一个建立在比特币网络上的二层协议,其核心交易数据储存在 BTC 主网上。RGB 利用比特币的安全模型,支持在比特币网络上创建具有定制属性和智能合约功能的代币。2016 年,RGB 协议最初由 Peter Todd 提出;2023 年,在比特币上智能合约生态的开发热潮中,RGB 协议再次得到关注。
- 隔离见证:2017 年 8 月,比特币实施隔离见证(SegWit)升级。通过交易信息与签名信息的分离,将有效区块大小从 1M 提升到了 4M,一定程度缓解了拥堵问题。但受到比特币区块本身大小的限制,我们无法对一个区块的存储信息无限扩容。因而通过对区块存储信息扩容提高效率的方式便到此为止了。
- 闪电网络:闪电网络是基于比特币的二层扩容方案,允许在不访问区块链的情况进行下交易,极大提高了吞吐量。闪电网络已在比特币主网上实现,现有的闪电网络解决方案有 OmniBOLT,Stacks 等,但闪电网络面临着较大的中心化风险。
- 侧链技术:侧链技术是在比特币网络之外搭建一条侧链,侧链上的资产按 1:1 与 BTC 锚定。侧链在交易性能上相对主网有较大改进,但永远无法达到 BTC 主网的安全性。
今年 3 月以来,比特币网络的交易费用及 BRC20 协议资产的交易量都迎来激增。5 月初 BTC 主网交易费到达顶峰,虽然此后交易费用下滑,但 BRC20 资产的交易量仍维持在较高水平。这表示比特币网络智能合约生态的开发热度,并没有伴随 BTC 生态中铭文热度的下降而低迷,开发者们仍继续尝试寻找适合比特币网络智能合约开发的最优解。
2. Ordinals 协议
2.1 Satoshi 编号
比特币网络上的 Satoshi 不同于以太坊上的 wei 以数据的形式记载,它通过每个地址所拥有的 UTXO 计算得来。为了对不同的 sats 进行区分,首先要区分不同的 UTXO ,继而对同一 UTXO 下的 sats 进行区分。前者相对简单,不同 UTXO 被挖出的区块不同,会对应不同的区块高度。只有挖矿会产生最初的 sats,因而仅需对 coinbase 交易中的 UTXO 编号即可。难点主要在如何对同一 UTXO 下的 sats 进行编号。Ordinals 协议提出了新的解决方案,即根据先入先出的原则进行编号。
- 不同 UTXO 的区分:BTC Builder 从 UTXO 被挖出的时候开始记录,每个 UTXO 对应着唯一的区块,而每个区块在比特币网络上拥有唯一的区块高度,通过不同的区块高度可以对不同的 UTXO 进行区分。
- 同一 UTXO 下 sats 的区分:首先通过区块高度可以确定出 UTXO 下 sats 的大致范围,比如最早一个区块可以挖出 100 个 BTC ,也就是101010^{10}1010 个 sats ,那么对应区块高度为 0 的区块中,sats 编号为[0,101010^{10}1010-1] ,区块高度为 1 的区块中 sats 编号为[101010{10}1010,2∗1010210^{10}2∗1010-1] ,区块高度为 2 的区块中 sats 编号为[2∗1010210{10}2∗1010,3∗10103 10^{10}3∗1010-1],后续依此类推。 如果要对该 UTXO 下的某一特定 sats 进行具体区分,则要通过 UTXO 的消耗过程实现。Ordinals 协议按照先入先出的原则,在该笔 UTXO 作为输入产生的输出中,靠前的输出对应等量序号靠前的sats,比如现在挖出区块高度为 2 的矿工 A 要将自己这 100 个 BTC 中的 50 个转移给 B,其中靠前的输出分配给了 A,而自己获得的是靠后的输出,那么 A 将获得编号为[2∗1010210^{10}2∗1010,2.5∗10102.5 10^{10}2.5∗1010-1] 的 sats ,B 所获得的则是序号为 [2.5∗10102.510^{10}2.5∗1010,3∗10103 *10^{10}3∗1010-1] 的 sats 。
图片来源: Kernel Ventures
2.2 Ordinals inscription
比特币网络最早通过加入 OP_RETURN 操作符为每笔交易提供了一个 80 字节大小的存储空间。但是 80 字节的区域无法满足复杂代码逻辑的编写,并且数据写入区块链也会提高交易成本,增大网络堵塞的可能性。为了解决该问题,比特币网络先后进行了 SegWit 与 Taproot 两层软分叉。通过一份由 OP_FALSE 操作码开头且不会执行的 Tapscript 脚本,比特币交易过程提供了一个 4M 大小的空间。在这个区域我们可以写入 ordinals 铭文,实现文本、图片上链或者 BRC20 协议 token 发放等等。
2.3 Ordinals 的不足
Ordinals 大大提高了比特币网络的可编程性,打破了 BTC 生态叙事和发展受到的限制,提供给比特币网络交易之外的功能,但其中许多问题仍然受 BTC 生态开发者们的诟病。
- Ordinals 的中心化性:虽然 ordinals 协议中对于状态的记录和更改都在链上进行,但 ordinals 协议本身的安全性是无法和比特币网络挂等号的。ordinals 无法防止铭文的重复上链,对无效铭文的识别需要由链外的 ordinals 协议进行。这一新兴协议未经长时间的测试,存在诸多潜在问题。同时如果 ordinals 协议的底层服务出现问题,也可能导致用户资产的损失。
- 交易费用与交易速度的局限性:因为铭文的篆刻是通过隔离验证区进行的,也就是说完成一次 ordinals 资产的转移必须对应一笔 UTXO 花费。限于比特币网络10 分钟上下的出块速度,交易过程无法加速。同时,铭文的上链也会带来交易成本的增加。
- 损害比特币原有属性:由于 ordinals 上的资产与比特币网络本身具有价值的 sats 进行绑定,所以 ordinals 的使用本身就会造成对比特币原有资产的异化,同时铭文的上链又带来了矿工费的激增。许多 BTC 支持者担心,这会损害到比特币原有的支付功能。
3. RGB 协议
在网络交易量激增的情况下,ordinals 协议的缺陷便凸显了出来。长期来说,如果不能妥当解决这一问题,比特币的智能合约生态难以和具有图灵完备性的公链生态进行竞争。在 ordinals 的诸多替代方案中,许多开发者选择了 RGB 协议,它在可拓展性、交易速度和隐私性等方面较 ordinals 均做出了较大突破。理想情况下,基于 RGB 协议构建的比特币生态资产在交易速度和可拓展性方面,可以和图灵完备性公链上的资产达到相近水平。
3.1 RGB 核心技术
客户端验证
不同于比特币主网中对交易数据的广播,RGB 协议将这一过程放在了链下,信息仅在发送者和接收者间传输。接收者对该笔交易进行验证后,不需要像比特币主网一样实现全网节点的同步,记录下网络中所有的交易数据。接收节点只需记载和该笔交易相关的数据,已达到上链验证的需求即可,这一改进大大提高了网络的可拓展性与隐私性。
图片来源:Kernel Ventures
一次性密封条
在实际生活的材料上交过程中,材料往往要经过多次的转手,这对材料的真实性和完整性都构成极大威胁。现实生活中为了防止材料在提交验证前受到恶意篡改,人们采用了添加封条的方法,通过封条的完整性判断里面的内容是否被篡改。RGB 网络中一次性密封条的作用与此类似,其具体体现是比特币网络中天然具有一次性属性的电子封条 - UTXO。
类似于以太坊上的智能合约,RGB 协议下发行 Token 也要指定发币的名称和总量。不同之处在于 RGB 网络并不存在一条具体的公链作为载体,RGB 中的每一个 Token 必须指定比特币网络上某个特定的 UTXO 与之对应。某人拥有了比特币网络中的某个 UTXO,也就拥有了 RGB 协议中所记录的该 UTXO 对应的 RGB Token 。如果想完成对 RGB token 的转移,持有人就需要花费掉该 UTXO 。由于 UTXO 的一次性,一旦花费就没有了,在 RGB 协议中对应的就是花费掉了这笔 RGB 资产。这一花费 UTXO 的过程便是将一次性封条打开的过程。
图片来源:Kernel Ventures
UTXO 盲化
在比特币网络中,每一笔转账都可以找到对应的输入 UTXO 与输出 UTXO。这提高了比特币网络上 UTXO 溯源的效率同时有效防止了双花攻击,但由于交易过程完全透明,双方的隐私性便无法得到顾及。为了提高交易隐私性,RGB 协议中提出了盲源 UTXO 的方案。
在 RGB Token 的转移过程中,Token 的发送方 A 将无法得到接收 UTXO 的具体地址,而只能得到一个接收 UTXO 地址接上一段随机密码值后 Hash 的结果。而接收方 B 要对接收到的 RGB 协议 Token 进行使用时,则不仅需要告知接收者 C 其 UTXO 对应的地址,还要发送给接收者 C 其对应密码值,以向接收者 C 验证,之前 A 确实是将 RGB 协议 Token 发送到了B 手上。
图片来源:Kernel Ventures
3.2 RGB 与 Ordinals 对比
- 安全性:Ordinals 智能合约的每笔交易或状态转移均需要通过一笔 UTXO 花费实现,而在 RGB 中这一过程大量借助闪电网络或是链下 RGB 通道实现。RGB 交易过程中的大量数据存储在了 RGB 客户端(客户本地缓存或者云服务器),这一过程存在高度中心化性,数据有被中心化机构利用的可能。同时一旦服务器宕机或者本地缓存丢失将对客户资产造成损失。从安全性方面来讲,Ordinals 更有优势。
- 验证速度:由于 RGB 采用客户端验证,所以每验证一笔交易,在 RGB 协议中都需要从头开始,这将花费大量时间对交易过程中的每一步 RGB 资产转移进行确定,这大大延缓了验证速度。因此验证速度上 Ordinals 更有优势。
- 隐私性:RGB 资产的转移和交易验证过程均在区块链之外进行,建立了一个发送者和接收者之间的特有信道。同时还以盲化 UTXO 的形式使得即便发送者也无法对 UTXO 的去向进行追溯。而 ordinals 资产的转移过程则是通过比特币上的 UTXO 花费记录,UTXO 的输入者和输出者都可以在比特币网络上进行查询,无隐私性可言。故而隐私性角度 RGB 协议更有优势。
- 交易费用:RGB 中的转账大量借助客户端的 RGB 通道或者闪电网络进行,这一过程几乎 0 交易费用。无论中间有多少笔交易,最终只需要提交到区块链上使用花费一个 UTXO 进行确定即可。但是 ordinals 的每一步转账都需要在 tapscript 脚本中进行记录,加之记录铭文的成本,交易过程中将产生一笔不小的手续费。同时 RGB 协议提出了批量打包交易的方法,在一个 tapscript 脚本中可以指定 RGB 资产的多个接收者,而 ordinals 中默认输出 UTXO 的接收者为 ordinals 资产的接收者,只能一对一转账,而 RGB 通过分摊的方式大大降低了这一过程的成本。因此交易费用上 RGB 协议更有优势。
- 可拓展性:在 RGB 的智能合约中,交易验证和数据存储是由客户端(接收节点)完成的,不在 BTC 链上进行,不需要在主网上进行广播和和全局验证,每个节点只需保证对于某笔交易有关数据的确认。而 ordinals 中的铭文数据都需要进行上链操作,鉴于比特币网络自身的处理速度和可拓展性,对于交易量的承受能力将受到极大限制。因而在可拓展性上 RGB 协议更有优势。
4. RGB 生态项目
RGB v0.10.0 版本发布后,为开发者在 RGB 网络上的开发提供了一个相对此前版本更友好的环境。因此 RGB 协议生态大规模开发距今仅半年时间,下列 RGB 生态项目大多数也还在发展初期:
- Infinitas: Infinitas 是一个图灵完备的比特币应用生态系统,结合闪电网络和 RGB 协议的优势,并相互支持和补充,实现了更加高效的比特币生态系统。值得一提的是,Infinitas 还提出了递归零知识证明的方法来解决客户端验证的低效问题,如果该方法有效实施,将很大程度解决 RGB 网络验证速度上存在的问题。
- RGB Explorer: RGB Explorer 是最早支持 RGB 资产查询及资产 (Fungible token and None Fungible token) 发送的浏览器,支持的资产有 RGB20,RGB21,RGB25 三种标准资产。
- Cosminmart: Cosminimart 本质是一个可以兼容 RGB 协议的比特币闪电网络。尝试打造一个可以部署智能合约的比特币全新生态。不同于上述项目单一的功能,Cosminmart 提供了钱包,衍生品交易市场和早期项目发掘市场。它为比特币网络的智能合约开发到产品推广及交易提供了一站式服务。
- DIBA: DIBA 借助了闪电网络和 RGB 协议,致力于打造比特币网络的 NFT 市场。目前还在比特币测试网上运行,预计不久将在主网上线。
5. RGB 未来展望
伴随着 RGB v0.10.0 版本的问世,协议程序的总体框架趋于稳定,版本更新时可能的大规模不兼容问题正在被逐渐改进。同时,开发者工具和各式 API 接口趋于完善,开发者使用 RGB 进行开发的难度也可以大大降低。
Today #Tether announces the ending of the support of 3 blockchains $USDt: OmniLayer, BCH-SLP and Kusama. Customers will be able to continue to redeem and swap $USDt tokens (to another of the many supported blockchains), but Tether won’t issue any new additional $USDt on those 3 blockchains.
最近 Tether 官方发文,将比特币二层网络上 USDT 合约的部署从 OmniLayer 转移至 RGB 。Tether 的这一举措被视作是 Crypto 巨头尝试进军 RGB 的信号。RGB 现在已经有了成熟的开发协议,庞大的开发者社区以及 Crypto 巨头的认可。
最后,RGB 开发者现在在尝试使用递归零知识证明对客户端验证的体量进行压缩,如果能完成这一改进,RGB 网络的验证速度将大大提高,从而缓解在大规模使用时面临的网络延时问题。