从资产跨链的实现机制理解 Celer cBridge 跨链桥的安全性。

撰文:Eric

此前 ChainSwap 和 Anyswap 跨链桥被攻击的事件仍让人心有余悸,虽然损失并没有对二者造成「毁灭性」的打击,但已从侧面表明当下主流跨链桥的实现逻辑存在隐患。目前跨链的基本逻辑在于通过一条链上的锁定或销毁和另一条链的释放或铸造实现资产的转移,而 Celer Network 主导开发的跨链桥 cBridge 在不改变这一基本逻辑的前提下,推出了一个基于哈希时间锁和流动性池的多链跨链方案,旨在让跨链更加安全。

资产桥成为黑客攻击高危地带,cBridge 哈希时间锁方案更安全吗?

cBridge 的实现方式

cBridge 建立了多个流动性节点,通过在两条链上的合约中添加充足的代币流动性,在用户进行跨链时,通过门户服务选择合适的节点,节点操作两条链上的池中进行存入和取出实现跨链。这个方案乍一看有点像比特币闪电网络的实现方式:本质上是一个状态通道,实现链与链之间的同一账户所有者的状态同步。目前 cBridge 支持的链包括了以太坊、Arbitrum、币安智能链(BSC)以及 Polygon。

当一位用户准备利用 cBridge 进行跨链时,其所需要进行的流程如下:

  1. 用户向门户服务(gateway service,即提供跨链服务的节点)发出跨链请求,服务提供一个转发节点(relay node)的地址和所收取的手续费。
  2. 用户通过链 A 上的 cBridge 合约向转发节点的地址发送一笔带哈希锁的转账,并指定一个过期时间锁。
  3. 转发节点通过链 B 上的 cBridge 合约向用户的地址发送一笔带同样哈希锁的转账(扣除手续费)。
  4. 用户在发现这笔来自转发节点的转账后,在链 A 公布密钥,解开哈希锁,把资金释放给转发节点。
  5. 转发节点在链 B 用同样的密钥解开哈希锁,把资金释放给用户,完成跨链过程。
  6. 如果用户不公布密钥,双方都可以在时间锁过期后,各自通过合约退回自己的资金,但手续费仍需要支付。

对比此前被攻击的 ChainSwap 和 Anyswap,首先,节点流动性池的设计规避了 ChainSwap 通过在另一条链铸造新代币可能带来的逻辑漏洞,因为在 cBridge 的跨链中,一条链上的锁定和另一条链上的释放是线性的关系,无法在单个节点锁定之后在多条链上同时释放多次。而对比 Anyswap 被技术手段反推了合约私钥的攻击方式,cBridge 的流动性池仅接受和发送转账,又加上了一层以时间节点为触发条件的「保险」,被反推私钥的可能性不大。

除了规避已发生过的风险,cBridge 相比 Hop 通过 AMM 的方式跨链,手续费和跨链币种更加灵活,也可以为不同的跨链需求制定不同的方案。此外,该种跨链模式的底层技术复杂度低,不高度依赖合约本身的完备程度,易于移植至支持 EVM 的链,甚至在理论上可以支持类似比特币这样非 EVM 的区块链。

至于跨链节点方面,cBridge 的设计降低了用户小额跨链转账的费用,但节点可以通过流动性池来化零为整,通过减少 Gas 费用这样的固定成本去提高收益率,具体数据可参考《Celer cBridge 主网上线:无缝桥接跨链和跨层流动性》。

安全的优先级高于复杂度

对比每次跨链都要铸造或销毁资产这样主要依靠智能合约驱动的方案来看,利用节点提供流动性来同步两条链上状态的跨链实现原子跨链的方案正如上文所说的,逻辑相对简单。而当我们对此前 DeFi 和跨链桥的攻击事件复盘的时候,我们发现,大多数的攻击都是针对逻辑设计的漏洞,真正通过技术手段实现攻击的案例并不多。去中心化的世界很难频繁实现回滚,逻辑的漏洞一旦被利用就注定了错误不容更改只能补救,所以牺牲复杂的实现逻辑,将产品尽量简化确是一种思路。

对于还没有完全成熟的多链生态,区块链领域需要拥有一定的产品思维,即目前来说安全性和易用性优先级需要高于复杂度,这也是比特币之前的数字货币方案虽然充满理想主义却难以被大众接受的原因之一。

就 cBridge 的方案而言,由于操作跨链的节点是人为建立的,所以一定程度上无法规避作恶的风险,而且门户服务也一定程度上增加了 cBridge 跨链网络的层级,效率上产生了损耗。但一方面来说,作恶的风险目前仅存在于跨链失败,损失本金的风险很小;另一方面,一旦这个方案成熟了之后,是否可以进一步进化到类似 Curve 一样在一个池中添加所有同性质代币流动性,例如稳定币一个池,比特币的包装资产一个池等,实现每个池的公有化,排除掉了门户服务,从而使得简单的逻辑思路得以保留,增强了安全性,也在网络效率上留下了进一步提高的空间。