本文作者:0xPhillan 编译:CoinTime Candice
在本文中我们将深入探讨:互操作性(跨链通信)
在我们开始这篇文章的之前,我想澄清两个术语:
- MULTICHAIN是多个网络可以共存并相互补充的理念;
- CROSS-CHAIN是指网络之间相互通信的能力(通常称为互操作性)。
Web3基础架构概述
这篇文章涵盖了链上生态系统上半部分的内容:我们研究了连接一个网络和另一个网络的互操作性层(中间件)。
- 链上生态系统
节点层:挖矿/验证节点、节点客户端软件、挖矿/质押池
网络层:
第1层网络:整体网络、模块化网络、共识(PoW、PoS)、共享账本技术、虚拟机和EVM兼容性、智能合约和ERC代币标准
第2层网络:闪电网络、optimistic rollup、零知识 rollup
去中心化应用程序(dApp)层
- 链外环境:分析、审计和安全、钱包、中心化交易所(CEX)、开发者工具(框架、IDE)、去中心化云(存储、计算、索引)
- 互操作性层(“中间件”):
网络互操作性:桥接、原子swap
链上/链下通信工具:区块链API、Oracle

区块链的三难困境
在我们开始了解互操作性层之前,我们必须首先了解为什么不同的区块链网络存在。不同的网络在设计时考虑了不同的目的,每个目的都会考虑一组不同的因素来确定优先级。
可扩展性困境,通常也称为区块链困境,是Vitalik Buterin发表的一个理论。它描述了评估区块链网络的比较框架,强调在设计网络时,在可扩展性(速度)、安全性和去中心化之间进行权衡。

在此框架内,三角形的三条边意味着以下内容:
- 可扩展性(速度)是指区块链处理大量交易的能力,通常以每秒传输量(TPS)衡量
- 安全性是指网络在多大程度上可以抵御攻击(包括经济和技术性质的攻击),以及其按预期运行的能力
- 去中心化与控制集中在少数参与者或中间人之间的程度有关,通常根据网络的节点数量和新节点加入网络的障碍来衡量
区块链的三难困境就像一个三边的天平,代表了在三种属性之间做出的妥协:区块链可以占据三角形的一边,表明一个网络已经决定优先考虑两个相邻的属性,并降低与之相对的属性的优先级。这将导致区块链网络的三个通用配置文件:

- 可扩展和去中心化,但不安全[Nano、IOTA、VeChain]
- 可扩展和安全,但不是去中心化[合并后的以太坊、Binance智能链、Ripple]
- 安全、去中心化,但不可扩展[比特币、预合并以太坊、Monero]
在此基础上,我们可以将网络相互比较,以了解它们在三角形中的哪个区域:

应该注意的是,区块链三难困境是一个帮助概念化区块链网络面临的挑战的模型。它不是决定性的。尽管如此,该框架有助于强调不同的网络实现不同的目的,并针对不同的利基市场。如上所述,比特币具有高安全性和去中心化特征。相比之下,以太坊(合并后)由于其较高的TPS,去中心化程度较低,但可扩展性更强。最后,IOTA的可扩展性和去中心化程度很高,但由于网络是基于DAG的结构,它面临更大的安全挑战。
用户将网络用于不同的目的,并从每个网络的独特属性中受益。为了充分利用Web3,用户可以购买比特币作为价值存储(基于其去中心化和安全方面),同时从以太坊网络使用以太币,从其智能合约功能和更快的交易完成中获益。
然而,区块链网络是封闭的系统:它们只能看到内部发生的状态变化。如果持有比特币的用户想要将他们的比特币转移到以太坊,如果没有连接两个网络并允许他们通信的互操作层,他们就无法做到这一点。这是因为资产本身与其他网络不兼容,并且这些网络彼此之间不具有本机互操作性。让我们更详细地了解一下。
互操作性与兼容性
互操作性是指不同的系统、设备或应用程序以协调的方式连接和通信的能力,而终端用户只需付出最小的努力或不需付出任何努力。互操作性与兼容性不同,兼容性要求两个系统能够理解彼此的输出(即它们是兼容的),但不要求能够相互连接或通信(即它们是互操作的)。

简单来说:兼容性是指能够与不同区块链网络的输出一起工作,而不需要对输出进行额外的修改,而互操作性是指不同区块链网络之间的通信和互动,而不考虑其底层技术的差异。
比特币(BTC)资产不能从比特币网络本地发送到以太坊网络。比特币和以太坊是不同的系统,它们的资产编程不同。因此,比特币(BTC)与以太坊网络不兼容,以太币(ETH)与比特币网络不兼容。
尽管如此,你可能已经在以太坊上看到了一种叫做包裹比特币(wBTC)的资产。wBTC是以太坊上创建的ERC-20资产,与比特币价值挂钩,意味着1 wBTC可以兑换1 BTC。wBTC是BTC的以太坊兼容表示,可在以太坊网络上使用。
因为wBTC与以太坊兼容,并且由于BTC和wBTC的价值相等,所以比特币和以太坊网络之间的接口可以让它们彼此通信。这个接口将在比特币网络上收集BTC并保证其安全,同时在以太坊上铸造同等面值的wBTC,从而将比特币本地的BTC “转化”成以太坊本地的ERC-20 wBTC资产。

两个网络之间的这种接口称为桥接。如果你把每个网络想象成一个城市,有自己的语言、自己的货币和自己的经济,那么桥接就是把这两个城市相互连接起来,并允许这两个城市之间进行交流和价值转移。
设计互操作性
在设计接口以实现两个网络(桥接)之间的资产传输时,需要考虑三个相互关联的设计领域:
- 跨链通信机制(oracle、中继器、轻客户端、中心化/可信实体):
确定用于将消息从一个网络传递到另一个网络的技术。例如,在一个网络上传递对收到资金的验证,以触发在另一个网络中的资金释放。
- 跨链资产等价(锁定和铸造、烧毁和赎回、本地流动性池)
确定如何以等价价值接收和发行资产,以及在目标网络上接收的资产的格式(本地代币、包装或挂钩代币)。
- 资产转换过程(公证方案、侧链、中继网络、原子swap)
确定资源在源网络和目标网络之间移动的过程,以及释放资源之前的验证过程。
一般来说,这三个设计方面都是密切相关的。

为了进一步区分这三个设计领域,可以这样想:资产转换过程描述了理论上的资产转移机制,而通信机制和资产等价是指用于促进通信和实际“转移”资产的技术实现。
跨链通信机制
如前所述,互操作性要求两个网络能够相互通信,但区块链是闭环系统——它们只知道其中发生了什么。为了克服这一问题,开发了两种不同的技术:Oracle和中继器。Oracle和中继器都能实现跨链通信,但从根本上说,它们的功能非常不同。
Oracle
Oracle是去中心化区块链网络上的第三方服务,能够将外部数据写入网络。人们想要区块链网络上的外部数据的原因有很多:价格反馈(其网络上本地不可用的资产的价格)、合成资产(价值与真实世界资产挂钩的代币)或其他网络上的任何触发事件(例如,用户发起跨链转移)。最受欢迎的oracle供应商包括Chainlink、Band Protocol和API3。
通过这些示例,应该清楚的是,oracle不是数据源,而是负责验证数据源并使信息在区块链网络上可用。这是通过调用智能合约将数据写入网络,并在交易的有效载荷中包含要存储的数据来实现的。这被称为oracle入库,因为它将外部数据带入区块链环境中。例如:如果一项资产达到了某个价格(外部数据写入区块链),那么就执行一个买入订单(由oracle价格反馈数据触发的智能合约功能)。

Oracle出库会对区块链上发生的触发事件做出反应。当触发事件发生时,智能合约会注意到这一点,并发出要采取的某些操作的信号。监控智能合约的链外oracle节点接收信号并使数据在网络外部可用。示例:如果收到付款(链上触发),就可以从自动售货机分发食品(链上事件触发链下事件)。

当结合oracle出入库时,可以实现两个独立网络之间的通信:来自一个网络的数据可以通过oracle出库离线时使用,然后可以通过oracle入库传输到另一个网络。

Oracle(去中心化)
除了区分oracle出入库外,还可以通过其中心化的程度来区分它们。oracle服务是一种向区块链节点发送RPC命令的链外软件,可以是中心化也可以是去中心化。
在中心化oracle的情况下,oracle客户端运行的节点完全由单个实体操作,该实体是信息的唯一提供者。数据的准确性和oracle的安全性将完全取决于实体实施的设计和安全措施。
在去中心化oracle中,许多节点交叉引用来自不同来源的数据输入,以确保传输更准确的数据。这些去中心化的oracle网络(DON)有自己的共识机制,可以实现更高的数据可靠性。
虽然oracle为去中心化区块链生态系统中的新应用提供了机会,但使用oracle也存在风险:如果oracle遭到破坏,可以假设任何依赖oracle的智能合约也会受到破坏。此外,即使没有破坏oracle,也可能破坏数据源。无用输入输出原则表明,oracles可以验证输入数据是否正确(从可信来源接收),并将其传递给智能合约,但数据本身可能存在缺陷。
中继器
一般来说,中继器是将信息从一方中继到另一方的实体。在研究不同项目时, “中继器”一词可用于描述双方之间的任何此类转移。我们可以在区块链项目中识别出三种类型的中继器:
- 一个实体将单个交易订单汇总到订单簿中,供用户在链外存储和寻找匹配的订单,其中只有最终交易被提交(中继)到网络。
- 代表用户执行交易的实体(交易由第三方转达)。
- 负责在不同网络上的两个节点之间传输信息的实体(数据从一个网络中继到另一个网络)。
在区块链互操作性的背景下,第三类中继器在实现跨链通信方面发挥着重要作用。
跨链通信是通过有一个连接源网络和目标网络的中继器客户端来实现的。中继器客户端持续监控源网络,以寻找某些触发交易的发生。一旦发生这样的交易,中继客户端就会将该交易中指定的行动转发给目标网络。为了能够监测和转发交易,中继器客户端必须与源网络和目标网络的客户端软件一起安装在一个节点上。这意味着将有一个横截面的节点通过中继器连接。

轻客户端
与中继器类似,轻客户端需要安装在一个同时安装了源网络客户端和目标网络客户端的节点上。与中继器不同的是,轻客户端监测源网络和目标网络的事件,其作用是用尽可能少的信息验证交易(因此是轻客户端)。轻客户端不需要下载源网络和目标网络的整个区块链,而只用两个网络的区块头来下载和验证交易。
这是通过“资产证明”机制实现的,该机制验证交易是否在源网络上发生。轻客户端存储源网络的区块标题,当需要验证交易时,用户向轻客户端提供Merkle证明,该证明用于重建源网络的Merkle树,并根据存储的块区标题进行检查。
Merkle证明通常由三部分组成:
- Merkle根:包含转移资产的Merkle树的根
- Merkle路径:从Merkle根开始,以代表资产被锁定的交易的叶子节点结束的哈希值路径
- 交易索引:这只是交易在Merkle路径中的一个索引
由于Merkle根是区块标题的一部分,使用Merkle证明,轻客户端可以验证交易确实是特定Merkle树的一部分,然后验证Merkle树是否属于源网络的特定区块标题。通过这种机制,用户可以证明资产被转移到源网络的桥接账户(资产证明),而不需要额外的跨链通信要求。
Oracle vs中继器vs轻客户端
虽然oracle和中继器都支持两个网络之间的通信,但它们在通信数据的完整性方面存在根本性差异。
Oracle向去中心化的网络提供数据,数据的完整性是数据源完整性的结果。如果源提供了不准确的数据,然后在链上提供,则oracle无法判断数据的准确性——数据是按原样提供的。此外,oracle为智能合约提供数据。
另一方面,中继者不作为所提供数据的真实来源。相反,它们只专注于以不信任的方式在网络之间传递(中继)数据,并且它们的通信仅在网络节点之间进行。
最后,与中继层类似,轻客户端生活在网络节点上,也不充当真相的来源。与中继不同,它们的主要目的不是在网络之间中继消息。它们的目的是存储区块标题并按需验证交易。

中心化/可信实体
中心化或可信实体是一个黑匣子。上述任何技术(oracle、中继器、轻客户端)都可以单独使用或组合使用,以在区块链网络之间传递消息。一个中心化的实体也可以使用他们内部开发的专有客户端软件。如果不公开源代码,就不可能确定地知道。
跨链资产等价
当资产从一个网络移动到另一个网络时,它不会像苹果可以从一个袋子移动到另外一个袋子那样物理移动。相反,该资产在源网络上是不可用的,然后在目标网络上提供一个同等的资产。这是由于区块链网络的封闭性:它们不能在自己的网络之外进行通信,这就是为什么需要一个接口(桥接)来促进这种通信。

一般来说,在目标网络上提供资产有三种方法,这会导致提供不同类型的资产类型:
- 锁定和铸造机制——包装代币
- 烧毁和赎回机制——本机代币
- 本地流动性池——包装/本地代币(交易代币等价物)
锁定和铸造机制
在锁定和铸造机制中,资产由一个网络上的桥梁接收,锁定资产,代表源代币价值在目标网络上铸造代币。这些代表性代币被称为“包装”或“挂钩”代币,意味着包裹源代币在与目标网络兼容的容器中,目标网络上的资产价值与源网络上的价值挂钩。例如,由pNetwork在以太坊网络上发行的包装好的比特币(wBTC)或挂钩的比特币(pBTC)。
包装或挂钩的代币是从桥接到用户的“我欠你的”,可以1:1兑换源代币。虽然这意味着被包装的代币保持了源代币的价值,但这也意味着桥接的任何问题都会破坏被包装代币的价值。

烧毁和赎回机制
使资产在目标网络上可用的另一种机制是烧毁和赎回机制。与锁链机制不同的是,桥接持有源链上的资产,烧毁和赎回机制烧毁源链上的资产,并在目标链上铸造与烧毁的资产相等的金额,用户可以将其赎回。

然而,目标链上特定资产的铸造必须由特定资产的发行人执行。例如,以太坊网络上的USDC和Solana网络上的USDC的发行都是由USDC的发行方Circle处理的。真正的USDC只有一个,那就是Circle发行的USDC,就像真正的美元只有一个,那就是美国政府发行的法定货币。
然而,这也意味着Circle必须在两个网络上建立相关的智能合约,然后桥接才能在这两个网络之间实施烧毁和赎回机制。这被称为“多链”智能合约部署,因此USDC可以被称为多链资产,它是源网络和目标网络上的本地资产。
多链与跨链
多链和跨链是两个不同的概念。多链是指在多个网络上发布智能合约和资产,并建在“多链未来”的理念上。这一理论指出,不会有一个单一的区块链来统治它们,而是会有许多具有独特特征的区块链来满足特定需求。
然而,正如本篇文章开篇所提到的,用户可能希望为不同的目的使用不同的网络。跨链描述了不同网络之间的互操作性,并实现网络之间的通信和资产转移。

注意:有一个资产桥接被恰当地命名为“多链”。该桥接是一个Web3产品,与上述概念(多链理论、多链智能合约部署和多链资产)没有关系。
本地流动性资金池
在目标网络上提供资产的最后一种方法不是铸造新资产,而是使用已经存在的资产。在这种方法中,桥接在两个网络上都有流动性池,桥接的资产可以从中赎回。流动性池本质上是一个智能合约中收集的资产桶。
这种方法要求桥接运营商在两个网络上维护流动性池,并确保每个网络上的两个池子总是有足够的资产来执行桥接请求。实施这种机制的桥接例子包括:XY Finance和Thorswap。

维护流动性池还允许涉及不同资产的跨链swap,允许用户以预定的汇率将一个网络上的一种资产(例如,wBTC)与另一个网络中的另一种资产进行交易(例如,ETH)。交易的资产具有同等价值,但不是同一资产或代表性资产。
桥接资产安全性和复杂性权衡
这三种机制中的每一种都意味着安全性和操作复杂性之间的权衡。虽然本地流动性池的实施和运营也是最复杂的,但资产对的划分有助于限制潜在利用的影响。锁定、铸造、烧毁和赎回机制更容易实现,引入的复杂性也要小得多,但对这些桥接的攻击可能会导致更大的损失。

资产转换过程
通过将通信工具(oracle和中继器)与资产管理和发行方法(锁定和铸造、烧毁和赎回以及本地流动性)相结合,可以设计一个流程,将源链上的资产价值转化为目标链上的同等价值资产。或者换个说法:资产可以通过一个接口从一个链上桥接到另一个链上。
在两个或多个网络之间创建接口有多种方法,大致可分为以下四种方法:
- 公证人机制(需要中心化/可信实体)
- 侧链或中继网络(需要智能合约和中继器)
- 简单支付验证(需要智能合约和中继器或oracle)
- 原子swap(需要哈希锁定机制和双方之间的通信)
公证人机制桥接
在非Web3术语中,公证人是具有法律权力的官员,可以在双方签署法律文件时验证文件的真实性并充当公正的证人。
在公证人机制的桥接设计方法中,中心化的第三方充当跨链交易的公证人,验证源网络上已接收到资产,并向目标网络确认将向用户发送同等资产。
用户将首先向可信桥接发出桥接资产的信号,表明在目标网络上用哪个地址接收资产。由于区块链网络是封闭网络,无法在其自身边界之外进行通信,因此桥接必须监控源链上接收用户资金的账户或地址。一旦桥接观察并验证资产已被接收(并且在接收之后已经验证了足够的区块,以确保区块链中的最后一个区块没有重组),则桥接将向目标网络发送命令,以提供相等面额的资产,并将其发送到用户指定的地址。

公证人机制桥接可以由一个验证交易的公证人组成,也可以由许多使用多数投票方案的公证人组成,其中m-of-n公证人必须同意桥接资产。这被称为联合式或多签名公证人机制。
联合公证人机制比单签名公证人机制更安全,因为在将资金释放到目标链上之前,同一桥接请求需要经过多方验证。联合桥接既可以是可信的,即用户相信双方不会恶意行为,也可以是绑定的。在保税桥接中,每一方都必须提供抵押品,如果一方有恶意或疏忽行为,抵押品可以被削减。
侧链和中继链桥接
侧链和中继链依靠一个独立的网络,有自己的共识层和验证器组来验证源网络上发生的某些事件,并将数据传递给目标网络。侧链和中继链的区别在于其目的和桥接机制。
中继链的目的是将交易中继到大量的网络。拥有一个单一的中继网络可以实现跨链传输的标准化:任何连接到中继网络的网络都可以很容易地桥接到任何已经与中继网络设置好的网络。此外,中继网络的区块链作为交易启动的不可改变的证据。

侧链也是专门构建的网络,但它们的重点通常是缓解主链面临的挑战。Ronin合Gnosis Chain(以前称为xDai)就是这样的例子。Ronin是专门用于Web3游戏Axie Infinity的侧链,它的存在只是为了支持Axie Infiniti的生态系统,降低交易成本并加快交易的最终结果(区块链三重困境中的“可扩展性”)。GnosisChain是以太坊网络的一个基于EVM的侧链,允许比以太坊更便宜的交易。Gnosis Chain可以说是因其在普及POAP方面的作用而最为知名。
Ronin和Gnosis Chain等区块链是特定用途的侧链,不充当到其他网络的标准化桥接。然而,Polygon拥有庞大的生态系统,并巩固了其作为高度可互操作EVM兼容侧链的地位。因此,许多不同的网络使用Polygon作为接口,连接到不同的第1层网络。
区块链的区块链(也称为BoB)也利用中继网络方法在网络之间传递消息和资产。例如,Polkadot有自己的中继链,支持其parachain之间的跨网络通信。Parachain本质上是与Polkadot兼容的网络,它们相互平行运行并与中继链相连。
Cosmos是BoB的另一个例子。虽然Cosmos开发的区块链间通信(IBC)协议可以连接任何区块链,但Cosmos发布了自己的第1层网络,称为Cosmos Hub,作为连接不同区块链网络的枢纽。如果每个网络都使用IBC直接相互连接,那么所需的连接和基础设施数量将成倍增长。Cosmos Hub不是一个中继链,但可以认为它是Cosmos中相当于Polkadot的中继链。
基于SPV的桥接
与中继器维护源区块链和目标区块链的完整副本的基于中继的桥接不同,基于简单支付验证(SPV)的桥接需要的资源少得多。基于SPV的桥接背后的想法是允许目标网络通过仅存储源网络的区块标题而不是整个交易历史来验证交易是否在源网络上发生。这是通过使用轻客户端部分中描述的“资产证明”机制实现的,其中传递Merkle证明并与区块标题进行比较以验证交易。
为了使用基于SPV的桥接资产,用户首先将他们的资产发送到源链上的桥接合约。桥接合约在源链上创建一个“承诺交易”,其中包括转移资产的Merkle证明和唯一标识符。接口(中继器、oracle或轻客户端)监视传入的承诺交易,并保存包含承诺交易的源网络的区块标题。用户通过向桥接帐户提交唯一标识符和Merkle证明来赎回目标网络上的资金。使用资产证明(Merkle证明和唯一标识符),轻客户端重建Merkle树,并将其与接口存储的区块标题的Merkle树交叉引用。如如果这个检查返回一个有效的结果,资金就会释放给目标网络上的用户。

轻客户端通常用于基于SPV的桥接,因为它们不需要节点存储源网络和目标网络的完整区块链,并且允许对交易进行无信任验证,而不需要法定数量的节点就交易有效性达成一致。在基于SPV的桥接背景下,轻客户端完成两个主要任务:
- 存储区块标题(数据存储)
- 交易的验证(计算)
只要能够满足存储和计算要求,基于SPV的桥接就可以使用中继器和oracle,而不是轻客户端。例如,中继器可以在本地存储区块标题,以便目标网络更快地检索,交易验证可以通过智能合约执行,也可以外包给oracle。
在设计基于SPV的桥接时,对成本(智能合约计算与客户端计算)、复杂性、安全性和速度要求的考虑将有助于确定特定用例的最佳SPV桥接设计。
原子swap
原子swap用于促进不同区块链上双方之间的代币对等传输,而无需区块链直接相互作用。对于这种转移代币的方法,代币/网络的兼容性和网络的互操作性是不需要的,可以在两个网络的双方之间交易代币。
原子swap的名字来自于一个代币对另一个代币的交换是以原子方式进行的,这意味着交易是一次性发生的。传统上,swap是通过多个步骤执行的,包括下订单,等待订单执行,最后收到资金。有了原子swap,代币的交换不需要信任的第三方就可以一次性发生。
与公证人机制桥接和中继链桥接不同的是,原子swap可以在两个网络上的用户之间分别进行资产交易,而网络之间永远不需要相互通信。这是通过两个网络上的“哈希时间锁定合约”(HTLC)实现的。
哈希时间锁定合约(HTLC)
HTLC于BIP-1999年首次引入比特币网络,是哈希锁定和时间锁定的结合。哈希锁定要求支付的接收者提供接受交易的口令,而时间锁定则规定交易必须在特定时间内执行,否则将激活一组替代的兑换条件,使资金返还给发送者。HTLC是有时限的有条件支付合约。

原子swap:成功swap的方案
原子swap的工作方式是部署两个HTLC——每一方在每个网络上部署一个。这意味着甲方在网络A上部署一个HTLC,而乙方在网络B上部署HTLC。一方必须首先决定一个密码口令并对其进行哈希。然后将密码口令的哈希用作HTLC哈希锁定功能的输入参数。此外,双方必须设定一个时间阈值,在该阈值之后,资金将被解锁。这些时间间隔是交错设置的:没有口令的一方(乙方)设置一个较短的时间阈值(如24小时),而有口令的一方设置一个较长的时间阈值(如48小时)。
甲方设置口令并生成哈希值后(步骤1),甲方与乙方分享哈希值,双方部署HTLC,并在每个网络上锁定他们同意交易的资金(步骤2 —— 甲方在网络A上部署HTLC,而乙方在网络B上部署HTLC)。一旦两个HTLC在两个网络上都设置好了,甲方就可以使用口令从乙方在网络B上的HTLC中赎回资金。通过这样做,口令在链上透露给乙方(步骤4),乙方可以使用口令赎回甲方锁定在网络A上的HTLC的资金。

原子swap:失败swap的方案
然而,如果甲方从未在网络B上赎回资金,并且密码从未被泄露,会发生什么?这就是时间锁定的作用。
时间锁定使交易在一定时间过后被退回。记住:时间锁定是交错的:
- 甲方的时间锁定为48小时(他们持有密码口令)
- 乙方的时间锁定为24小时
如果甲方未在24小时内透露密码口令,则乙方可以退还其在B网络上的HTLC中锁定的资金(步骤3)。48小时后,甲方可以在网络A上进行同样的操作。

这种时间锁定的交错非常重要:如果两个时间点都设置为相同的期限(如24小时),拥有密码的一方(甲方)可以在时间阈值过去之前(如23小时59分)赎回资金,并在阈值过去之后(24小时)立即退还自己的HTLC。错开时间门槛使双方都有足够的时间来完成swap或退还他们的资产。
关于原子swap的最后说明
在原子swap中,需要双方积极参与和通信。虽然上面我们写到了双方直接相互通信,但这种通信可以通过oracle或中继实现自动化。
原子swap允许个人之间进行无信任交易;然而,它们确实带来了另一个挑战:两个人如何找到彼此想要在两个特定网络之间交易特定数量的代币?这就是原子交易所的作用。原子交易所允许用户提交原子swap,并充当对等交易的市场。受欢迎的原子交易所包括Atomic DEX和Atomex。
其他互操作性技术
区块链间通信(IBC)协议

区块链间通信(IBC)协议是一种通信标准,可实现Cosmos生态系统中两个区块链之间的跨链通信。从根本上说,IBC依靠中继器在网络之间传递信息,以及驻扎在发送和接收网络的节点上的轻客户端来验证传入的信息。
IBC轻客户端与SPV轻客户端相似,因为它们允许在源网络上验证交易,而不需要维护区块链的完整副本。在实践中,IBC轻客户端更灵活,因为它们允许通过使用除Merkle证明之外的加密证明来验证更广泛的网络范围。
其余的组件(IBC/TAO和IBC/APP)是与数据包的传输、认证和排序有关的标准,以及发送的数据或资产类型的规范(例如,ICS-20和ICS-721,它们在Cosmos生态系统中是ERC-20和ERC-721的等效物)。
LayerZero

为了成为区块链网络之间的底层通信协议,被恰当命名为LayerZero(见白皮书)依赖于中继器和他们所称的“超轻节点”在网络之间传输消息并验证传入消息。
与轻节点不同,超轻节点(ULN)需要客户端在源网络和目标网络的节点上运行,它在两个网络上都作为智能合约存在。因为它完全消除了运行自己的节点来运行端点的要求,大大降低了与运行端点相关的成本。
ULN的工作方式是负责验证传入的交易,但它们按需从oracle中提取与数据块相关的数据,而不是将其存储在本地。
在这种设置中,中继器负责传递消息,而oracle则用于获取验证中继器发送的数据所需的区块相关数据。这样,安全性就从端点外包给了oracle和中继器。在这种设置中,恶意交易可以在两个网络之间传递的唯一方式是中继者和oracle的串通。
LayerZero允许开发人员自行设置他们希望使用的oracle或中继器。如果开发人员是恶意的,他们可以设置LayerZero端点来使用私有的oracles和中继器。然而,如果使用ChainLink等公共oracle,恶意活动的可能性就会大大降低。
互操作性的漏洞
现在我们已经了解了设计互操作性所涉及的所有组成部分,我们可以简单看看一些最突出的桥接黑客,并将其安全缺陷追溯到上述的一些设计决策。
所有桥接都需要某种形式的验证,即在源网络上接收资产,以使资产在目标网络上可用。在许多桥接漏洞中,该验证被欺骗以释放源网络或目标网络上的资产,尽管攻击者并不持有相关资产。
让我们看看2022年的一些漏洞,这些漏洞涵盖了各种攻击载体。
1.1亿美元的币安桥接黑客
2022年10月6日,UTC时间18:30,一名攻击者从币安桥接提取了价值6亿美元的2000000 BNB。这是通过向源网络(币安智能链)上的桥接合约提交虚假验证来实现的,该网络接受了验证并释放了代币。

币安桥接是一种互操作性协议,允许币安链和币安智能链之间的资产转移,这两个独立的区块链是BNB网络的一部分。该桥接使用锁定和铸币机制,为此,包装的代币以1:1的比例在币安智能链上铸造(即1 BNB=1 wBNB)。币安智能链是以太坊网络的分支,来自币安链的常规BNB代币与币安智能链条不兼容。因此,来自币安链的基于BEP2的BNB代币被包装成币安智能链上的BEP20 BNB代币(相当于ERC20)。所以虽然币安智能链上的代币称为“BNB”,但它实际上是一个包装的BNB代币。
攻击者通过诱使桥接认为在币安智能链(目标网络)上存入了相当数量的资金,从而在币安智能链(源网络)上创建并释放了2000000 BNB。币安的团队很快发现了这一点,并要求验证人员暂停网络,这样他们就可以将网络状态回滚到攻击发生之前。在网络暂停之前,攻击者能够将价值约1亿美元的BNB代币桥接到其他网络。
价值8000万美元的Qubit Finance黑客攻击
Qubit Finance在以太坊和币安智能链之间的桥接上遭遇了类似的命运,称为QBridge。QBridge也使用了一个锁定和铸币机制,与币安链类似。攻击者反复假装在桥接的以太坊一侧(源网络)存入ETH,这触发了qXETH的铸造,这是一种ETH代表资产,相当于ETH的价值,由QBridge在币安智能链上发行。最后,攻击者将所有qXETH交易为BNB,在离开时获利8000万美元。

3.2亿美元的Wormhole黑客攻击
Wormhole黑客的命运与币安桥接黑客相似。Wormhole使用锁定和铸造机制来锁定源网络上的资产,并在目标网络上释放它们。在这次黑客攻击中,攻击者通过提供欺诈性的验证,使桥接相信ETH被存放在桥接的以太坊一侧(源网络),这导致桥接在Solana(目标网络)上铸造了价值12万的 whETH(Wormhole以太币)。

6.25亿美元Ronin Network黑客攻击
Ronin Network黑客是Web3中最大的黑客之一。 Ronin Network是为流行的Web3游戏赚钱游戏Axie Infinity定制的网络,是以太坊网络的一个侧链。与以太坊相比,Ronin Network作为玩Axie Infinity的一个更便宜更有效的方式,允许更便宜的交易成本和更快的交易速度。

然而,Ronin侧链只有9个验证器来验证交易。低数量的验证器推动了网络的效率,但也是一个安全问题,因为攻击者只需要控制9个验证器中的5个就可以执行51%的攻击。而这正是所发生的事情。一个攻击者设法掌握了控制5个验证器的密钥,然后签署了他自己的交易,桥接出价值超过6亿美元的资产,主要是Ronin包裹的以太币,从Ronin(源网络)回到以太坊(目标网络)。
8000万美元的FEI协议和Rari资本池攻击
虽然不是桥接或互操作性攻击,但对FEI协议和Rari Capital的攻击显示了流动性池如何通过要求攻击者对多个池重复攻击来限制攻击的程度。
在这个漏洞中,攻击者通过闪电贷款存入1.5亿美元USDC,以获得1977个 ETH的贷款。通过智能合约漏洞,攻击者成功地提取了他最初存入的1.5亿美元的抵押品,同时保留了1977个 ETH的贷款。这就是所谓的再货币黑客。然后,攻击者必须在多个其他流动性池上重复此过程,逐一将其耗尽。
虽然在这种情况下,流动性池并不能阻止其他资金池被耗尽,但它确实要求攻击者重复这个过程,这可以为团队提供宝贵的时间,在更大的损失发生之前冻结业务。

80万美元Luna 2.0 Oracle漏洞
此漏洞并非桥接攻击,但它说明了Oracle数据并非总是正确的,攻击者可以利用它进行攻击。
当Luna 2.0推出时,收益率协议Anchor同时接受Luna 1.0和Luna 2.0的存款。然而,Oracle对Luna 1.0的价格反馈是不正确的:虽然现实世界的价值是0.001美元,但Oracle报告的价值大约是5美元,巧合的是这与Luna 2.0的价格相同。Anchor的智能合约无法判断这个数字是否正确,而是将Oracle提供的任何数字视为真相的来源。

一名攻击者发现了这一点,并存放了大量几乎毫无价值的Luna 1.0代币,Anchor将其解释为这些代币的价值远远高于实际价值。攻击者使用这些代币在UST稳定币中贷款,用于Anchor上的进一步活动。攻击者获利约80万美元。
总结——互操作性
区块链三重困境可以用来解释为什么存在多个区块链网络,说明网络需要在可扩展性、安全性和去中心化之间做出权衡。不同的网络在这三种属性之间做出某些权衡,这使得网络能够适用于特定的用例(例如,在高度可扩展的网络上进行游戏,或在高度去中心化的网络上抵抗审查)。多个区块链的存在被称为“多链”。
用户可能希望在网络之间移动资产,以将每个网络用于其擅长的特定用例。为了实现这一点,网络需要具有互操作性。“跨链”通信描述了源网络和目标网络之间的消息传递(包括交易或资产)。各种项目和协议用于实现跨链通信的基元包括oracle、中继器、轻客户端和中心化实体。
除了能够通信之外,资产还需要在网络之间兼容,或者在目标网络上需要提供源资产的兼容等价表示。可以在目标网络上提供兼容资产的机制是锁定和铸造机制、烧毁和赎回机制以及本地流动性池。
通过将互操作性原语与确保跨链资产等价的机制相结合,我们可以设计一个资产转换过程,该过程允许将消息从一个网络传递到另一个网络,并在目标网络上发布与源网络上的资产等价的资产。生成的产品通常被称为“桥接”。本文中描述的桥接设计包括公证人机制、侧链、中继网络和原子swap。
接着,我们简单看了一下Cosmos区块链间通信(IBC)协议和LayerZero协议,它们使用上述原语在区块链之间创建灵活的底层通信接口。
最后,根据本文中探讨的互操作性的各个方面,回顾了最近的一些高知名度的桥接漏洞。
*本文由CoinTime整理编译,转载请注明来源。
所有评论