作者:bartek.eth
我和来自 Socket 的 Vaibhav Chellani 想要提议一个用来评估不同桥接架构安全概况的风险架构。
与各种 L2 的风险框架一样,我们的总目标在于,能够快速将某一解决方案“分类”到具有相似特征的某特定解决方案类别中,同时可以足够细致地向用户呈现他们使用这些桥接时需要接受的安全假设有哪些。
我们主要关注在以太坊和其他链之间的桥接,因为我们即将在 l2beat.com 上介绍这些 (译者注:目前桥接一栏已上线),但是,关于这些解决方案安全性的基本推理也适用于任何链与另一条链的桥接。此刻,我们正在寻找更广泛社区对这个提议框架的反馈。
桥接类型
对于终端用户来说,资产桥接是指从来源链(source chain)接收某种资产的存款,并将这笔资产打给处于目标链(destination chain)上的用户。
比如,典型的桥接流程就是,Alice 将资金转至 A 链的桥接合约,而后 Alice 在 B 链上收到来自桥接的资金。
广泛来说,这种流程有两种发生方式:
- 基于消息传递的代币桥接—— 这些桥接能让流动性以消息传递的形式跨链流动。一般,它们允许一笔资产在来源链上锁定或销毁后,在目标链上铸造出来。例子:Rollup 桥接、Polygon 原生桥接、Anyswap(anyCall)和 Axelar 网络。
- 流动性网络—— 也有桥接会兑换一些已铸造出来的资产。他们允许用户将资产转移至另一些链上,并假设这些资产已通过“消息传递”桥接(Message Bridge)提前将资产转移过去。例子:基于 Nomad 桥接的 Connecxt、基于 Hop Optimistic Bridge 的 Hop、一些其他 HTLC(Hash Time-Lock Contract,哈希时间锁合约)和条件式转账(如 nova 等)。
消息传递型桥接的安全性
在这一部分,我们会试着阐释这些被多个桥接协议使用的验证跨链消息的不同方式。如上图所示,代币桥接会利用消息传递型桥接的安全性。
- 轻客户端验证状态有效性
描述:在目标链上验证来源链状态转换有效性的桥接。该验证过程通过零知识证明实现 (状态转换过程伴随着一个 zk 证明的生成) 或是欺诈证明系统完成 (允许独立的验证者就新状态根的有效性提出争议)。
例子:所有 Rollup 都算是这里的例子,L1 会通过 FraudProof(欺诈证明)或 ValidityProof(有效性证明)验证 L2 的状态转换。
- 轻客户端验证共识
描述:在目标链上验证来源链共识的桥接。这取决于来源链所使用的共识机制,通常包括对当前验证者委员会的 quorum 签名的检查,如果其来源链使用的是 PBFT 式的提议和投票(propose-and-vote)共识协议(如 Tendermint、HotStuff、Casper FFG 协议)。或者,如果来源链使用 PoW 协议或“最长链”式的 PoS 协议(如 Ouroboros、ETH 2.0 LMD Ghost 等),则使用相关的分叉规则检查最长链。
例子:NEAR Rainbow 桥接(忽略与 NEAR 签名机制验证过程的复杂性相关的 Optimistic 构成部分),Polygon 的 PoS 桥接(检查 Heimdall 链的共识)以及 Cosmos IBC(验证另一条 Cosmos 链的签名)。
- 外部验证者集
描述:使用外部验证者作为事实来源的桥接,即形成一个独立委员会的验证者们,而不是来源链和目标链上的验证者。这取决于这些验证者所采用的实现,他们可能会使用 MultiSig (多签)、运行共识算法(通常是来自提议和投票的一类的算法)、使用 Threshold Signature 机制(TSS,门限签名机制)或 SGX 等……无论它们使用什么技术,都属于这种验证方式。
例子:Wormmhole、Multichain、Axelar、DeBridge、Synapse、Stargate。
- 乐观式验证
描述:具有挑战期(challenge period,译者注:指其他验证者发现桥接消息无效时,可以对其有效性进行挑战的时间段)的桥接。
这类验证方式中的诚实一方会在此期间内避免纳入欺诈信息。然而,这里有几个关键参数需要考虑:
- 挑战期时长:越长越好
- Watcher 集规模:无需许可 > 需要许可
例子:Hop Protocol、Connext Amarok、Across、Nomad Token Bridge。
- 混合验证方式
描述:有一种混合以上各种验证方式的结构。
流动性网络的安全性
除了真的跨链发送资产以外,还有另一种的方法:跨链兑换(swap),只通过易手而不用跨链移动资产,就能进行跨链兑换。(译者注:易手即一方资产成为另一方所有,即资产所有者发生更换。)
举个简单的例子:A 链上的 Alice 想要将资产转至 B 链。Bob(流动性提供者,LP)在 B 链上已经有了一样价值的资产,他用自己在 B 链上的这笔资产为 Alice 在 A 链上的余额提供兑换服务,并收取服务费。最终,Alice 会获得 B 链上的那笔资产,Bob 则能获得 A 链上的那笔资产 + 服务费。
这部分仅描述了“兑换”协议的安全性,即 LP 在接受了你在来源链上的存款后,有多大可能会携款潜逃。这些兑换资产拥有铸造出它们的消息传递型桥接的安全性。
也有一些其他兑换资产的方式:
- HTLC: 又称哈希时间锁合约,可以用于跨链两方之间进行原子兑换资产。通常只需要用户做两步操作,一是锁定,二是解锁。可能发生的失败情况是,你的资金会在固定的“休眠”期限内被锁定。例子:Connext NXTP、Liqualit。
- 条件式转账(Conditional Transfer):允许 LP 通过捷径消息桥接,以此让 LP 可以在任何桥接资金时,立即为终端用户提供资金,并从消息传递桥接中接收资金。在失败情况下,如果没有 LP 提供流动性,则会激活慢速路径(slow path)。例子:Hop、Connext Amarok、MakerDAO Teleport。
- 外部验证者:让用户可以将资金转至受信任的桥接提供者处,提供者会承诺释放资金至另一条链上。这里可能出现的失败情况是,你的资金会丢失。例子:币安
抗审查性
我们将了解桥接发出的单条消息被审查可能性有关的安全假设。更实际地,我们也将探究单条消息 (代币转账) 是否会被桥接所审查或是忽视,如果会被审查,用户的资金会有什么后果(这些资金会被返还给用户,还是卡在“转账中”的状态里)。
典型的解决方案:
- 利用基础链的抗审查性(例如,一些 Rollup)
- 依赖于验证者集的诚实
总体活性故障
在总体的活性故障方面,我们将来看看“关闭”桥接的后果。例如,对于使用外部验证者集的桥接,我们可以看看在这些验证者长时间离线(可能是无限期离线)的事件中用户资金的安全性。一般可能发生的情况包括:
- 激活慢速路径:默认模式为慢速路径,不会损失资金
- 自己进行质押:用户可以质押参与网络,成为验证者并自己处理卡住的转账事物
- 冻结:暂停系统,直到桥接运行方上线之前无法运行
流动性
在这一部分,我们将试着分析桥接资产可用的流动性。桥接可以铸造资产吗,需要 LP 吗,用户可以一直提款或转移他们选择的任意数量代币吗,或者他们依赖于外部的 LP,并且桥接可能会“耗完资金”。
- 不受限制(桥接可以铸造原生/权威代币)
- 需许可(由桥接运营商提供流动性)
- 无需许可(任何 LP 可以提供流动性)
其他思考和指标
- 可升级性
- 需许可的行动者
- 过去 24 小时内转账量
- 过去 24 小时内的 unique transfer(独立地址转账)
- 可用的流动性
- 支持的代币/区块链