Glaze

Posted on May 22, 2022Read on Mirror.xyz

去年资本热捧的跨链,今天实现了万链归一?

作者:Glaze & Fundamental Labs

特别鸣谢:Dominator008@Celer, Outprog.eth@everFinance, Zhixiong Pan

TL;DR

跨链生态正处于上升的势头。跨链桥是跨链的基石。在这个市场里有太多的机会了。在这篇研报中,我们将探索跨链生态的现状和未来的机会。

目前常见的跨链桥设计有 3 种:

  • 本地验证
  • 外部验证
  • 原生验证

跨链桥按照功能可以分为 4 种:

  • 资产跨链
  • 为链设计
  • 为应用设计
  • 通用跨链桥

当我们看到一个新的跨链桥时,我们应该在意它在这几个方面的表现:

  • 资金利用率
  • 连接性
  • 安全
  • 速度
  • 状态性

跨链桥市场的竞争非常激烈。新项目需要面对安全和流动性上的考验。在跨链桥生态中,还有以下机会:

  • 跨 Layer 跨链桥
  • 新的代币经济学
  • 跨链桥 SDK
  • 跨链桥聚合器
  • ZK 桥

市场

我们正在进入一个多链的时代。以太坊的市场份额在下降,ALT 链占有了更多用户和市场。现在除了以太坊,我们还有 Solana, Avalanche, Polkadot... 这些链逐渐构建了属于自己的生态目前有超过115个活跃的区块链(数据来自 Layer1 Blockchain Protocol)。下图展示了各条链占有的市场份额。

Source: https://coin360.com/

区块链生态的优势就在于其可组合型。进入多链时代后,开发者也在探索链和链之间的可组合性。

第一个跨链解决方案是 CEX。用户在一条链上将资产转入 CEX,并在零一条链上提现。CEX 帮助用户安全的完成了跨链的工作。但是这种解决方案既不快速,也不去中心化,并不是一个原生的 Crypto 解决方案。

目前的跨链桥已经经过了几轮的迭代。跨链桥市场里竞争激烈,项目方们都在打磨自己的产品。目前一共有超过 80 个跨链桥(数据来自 DecentralizedFinance)。

Source: DefiLlama - DeFi Dashboard

跨链的核心问题

跨链桥的核心在于如何安全,成本低廉,可扩展的将信息从源链传递至目标链。

开发者着手设计跨链协议时,他们面临这两个问题:

  1. 如何有效的验证跨链交易。
  2. 如何保证目标链和源链的数据一致性。

对于这两个问题,开发者想出了不少答案。接下来,我们将介绍主流的几种方案。

技术架构

根据开发者如何验证跨链交易,我们可以把常见的跨链桥分为这几类:

  • 本地验证
  • 外部验证
  • 原生验证

我们可以将跨链协议分为这四步:

  1. 监控:监控源链上的合约调用和区块状态。
  2. 共识(可选):传递信息的节点为跨链消息的正确性达成共识。
  3. 签名:传递信息的节点对消息进行签名。
  4. 传递:将消息从源链发送至目标链。

本地验证

哈希锁(HTCL)是最常见的本地验证方式。这是一个古老,但是容易实现的方案。

假设小红想要将链上资产发送给小明。小红生成一个随机数 Ka,小明生成一个随机数 Kb。小红将 Hash(Ka) 发送给小明。小明将 Hash(Kb) 发送给小红。他们使用收到的哈希来将资产锁定,并设置锁的过期时间。待锁过期后,小红和小明可以使用各自的随机数,打开锁,获得资产。

HTCL 容易实现,并且支持原子交易,最重要的是 HTCL 无需信任第三方(Trustless)。HTCL 的确有一些限制:

  1. HTCL 深度较差。因为 HTCL 是 P2P,对于大额交易,处理时间会很长。

  2. 可扩展性较差。无法支持复杂的跨链场景,例如跨链消息传递。

    外部验证

    跨链协议依赖于外部预言机来传递跨链信息。为了提升去中心化,系统稳定性和安全性,一般跨链协议会依赖预言机网络。当预言机网络达成共识后,再将消息传递出去。预言机网络的运作很像多签钱包。

    外部验证的问题在于安全性。用户需要相信预言机网络不会作恶。通常预言机节点都会质押代币,但是我们很难计算出可靠的惩罚条款。因此使用预言机网络,安全性很难被保证。

本地验证

在这个模式下,跨链协议在目标链上部署了轻节点。轻节点负责验证和读取源链的区块状态和通知。在区块头和交易被传递到目标链后,轻节点可以在目标链对其进行原生的验证。

这个方法兼备安全和 Trustless。因为轻节点会对交易进行校验,用户不需要相信任何中间人。这样的安全和 Trustless 也是有代价的。轻节点的校验需要花费很多 Gas,并且为每条链定制一个轻节点需要大量的开发人员。

大部分跨链桥都使用了以上的几种技术范式,但也有例外。例如 ZKLink 和 ZKCross 使用了 ZKRU Hub 来实现跨链功能。用户在源链充值资产,用户会在 ZKRU 上获得对应的资产。之后用户在进行提现操作,就可以将 ZKRU 的资产提到目标链获。这就类似一个有着众多 Layer1 的 Layer2,跨链操作我们通过在不同 Layer1 进行充值和提现达成。ZKRU 节点对交易生成证明,并放到 Layer1。预言机网络会在不同 Layer1 中保证数据一致性。

另一种方式类似 Tornado Cash。用户在源链充值,并生成零知识证明。用户凭借证明在目标链上进行提款。

跨链桥的作用

市面上的跨链桥大致可以分为 4 类:

  • 资产跨链桥
  • 为链设计
  • 为应用设计
  • 通用跨链桥

资产跨链桥

这种桥接只帮助特定资产跨链。这种桥在源链上锁定资产,并在其他链上铸造 Wrap 资产。

特定资产跨链桥接很容易实现。因为桥直接铸造 Wrap 币,因此跨链桥具有无限的流动性。一个常见例子是大多数的 BTC 资产跨链桥。用户得到 Wrap 代币,例如 WBTC。

为链设计

这种桥的目的是将资产从一条链上传递到另一条链上。该桥在源链锁定代币,并在目标链释放原生或者 Wrap 代币。这种桥在桥的生态系统中很受欢迎。它对链来说具有战略价值。例如,当 Secret Network 上线时,它迅速上线了多个跨链桥。用户可以很容易地将资产导入 Secret Network。

为应用设计

这种桥是为了让应用从单链扩张到多链。使用这种桥,开发者不需要在每个链上部署完整的 Dapp 实例。相反,开发者只需在每个链上部署一个轻量级和模块化的适配器。这种模式的弊端是未来很难为 Dapp 增加更复杂的功能。这类桥的例子是 Compound Chain 和 Thorchain。

通用跨链桥

这种桥可以在链之间传递信息。Dapp 可以使用这种桥来实现跨链通信,比如调用另一条链上的智能合约。基于这种跨链通信协议,开发者可以提高多链场景下的用户体验。例如呆在一条链上,用户可以使用到其他链上的任何东西。用户不会感觉到链与链之间的差异。

LayerZero 点燃了通用跨链桥的市场。一些为链设计的跨链桥正在实现自己的跨链通信协议,如 Celer 和 Anyswap。

跨链桥评判标准

与区块链中的三角困境类似,跨链桥在设计中也有自己的三角困境,大多数项目只能达到两个功能:

  1. 统一流动性:在 A 链上只有一个统一的流动性池子。A-B,A-C...的交易对都会使用这个 A 链上唯一池子的流动性。
  2. 即时验证确认(Instant guaranteed finality):在交易在源链确认时,跨链交易就将在目标链确认。
  3. 原生资产:桥释放原生资产给用户,而不是 Wrap 资产。

除了这个由 LayerZero 提出的三角困境,还有一个互操作性三角困境:

  1. Trustless
  2. 可扩展性
  3. 泛用性

大部分技术方案只能三者中达到两者:

  • 本地验证 = Trustless + 可扩展性
  • 外部验证 = 可扩展性 + 泛用性
  • 原生验证 = Trustless + 泛用性

当我们看到一个新的跨链桥时,我们需要关注以下五个点:

  • 安全性:有没有安全假设。用户需要信任哪一方吗。如果资金遭到损失,安全应急措施是什么。
  • 速度:跨链交易的结算时间是多久。
  • 连接:桥支持多少链,多少种资产。
  • 资金利用率:流动性的利用效率,跨链手续费。
  • 状态:是否支持更加复杂的状态,支持跨链信息传递。

特色跨链桥

Multichain

Multichain 是一个运用了外部验证的通用跨链桥。SMPC 网络用来保护 Multichain 的安全性。目前 SMPC 网络中有 32 个运行节点,但是网络并不要求质押。

Multichain 目前支持 44 条链,提供了 2090 个资产跨链桥 ,拥有 56.6 亿美元的 TVL。Multichain 支持资产转移,跨链通信,和NFT桥接。

如果想要跨链通信,开发者只需要实现两个接口即可。

function anyCall(address _to, bytes calldata _data, address _fallback, uint256 _toChainID)
function anyExec(address _from, address _to, bytes calldata _data, address _fallback, uint256 _fromChainID)

目前,anyCall 是需要白名单的。开发者需要联系 Multichain 团队,将他们的合约列入白名单,并在目标链上的合约中存入一些费用。anyCall 与其他竞争对手相比,它的功能和文档都比较差。

cBridge

cBridge 是由 Celer 开发的。cBridge 是一个外部验证的通用跨链桥。State Guardian Network(SGN)负责确保 cBridge 的安全。目前 SGN 总共有 18 个验证者和12 亿 $CELR 的质押,大约 3600 万美元的质押来确保 cBridge 7 亿美元的 TVL。如果有任何安全问题,SGN 中质押的 $CELR 将被没收。

Source: The SGN as a cBridge node gateway and Service Level Agreement (SLA) arbitrator - Celer cBridge

cBridge 的日交易量为 4500 万美金,日交易数量为 3000 笔。目前 cBridge 在 28 条链上有 7 亿美金 TVL。

除了同质化资产跨链,cBridge 还提供两种 NFT 资产跨链的方式:

  1. Wrapped NFT
  2. 原生 NFT

对于 Wrapped NFT,cBridge 将锁定原始NFT,并在目标链上铸造一个 Wrapped NFT。然而,对于原生 NFT,cBridge 将在源链上烧毁原生 NFT,并在目标链上铸造一个新的。

目前想要走原生 NFT 跨链方案,NFT 合约需要符合这个模板

cBridge 也为开发者提供了 SDK。开发者接入 cBridge 只需要以下流程:

  1. 获取报价
  2. 链上发送交易

除了支持开发者集成资产跨链功能,Celer 还支持跨链通信。整个跨链通信附带发送资产的流程图如下:

Source: Celer IM Design Patterns - Celer Inter-chain Message (IM)

资产的跨链将通过 cBridge,SGN 和执行器负责传递消息。

与 LayerZero 类似,开发者只需要在智能合约中添加两个函数就可以实现消息传递。与 LayerZero 相比,Celer 额外支持传递消息的同时,发送资产。

// Send message
MessageSenderLib.sendMessageWithTransfer()
MessageSenderLib.sendTokenTransfer()
// Receive message
executeMessageWithTransfer

LayerZero

我的同事 Iris 为 LayerZero 写了一篇单独的研报

简单来说,LayerZero 混合了外部验证和原生验证来实现通用跨链桥,并支持跨链通讯。

基于 LayerZero 的开发生态也非常活跃。开发者只需要使用以下函数:

 function send(
    uint16 _dstChainId, 
    bytes calldata _dstContractAddress, 
    bytes calldata _payload, 
    address payable _refundAddress, 
    address _zroPaymentAddress, 
    bytes calldata _adapterParams
) external payable;

function lzReceive(
    uint16 _srcChainId, 
    bytes calldata _srcAddress, 
    uint64 _nonce, 
    bytes calldata _payload
) external;

LayerZero 有一个活跃的社区。LayerZero 团队基于 LayerZero 协议实现了 Stargate 跨链桥。社区基于 LayerZero 推出了为跨链 NFT 定制的库 ERC-721O

ChainPort

ChainPort 是一个依赖外部验证的跨链桥。它支持 7 条链,有 2 亿 TVL,跨链结算时间大约为 2.5 分钟。再 ChainPort 上任何人都可以添加需要跨链的新资产,上币不需要审核。在未来,ChainPort 计划推出保险来保证 LP 不用承担损失,并将使用 ML 来检测可疑交易。

开发者可以集成 ChainPort 至他们的智能合约来实现资产跨链:

function depositTokens(
    address token, 
    uint256 amount, 
    unit256 networkId
)
function burnTokens(
    address bridgeToken, 
    uint256 amount
)
function crossChainTransfer(
        address bridgeToken,
        uint256 amount,
        uint256 networkId
 )

Nil Foundation

=nil 推出了 Mina 到 以太坊,Mina 到 Polygon 跨链应用基础设施 Demo

简单来说这个基础设施让以太坊或者 Polygon 上的应用可以直接验证 Mina 状态的有效性。这些跨链应用不用再担心会有人传递恶意假数据了。

这个基础设施可以对 Mina 区块链的状态生成证明,并且在以太坊或者 Polygon 上进行验证。未来的跨链应用可以直接使用以太坊或者 Polygon 上 Mina 的状态证明来检验数据的有效性。例如中继节点传递了一笔交易,我们可以用这个基础设施提供的 Mina 状态证明来检验这笔交易的有效性。跨链消息传递也将从用博弈论来保证消息的有效性来到用数学来保证交易的有效性。

在 Demo 中,生成证明需要 1min 左右。在 Polygon 和以太坊上需要大约 2.5m 的 Gas。如果是 80 的 Gas Price,那大约是 0.5 ETH 的燃料费。

一个基于此的资产跨链桥将符合以下几个步骤:

  1. 跨链桥在 Mina 上锁定 $Mina
  2. 此基础设施生成 Mina 状态证明
  3. 此基础设施将 Mina 状态证明提交至以太坊上
  4. 以太坊链上合约验证状态证明的有效性
  5. 以太坊链上合约接收并存储 Mina 状态证明,如果证明有效。
  6. 跨链桥在以太坊链上检验 Mina 和交易状态,释放 $WMINA。

在未来,或许我们可以在更多的 EVM 上链直接验证 Mina 状态的有效性。不过需要注意的是,以太坊状态证明还不能在 Mina 链上进行验证。

跨链桥生态

LI.FI

LI.FI 是一个对开发者友好的跨链桥和 DEX 聚合器。用户可以将源链上的代币换成目的链上的另一种代币。LI.FI 目前支持 Connext、Hop、cBridge、Multichain、Hyphen、Optimism、Polygon、Arbitrum 和 Avalanche 跨链桥。对于代币交易,LI.FI 支持 Parawap、1inch、0x、Dodo、Uniswap、Sushiswap、Quickswap、Honeyswap、Pancakeswap、Spookyswap、Spiritswap、Solarbeam、Beamswap 和 ubeswap。

基于 LI.FI SDK,LI.FI 团队实现了 transferto.xyz。用户可以自定义滑点,交易各种代币。

对于开发者,LI.FI 提供了许多集成的方式。如果开发者不想要自定义,那可以直接使用 iframe

集成,只需要 5 分钟。如果需要自定义,开发者可以使用 Node.js API 来发送跨链交易。

LI.FI 最近推出了一键跨链 Staking 的功能。用户在跨链交易后,还可以自动把代币质押到对应的池子中获得奖励。

Source: Li.Fi

LI.FI 有 2.5 亿美金的日交易量,以及 186 笔日交易。

代币经济

大多数跨链桥的代币都是治理代币,仅拥有投票权。少数代币质押后可以分享整个协议的收入。这些跨链桥代币也用作提供流动性的奖励,和平衡各个流动性池的深度。

跨链桥 XY Finance 融了 1200 万美元,但其 ATH 市值仅为 800 万美元。现在它的市值为 300 万美元。在大多数情况下,跨链桥代币就和 DEX 矿币一样。因为排量大,跨链桥代币的表现总是很差。开发者仍在为目前可有可无的跨链桥代币寻找合适的应用场景。作为投资者,我们需要谨慎对待跨链桥代币经济学。

Source: coingecko

安全风险

在过去一年中,跨链桥安全事件一共造成了约 12 亿美元的损失。跨链桥费用约为每笔交易的 5‱。Multichain 是跨链桥龙头之一。Multichain 30 天的交易量是 50 亿美元。一年的交易量约为 700 亿美元。那么协议收益约为 3500 万美元。可以肯定的是,跨链桥市场的收入仍然低于攻击者偷走的资金。

由于复杂性,开发真很难保证跨链桥的安全性。回顾这些安全事件后,攻击者几乎是利用了完全不同的漏洞。攻击者们总是能在复杂系统的各个部分找到漏洞。

在 Polynetwork 安全事件中,攻击者利用了权限相关的漏洞:

  1. 执行者合约没有检查函数输入。执行者合约不通过验证,执行任意的跨链交易。
  2. 执行者合约有修改 Keeper 的权限。Keeper 对整个系统至关重要。

攻击者通过跨链交易,改变了 Keeper。虽然攻击者没有改变 Keeper 的权限,但有此权限的执行者合约帮助攻击者做到了这一点。因此,攻击者成功盗取了 60 亿美元的资金。

在 Ronin 跨链桥攻击中,攻击者通过入侵 RPC 服务器窃取了管理员的私钥。

攻击者在不断发现新的攻击向量。我们不知道跨链桥的下一个安全漏洞会是什么。跨链桥很复杂。因此开发者很难保证桥的安全。此外,我们并没有通用,安全的跨链桥开发标准和库。开发者按照他们的想法实现着跨链桥。这类似于开发者在没有使用 Openzeppelin ERC20 库的情况下开发代币合约。如果有一个安全和易于使用的跨链桥开发库,跨链桥的安全性将更进一步。

总结

目前常见的跨链桥设计有 3 种:

  • 本地验证
  • 外部验证
  • 原生验证

跨链桥按照功能可以分为 4 种:

  • 资产跨链
  • 为链设计
  • 为应用设计
  • 通用跨链桥

当我们看到一个新的跨链桥时,我们应该在意它在这几个方面的表现:

  • 资金利用率
  • 连接性
  • 安全
  • 速度
  • 状态性

跨链桥市场的竞争非常激烈。新项目需要面对安全和流动性上的考验。在跨链桥生态中,还有以下机会:

  • 跨 Layer 跨链桥:这个市场还不拥挤。在未来,更多的交易量将从 Layer1 移动到 Layer2。这也意味着跨 Layer 跨链桥可以获得更多的协议收入。

  • 新的代币经济学:目前没有人知道如何在跨链桥项目中合理的使用代币。大多数代币是治理代币,用来确保整个跨链中继网络的安全。然而经常发生项目实际情况和代币价格不吻合的情况,例如 TVL 增加,但是代币价格下跌之类的。

  • 跨链桥库:帮助开发者快速开发跨链桥,将单链 Dapp 扩展为全链 Dapp。

  • 跨链桥聚合器:市面上有数不胜数的跨链桥,有着不一样的速度,流动深度,滑点,手续费。用户很难选择出最合适的一款跨链桥。跨链桥聚合器可以让用户以最优惠的价格进行跨链交易,并且提供统一的 UI 和 UX。这正如 DeFi 里,DEX 的繁荣过后,聚合器应运而生。除了价格优惠,跨链聚合器可以帮助入门用户触及不同链上的更多 Dapp,降低多链使用门槛。如果说多链钱包是优化体验,那么跨链聚合器就是让用户感受不到链与链之间的区别。触及更多的链,也代表用户可以或多更多的流动性。

  • ZK 桥:ZK 桥可以提供给更快捷,便宜,安全的跨链体验。当我们可以将一条链的状态搬到另一条链后,开发者也可以基于此类基础设施更加安全快捷的开发跨链应用。=nil 在 Solana 和 Mina 上有了很大的进步。

    关于我们

    你可以在 decentralized finance 找到更多的跨链桥。

    你可以在 Twitter 上找到我 和 Fundamental Labs

    如果你喜欢这篇研报,欢迎点赞收藏,分享给对跨链感兴趣的朋友。

    Reference

    What's wrong with bridges? - The Anti-Ape (substack.com)

    Blockchain Bridges: Building Networks of Cryptonetworks | 1kxnetwork (medium.com)

    LayerZero Labs: Building the Future of Cross-chain and Solving the Bridging Trilemma with Stargate (notion.site)