比特币:结算层
每个 KaleidoSwap 钱包的内核都是一个比特币钱包:它持有 UTXO、签署交易,并向比特币网络广播。链上交易用于:- 钱包充值 —— 在转入更快的分层之前先存入 BTC
- 开通与关闭通道 —— 把闪电通道锚定到链上
- RGB 承诺 —— 把资产状态转移嵌入比特币交易
- 锚定进入与退出 —— 进出 Liquid、Arkade 或 Spark
闪电网络:互操作总线
闪电网络是一种二层协议,它通过双向支付通道而不是区块来转移价值。在 KaleidoSwap 中,它承担两个不同的角色。 第一个是快速、低成本的支付。交换以秒计结算,而不是等待若干个确认,费用也只有几聪。 第二个角色则是整套技术栈得以成立的原因:闪电网络是互操作总线。大多数比特币分层协议都可以通过闪电网络触达 —— 或原生支持,或经由服务提供商 —— 而闪电网络的 HTLC 本身就是哈希锁定的。这让它成为跨层交易可以借道的公共媒介,即便涉及的两个分层彼此毫不知情。KaleidoSwap 连接的分层
各客户端支持的范围不同。桌面应用驱动一个完整的 RGB 闪电节点,而浏览器扩展用一组助记词即可覆盖 Spark、Arkade、Liquid 以及无需节点的 RGB-L1。按客户端的详细对照见架构。
资产叠加层:RGB
RGB 是构建在比特币之上的客户端验证智能合约系统(完整规范见 RGB 协议官方文档)。与基于账户的智能合约平台不同,RGB 把合约逻辑和状态保留在链下,只把比特币交易当作密码学承诺来使用。由此带来:- 隐私 —— 资产余额和转移不会出现在区块链上
- 可扩展性 —— 代币转移不会让链膨胀
- 比特币级安全 —— 资产状态锚定在比特币的工作量证明上
- 可编程性 —— 支持全部四种 RGB 接口:NIA 同质化代币(USDT、XAUT)、IFA、UDA 与 CFA
一笔交换如何完成
KaleidoSwap 采用**询价(Request for Quote,RFQ)**模型,而不是自动做市商。你发出询价,做市商给出价格,再由你决定是否接下。1
请求报价
你的客户端从做市方持续接收某个交易对的实时价格。每份报价都带一个
rfq_id 和一个有效期。2
锁定汇率
接下一份报价即锁定汇率,并返回交换参数,其中包括
payment_hash —— 两条腿都会锁定到这个哈希上。3
锁定两条腿
双方各自把资产投入一份合约:只有出示该哈希的原像才能取走,超过期限则自动退款。此时还没有任何不可撤销的资金变动。
4
公开原像
为领取第一条腿,原像被公开。由于两条腿锁定的是同一个哈希,公开原像也就同时解锁了第二条腿。
5
结算或退款
双方都收到自己换来的资产。若任意一方停滞,时间锁到期后双方各自取回自己的资金 —— 绝不会出现只完成一半的交易。
swapstring 以及时序图 —— 见原子交换协议。
原子性在哪些情况下成立
原子性取决于一笔交易所触及的分层。有两件事决定它,而且彼此独立:该分层是否具备原生哈希锁,以及由谁的保证来强制执行。- 由比特币共识强制执行。 比特币 L1、闪电网络,以及闪电网络上的 RGB。哈希锁不需要任何人配合,因此任何一方都不可能同时拿走两份资产。
- 在该分层自身的信任模型内强制执行。 Spark 暴露 HTLC,Arkade 用 Tapscript 构建 VHTLC,Liquid 继承 Bitcoin Script。哈希锁是真实存在的,但它附带该分层自己的假设(一组运营方、一个服务器签名、一个联盟),因此这条腿的原子性只存在于该分层之内,而不延伸到它下面。
- 由服务提供商中介。 完全没有原生哈希锁:由某个服务为这条腿做桥接,在此期间你需要信任它,整笔交易也就不是端到端原子的。
流动性:LSP 与做市商
一笔哈希锁定的交易依然需要对面有人,拿着对的资产,待在对的位置。 **闪电服务提供商(LSP)**解决的是位置问题。你不必自己四处寻找对等节点、盘算通道大小,只需连接一个 LSP,它会:- 按需开通通道 —— 需要时即可订购入向流动性,还可以预先注入某种 RGB 资产
- 路由支付 —— 让你的交易能够抵达目的地
- 实现 LSPS1 —— 标准的通道订购接口,KaleidoSwap 将其扩展到了 RGB 资产
- 促成交换 —— 充当锁定另一条腿的对手方