作者:Faust & 雾月,BTCEden
2024年7月,CKB官宣了RGB++ Layer的正式启动,标志着此前发布的RGB++协议彻底从理论落地为工程化产物,并将引入更具体、更实际的应用场景。凭借着在BTC与CKB、Cardano等泛UTXO公链之间构建BTCFi生态的愿景,RGB++ Layer很快成为了人们关注的焦点。
概括来说,RGB++ Layer以RGB++协议为基础,利用同构绑定和Leap技术,为RGB++原生资产或铭文/符文在BTC、CKB、Cardano等UTXO型公链之间提供“无需跨链桥”的全链交互体验;利用CKB图灵完备的智能合约环境,为比特币构建从资产发行到实现复杂DeFi功能的必要条件。
且由于RGB++ Layer背靠CKB完备的账户抽象生态,兼容比特币账户和钱包,可以为比特币用户创造良好的体验,为BTCFi的大规模采用铺平道路。
下文中,让我们深入理解RGB++ Layer的大致工作原理和特性,展望其为BTCFi生态带来的改变。由于其理论基础建立在RGB++协议之上,我们将先从协议本身开始讲起。
RGB++协议发布于今年1月,其核心理念是用CKB链上验证的形式,替代RGB协议的“客户端验证”,本质是把CKB当做去中心化的索引器,将数据存储、资产来源验证等任务交由CKB完成,由后者作为RGB协议的验证层和DA层,以解决RGB协议在UX上的弊病、不利于支持Defi的缺陷。
与“一次性封装”的概念相呼应,RGB++引入了同构绑定的概念,以CKB链上的拓展型UTXO——Cell作为铭文/符文类资产的数据载体,再令Cell与比特币/Cardano/Liquid链上的UTXO建立绑定关系,最终让RGB++资产继承比特币等UTXO公链的安全性,以防止发生双重支付。
这种“绑定XXX以继承XXX安全性”的思路,类似于现实中银行账户要绑定手机号和身份证。
举个例子,假设Alice要给BOB转去一些TEST代币,她可以生成一个声明,将存储TEST资产信息的Cell与Bob的比特币UTXO绑定起来。如果Bob打算再把TEST代币转给别人,绑定的比特币UTXO也要发生转移。
这样一来,承载RGB++资产数据的Cell,和比特币UTXO之间有1对1绑定的关系,只要比特币UTXO没有被双重消费,绑定的RGB++资产就不会被双花。
说到RGB++ Layer,它实际是对RGB++协议进行工程化落地的产物,其主打的两大特性,包括同构绑定和Leap无桥跨链,下面让我们深入了解下同构绑定和Leap的技术实现原理。
为了真正理解同构绑定和Leap的思路,我们先简单说下CKB的Cell模型。
Cell实质是拓展型UTXO,有LockScript、TypeScript、Data等多个字段,LockScript的作用和比特币的锁定脚本类似,用于权限验证;TypeScript类似于智能合约代码,Data则用于存放资产数据。
如果你要在CKB链上发行RGB++资产,首先要创建一个Cell,并在相关字段里写好代币符号和合约代码,比如代币符号为TEST。之后你可以把这些Cell拆解,并分发给很多人,就和比特币UTXO的拆分和转移方式一样。
由于Cell与比特币UTXO在结构上相似,且CKB可以兼容比特币签名算法,用户可以用比特币钱包操纵CKB链上资产。假如你拥有某个Cell,你可以对锁定脚本进行设置,使解锁条件与比特币UTXO的解锁条件一致,这样就可以用比特币账户私钥操纵CKB链上的Cell。
上述特性在CKB、BTC和其他UTXO公链之间也可以实现,比如你也可以用Cardano账户改写CKB链上的资产数据,RGB++资产的控制权也可以从BTC账户转移到Cardano账户,而无需跨链桥。下面我们将对这个话题展开解释。
前面我们曾提到,RGB++资产需要绑定比特币、Cardano、Liquid等公链上的UTXO,类似于现实中银行账户要绑定手机号和身份证;其次,RGB++资产本身只是一堆数据,这些数据需要有数据库之类的存储媒介,CKB链上的Cell可以充当其数据库。
然后我们可以在权限验证这块做设置,允许人们用BTC、Cardano等不同公链的账户,去改写CKB链上的RGB++资产数据。这便是同构绑定的核心宗旨。
RGB++ Layer提出的“Leap”和无桥跨链,其实是基于同构绑定技术,对RGB++资产绑定的UTXO进行“换绑”,比如你的资产之前绑定了比特币UTXO,现在可以换绑到Cardano、Liquid、Fuel等链上的UTXO,这样就可以把资产控制权限从BTC账户转移到Cardano账户上。
从用户感知的角度看,这其实等价于资产跨链,CKB充当了类似于索引器和数据库的角色。但不同于传统的跨链方式,“Leap”只改变资产数据的使用权限,数据本身还是存储在CKB链上的,这种方式比Lock-Mint模式更简洁,也免去了对映射资产合约的依赖。
以上只是同构绑定和Leap的产品效果说明。下面让我们通过具体案例,来理解它们的技术实现思路。
让我们来理解下同构绑定的技术实现方式。假设Alice有100枚TEST代币,数据存放在Cell#0 中,与比特币链上的UTXO#0 有绑定关系。
现在,Alice要把40枚TEST代币转给Bob。首先,她要把Cell#0拆分为两个新的Cell,其中Cell#1包含40枚TEST代币,转让给Bob;Cell#2包含60枚TEST,还是由Alice自己控制。
在这个过程中,Cell#0 绑定的BTC UTXO#0,也要拆分为UTXO#1 和UTXO#2,分别与Cell#1 和Cell#2绑定。当Alice把Cell#1转让给Bob时,可以一键操作把BTC UTXO#1也转让给Bob,在CKB和BTC链上实现同步交易。
我们可以在此深度理解下同构绑定。其实这个概念的核心意义在于,CKB的Cell、Cardano的eUTXO和BTC UTXO都是UTXO模型,且CKB兼容比特币/Cardano签名算法,后两条链上发生的UTXO的分解和转移,也可以1:1同步给CKB链上的Cell。
这样一来,当我们对绑定着RGB++资产的BTC UTXO进行操作时,可以把操作结果同步给CKB链上的Cell,就好像实体和影子的关系一样。另外我们也要注意,RGB++资产关联了BTC UTXO和CKB Cell这两个实体,两者都是RGB++资产的组成部分,缺一不可。
如果我们考察上面提到的Alice给Bob转账的案例,其大致流程为:
1. Alice在本地构造一笔CKB交易数据(先不上链),这笔交易指明将记录资产数据的Cell#0销毁,生成Cell#1送给Bob,Cell#2留给自己;
2. Alice在本地生成一个声明,把Cell#1绑定到BTC UTXO#1,把Cell#2绑定到BTC UTXO#2,并把Cell#1和BTC UTXO#1都送给Bob;
3.之后,Alice在本地生成一个Commitment(类似于hash),对应的原始内容包含第2步中的声明+第1步中生成CKB交易数据。Commitment的数据之后要被记录到比特币链上;
4.Alice在比特币链上发起交易,把UTXO#0销毁,生成UTXO#1送给Bob,UTXO#2留给自己,并把Commitment以OP_Return操作码的形式写到比特币链上;
5.第4步完成后,再将第1步生成的CKB交易发送至CKB链上。
上面省略了一些比较复杂的细节。事实上,当Alice把自己的RGB++资产转移给Bob时,要先进行复杂的身份证明,证明自己的确是Cell#0 的主人。这里面涉及的事情,包括:
1.证明Cell#0 和BTCUTXO#0的确有绑定关系;
2.Alice证明自己是Cell#0和BTC UTXO#0的实际控制者。
要注意,写有RGB++资产数据的Cell和比特币UTXO可以被比特币账户同步改写,整个交互流程中,通过比特币账户即可完成一键式操作。上述场景不仅限于比特币和CKB之间的同构绑定,可以拓展到Cardano、Liquid、莱特币等广阔的范畴,想象空间还是很大的。
前面我们曾提到,Leap功能实际就是切换RGB++资产绑定的UTXO,比如将其从比特币换绑到Cardano,之后就可以用Cardano账户控制RGB++资产。此后你还可以在Cardano链上转账,把控制RGB++资产的UTXO拆分转移给更多人。
通过这种方式,RGB++资产可以在多条UTXO公链上转移和分发,但却可以绕开传统跨链桥Lock-Mint的模式。在这个过程中,需要由CKB公链充当类似于索引器的角色,见证并处理Leap请求。
假设你要把BTC绑定的RGB++资产转移给Cardano账户,最核心的几步无外乎:
1. 在比特币链上发布Commitment,声明将BTC UTXO绑定的Cell解绑;
2. 在Cardano链上发布Commitment,声明将Cell绑定至Cardano UTXO;
3. 变更Cell的锁定脚本,将解锁条件关联的比特币UTXO,变为Cardano上的eUTXO。
我们可以注意到,在这整个流程中,RGB++资产数据仍然存放在CKB链上,只是把解锁条件关联的比特币UTXO,变更为Cardano链上的eUTXO。当然具体的执行流程比上面说的复杂不少,在此不赘述。
此外在leap方案中有一个隐性前提,即CKB公链作为一种第三方的见证人、索引以及DA设施。作为公链其可信度要远超传统跨链桥的MPC和多签等方式。
其实基于Leap功能还可以实现很有意思的场景,比如我们可以实现“全链交易”。假设我们横跨比特币、Cardano和CKB搭建起索引器,构建一个交易平台,允许买家和卖家交易RGB++资产,买家可以把自己的比特币转给卖家,然后用自己的Cardano账户接收RGB++资产。
这个过程中,RGB++资产的数据还是记录在Cell中,但这个Cell会被转移到买家手中,然后其解锁权限从卖家的比特币UTXO变更为买家的Cardano eUTXO。
虽然Leap功能对于RGB++资产是完美的,但还是有一些瓶颈:
对于比特币和Cardano而言,RGB++资产本质是基于OP_RETURN操作码的铭文/符文/染色币。这些公链节点无法感知到RGB++资产的存在,而CKB实际上是以索引器的身份从中参与协调。也就是说,对于比特币和Cardano而言,RGB++ Layer主要支持的是铭文/符文/染色币的Leap,而不是BTC、ADA等原生资产的跨链。
对此,RGB++ Layer官方引入了Wrapper,可以简单理解为一种基于欺诈证明和超额质押的桥。以rBTC wrapper为例,它将BTC桥接到RGB++ Layer,在RGB++ Layer上运行的一组智能合约会监控桥的守护者。如果守护者有恶意行为,他们的抵押物将被slash。如果守护者串通盗窃锁定的BTC,rBTC持有者可以获得全额赔偿。
在结合了Leap和Wrapper后,BTCFi生态中的各种资产如RGB++原生资产、BRC20、ARC20、符文等都可以跨到其他层或公链上去。
下图是应用LeapX的使用流程的一部分,可以看到它几乎支持了所有BTCFi主流资产到不同生态体系的互操作性。并且对不同发行方式的资产都有相应的相应的处理流程,有一部分用的wrapper,有一部分用的是leap。
上面我们主要解释了RGB++ Layer的同构绑定与Leap概念。下面让我们考察其他的要点。
在传统的BTCFi中,由于缺乏智能合约的支持,只能实现一些比较简单的Dapp,有些实现方法会有一定中心化风险,有些则比较笨拙不灵活。
为了实现在区块链上可用的智能合约层,CKB为RGB++ Layer提供了CKB-VM,任何能够支持RISC-V虚拟机的编程语言都可以用于在RGB++ Layer上进行合约开发。开发者可以使用他们偏好的工具和语言,在统一的智能合约框架和执行环境下,实现高效、安全的智能合约的开发与部署。
以下是一段用C语言实现的CKB中用户自定义代币UDT的transfer方法。可以看到除了语言不同,其基础逻辑和一般的代币都是相同的。而由于RISC-V有广泛的语言和编译器支持,对开发者的智能合约开发入门要求就比较低,我们可以很轻松的用JavaScript、Rust、Go、Java 和 Ruby把这段逻辑重写出来,而非必须学习某种DSL语言才可以编写合约。
当然,语言只是编程的一个方面,具体的智能合约框架的学习是不可避免的。
最后让我们再简单了解下RGB++ Layer背后的原生AA与账户抽象生态。由于BTCFi本质是为原生的比特币资产提供多样性的Defi体验,能否兼容主流比特币钱包将会是BTCFi周边设施需要考虑的重要因素,而RGB++ Layer直接复用了CKB的原生AA方案,可以在可开发者侧和用户侧都尽量与BTC和Cardano等重要的UTXO公链兼容。
在RGB++ Layer中,用户可以使用不同的签名算法进行鉴权。如,用户可以使用BTC、Cardano甚至WebAuthn等账户、钱包或鉴权方式,直接操纵RGB++ Layer上的资产。
我们以下面的钱包中间件CCC为例,它可以为钱包和dApp提供各种公链对CKB的可操作性。
下图是CCC的连接窗口。我们可以看到,它支持Unisat和Metamask等主流钱包入口。
另一个例子是WebAuthn的实现,CKB生态钱包JoyID就是典型代表。通过 JoyID,用户可以直接通过生物识别(如指纹或面部识别)方式进行身份验证,实现无缝且高安全性的登录和身份管理。
可以说,同构绑定和Leap能够成立的基础就在于RGB++ Layer拥有完备的原生AA方案,可以很好的兼容其他公链的账户标准,这种特性不但便于支持一些关键场景,同时也可以为UX扫清障碍。
在上文中,我们对RGB++ Layer的全貌进行了考察,它可以作为铭文/符文/染色币等各种Memecoin的重要基础设施,实现全链交互的场景。而RGB++ Layer基于RiscV构建的智能合约执行环境,可以为BTCFi所需要的复杂业务逻辑创造土壤。
碍于篇幅所限,本文只是对RGB++ Layer核心技术的简单科普,并没有对许多复杂的细节进行系统性的科普。未来我们将持续关注RGB++ Layer的进展,对该项目相关的一系列技术方案进行更为透彻和深度的解析,大家敬请期待!
财华网所刊载内容之知识产权为财华网及相关权利人专属所有或持有。未经许可,禁止进行转载、摘编、复制及建立镜像等任何使用。
如有意愿转载,请发邮件至content@finet.com.hk,获得书面确认及授权后,方可转载。
更多精彩内容,请登陆
财华香港网(https://www.finet.hk/)
财华智库网(https://www.finet.com.cn)
现代电视(http://www.fintv.hk)