Bupt3分享11—跨链是如何实现的

Hacker Dōjo Workshop:
研究种类:课题研究
资助金额:100 USDT
分享者:Syshems 北邮在读硕士
本项目由Hacker Dōjo资助,文章转载请联系
Telegram: @DoraDojo0
WeChat: @HackerDojo0

由于区块链可扩展性问题仍没得到解决,多链的趋势很可能在未来持续下去。然而,区块链无法监控或追踪其他网络中发生的事情。每条链都会制定自己的规则,因此,区块链之间要实现信息交互相当困难。跨链需要实现不同区块链之间的安全性和可靠性,因此需要使用一些特定的技术,例如预言机、多重签名、智能合约等。本研究旨在阐述常见的跨链通信方式,常见的资产跨链方案,以及各自方案的优缺点。

Vitalik 认为,区块链互操作性是两个区块链之间通过引入第三方,并在不改变原生链的情况下进行跨链的资产转移、支付或者信息交互的能力。我们在这里主要拆解实现「区块链互操作性」中的跨链协议,我们将依次分析跨链协议中的三个部分:跨链通信协议、跨链资产交易协议和跨链智能合约调用协议。

一、常见的跨链通信协议

1、总览

通常情况下,我们将链与链间的沟通方式成为跨链通信,目前区块链已经逐步从单体链时代向多链、模块化区块链时代转变,我们从比特币,以太坊,发展到以太坊2.0 和 Layer2 生态,Cosmos,Polkadot,Avalache 的多链解决方案,以及像 Solana 这种高性能,高并发的单体链等的跨链互通新纪元。

通常,我们将跨链通信分为「最小化信任跨链通信」和「可信任跨链通信」。

  • 最小化信任跨链通信:最小化信任跨链通信指的是集群内部通信协议“Intra-cluster Communication”,比如以太坊和二层网络(采用了欺诈证明/有效性证明等)、Cosmos Hub间的 IBC 通信、Polkadot 平行链和中继链的通信等。
  • 可信任跨链通信集群和集群之间的通信我们通常称为可信任跨链通信“Inter-cluster communication”。

以 rollups 为代表的最小化信任跨链通信只解决了集群内部的通信问题,当我们不可避免的来到多链的区块链世界,集群间的通信就显得至关重要。

2、几种可信任跨链通信协议

跨链通信协议是一种用于实现不同区块链之间互操作性的协议。它允许不同的区块链网络之间进行通信和交互,使数据和价值能够在不同系统之间传输,增强连接性和无缝集成。以下是一些常见的跨链通信协议。

2.1 IBC

IBC(Inter-Blockchain Communication)是一种允许独立区块链彼此进行无需信任的通信的协议,旨在实现不同区块链之间的互操作性。虽然 IBC 是 Cosmos 路线图的核心部分,但任何区块链都可以以其标准化形式(链间标准 ICS )使用 IBC 与其他区块链连接和通信。它定义了一组最小函数,实现了数据的跨链可靠传输、验证和排序,被用在任何基于可靠和安全模块间通信的应用程序上,包括跨链资产转移、原子交换和多链智能合约等。

IBC 由两层组成:基础级 TAO 层 ( transport, authentication, and ordering ) 和构建在 TAO 之上的 Application 层。 TAO 层主要负责 IBC 的功能,任何应用程序层协议都可以构建在其之上运行。

IBC 的一个关键特性,就是连接的区块链间不是直接通信的,他们通过专用通道发送信息包,该通道包含一个轻客户端的智能合约模块,用于无需信任地验证另一个区块链发送的状态是否有效。 IBC 的 trustless 和 permissionless 特性意味着任何一方都可以运行自己的中继器,不需要信任传输信息的各方,这是 Cosmos 生态实现区块链独立主权所需的重要组成部分。

IBC/TAO 通过每条链上部署的智能合约发挥作用,并通过 IBC 连接。 信息以 package 的形式通过无需许可的中继层在链之间发送,数据包按照发送顺序一次性传送到目标链。 借助 connection 和 channel abstraction,中继器 Relayer 将智能合约的输出从发送者的 TAO 模块发送到接收区块链的 TAO 模块,接收数据的验证由链上轻客户端处理,该客户端验证所呈现的状态是否确实直接存在于发送方区块链上。

  • Relayer:通过指定通道将数据包从一个智能合约传输到另一个智能合约
  • Channel:通道的每一端都有一个专用的智能合约连接,通过通道发送的数据包可以证明数据是从特定的区块链上的特定的智能合约发送的
  • IBC/TAO modules:模块包含了在各条链上部署的、针对 Channel 发送信息顺序的智能合约
  • 每个 IBC/TAO 模块都使用通道和连接抽象来定义和连接通道的两个智能合约以及链上轻客户端,以无需信任地验证区块链发送的状态是否确实存在

IBC 的简洁性和灵活性使其被称为区块链的TCP/IP协议。通过使用IBC,开发者可以构建原生的跨链应用程序,实现不同区块链网络的互操作性,而无需在不同网络上部署多个单独的版本。

一些局限性:

IBC和以太坊的设计理念较相近,都是以确保网络安全性作为第一目标,那么当然会牺牲一部分的可扩展性和成本为代价。由于其传输层和验证层的设计,目前IBC上实现跨链通讯Communicating Chain需要在Connected Chain上运行轻节点,因此对于像EVM兼容,以太坊等高成本的链而言,部署成本也大大增加了。这一定程度上限制了IBC可接入的链数量,目前仅限于Tendermint链。当然对于Polkadot, Celo等为代表的其他共识协议,也有团队开始进行轻节点的开发。

2.2 ZK 跨链通信协议

针对跨链桥的攻击给用户造成了巨大的经济损失,这使得安全性成为跨链桥开发的重中之重。通过验证源链区块头,用户可以直接在目标链上访问源链证明并自行验证证明。借助 ZKP ,证明的大小比以前小得多,链上验证成本也降低了很多。ZKP 跨链消息协议可以缓解部分安全问题可以实现类似 IBC 式的共享安全性。在过去是不可能低成本的实现的。

将 ZKP 用来中继消息的想法很直观,但详细设计可能很复杂。整个工作流程可以分解为以下步骤:

  • 决定将哪些数据传递给目标链
  • 获取存储证明(证明数据存在 EVM 存储中)
  • 根据存储证明生成 ZK 证明(以 Merkle Tree 的形式)
  • 将 ZK 证明从起始链传递到目标链(中继 ZKP)
  • 在目标链上展开 ZK 证明(链上积累、链上压缩、链下压缩)
  • 在目标链读取跨链信息

ZK 跨链通信协议赋予不同链上协议互相交流的能力。开发者能够基于 ZK 跨链协议开发全链 DApp。DeFi,应用链将从中受益。

2.3 LayerZero

LayerZero 作为传输层协议,并没有 IBC 一样的应用层,当然其将来准备直接 CopyIBC 的应用层,而其传输层分离了中继节点和预言机。Layer Zero 通过引入底层产品 有效传送“Valid Delivery”,实现跨链互通,而有效传送需要其中继节点和预言机互相独立。

LayerZero的架构主要包含端点,中继节点和预言机。

LayerZero 通过引入了超级轻节点(ULN),超级轻节点将获取必要的跨链区块头和交易证明的任务委托给线下的中继节点和预言机。预言机提交的区块头和中继节点提交的交易证明将会同时被验证,通过离线避免了链上的安全隐患,提高了轻节点验证效率 (线下验证)。

  • 步骤1:用户应用程序UA(如 Stargate桥) LayerZero 的通信器(Communicator)发送请求,包括交易标识符t、从 A 到 B 转移的数据(payload有效负载)、或指向 Chain B 上用户应用程序智能合约的标识符或者中继器(relayer_args)等交易信息。
  • 步骤2:通信器将这些数据以 LayerZero 数据包(packet)的形式发送给验证器(Validator)
  • 步骤3:验证器将交易标识符和链 B 上智能合约的标识符等发送给网络层(NetWork)。网络层的工作也被触发,有待传递的信息需要通过oracle将源链A的区块头发送到目标链B。
  • 步骤4:验证器将此信息(packet)转发给中继器。中继器被通知后则取交易证明(第7步的Proof)链下存储,并将其发送到Chain B(第11步),chainB的端点亦可发起申请要求获取指定块哈希的结果(第10步)。
  • 步骤5:网络层将Chain B上智能合约的标识符和交易块的块ID一起发送给预言机。当预言机被通知则获取Chain A上当前块的块头(第6步)并将其发送到Chain B(第8步)。

可以看到这时候其实6、7、8、10、11的部分都内嵌在中继器和预言机的环节执行了。

  • 步骤9:网络层将获取到的区块哈希发送到验证器(触发超轻节点的验证)。
  • 步骤12:验证器通过查看网络层存储的交易证明和块头来确保交易有效且已提交。如果块头和交易证明匹配,则将交易信息(Packet)发送到通信器。
  • 步骤13:通信器将信息(Packet)转发送到Chain B上的用户应用程序中,执行任意功能。

整体跨链是在源链上执行首笔交易的时候收取的Gas手续费,到了目标链上则是对应3笔,构成是中继器+预言机+Layer Zero: Executor(某个EOA账号)。

2.4 Axelar

Axelar 是一个跨链的互操作性网络,通过一套通用的协议和 API 连接所有区块链、资产和应用程序,通过与 Axelar API 的单一集成,解锁对多个互连的 Axelar 网络、用户、资产、流动性和数据的访问。

Axelar主要有两个功能,一是基于Axelar构建跨链DAPP,二是作为链间互通的桥梁。

Axelar 基于三层系统构建:

起初,Axelar 是一个去中心化的验证者网络开始,负责保持网络的良好运行和交易。这些验证器使用跨链网关协议 —— 一种多方加密叠加,可以让第 1 层区块链相互通信。验证器通过读取和写入位于这些链上的网关智能合约来确保连接的外部链上发生的事件是真实的。

第 2 层网络包括网关智能合约 —— Axelar 与其所连接的第 1 层区块链之间的桥梁。验证者始终关注这些网关以查找输入的交易,然后他们使用共识机制查看、分析和确认这些交易。交易获得每个人的同意后,他们就会将其写入目标链的网关。这让跨链交易变得更容易。

第三个系统包括供开发人员使用的工具,即 API(应用程序编程接口)和 SDK(软件开发工具包)。这二者位于验证器和网关的基础层之上。该应用程序开发层是开发人员用来构建跨链应用程序的网络层,以将通用互操作性注入到开发人员的应用程序和区块链中。

Axelar 以一个单一的通用网络运行,消除了不同网络之间尴尬的双向桥接需求,所有连接的区块链都能使用它来处理传输、转换和安全性。因此,开发人员可专注于其用例,而不必担心链之间的网络和互操作性问题。

2.5 Wormhole

Wormhole是基于POA( Proof of Authority)共识机制的多签网络。主要包括核心合约和守护者网络。任何核心合约上的信息都需要通过守护者网络进行签署和验证。目前守护者网络有 19 名守护者,这个类似于与 POS 中的验证节点。守护者负责 Wormhole 网络上的交易验证, 2/3 的守护者需要共同验证,一旦共识达成, 证明将会发送至目标网络进行交易或者特定合约执行。Wormwhole 网络目前基于多数诚实假设。

目前网络上的守护者都是行业中头部和非常有名的节点,保证了网络的安全, 但是上文提到,这也会带来中心化问题和审查风险。如果1/3的守护者相互勾结, 那么他们可以审查Wormhole上的相关交易。

二、常见的跨链技术

**跨链技术本质上是一种将A链上的数据D(或信息I,或消息M)安全可信地转移到B链并在B链上产生预期效果的一种技术。**因为区块链系统本来就是一种特殊的分布式账簿数据库系统,所以这个转移的数据,最常见的就是资产的数据,如代币余额。

目前主流的区块链跨链技术方案按照其具体的实现方式主要有:公证人机制、哈希锁定、侧链&中继链、分布式私钥控制。

1、公证人机制****(Notary schemes)****

公证人机制通过引入第三方来验证交易信息是否一致、合法,无需对交易的细节进行验证。其优点是实现原理简单且无需复杂工作量证明,缺点是有中心化风险。

公证人机制主要包括三种类型:单签公证人、多重签名公证人、分布式签名公证人。单签公证人又称中心化公证人机制,其通过单一的独立节点或机构充当公证人角色。多重签名公证人通过多个公证人进行签名的方式提高公证人机制的安全性。分布式签名公证人采用多方计算(multi-party computation,MPC)实现安全性。

跨链交易实例:假设 Alice 想和 Bob 进行 1 个 BTC 换 50 个 ETH 的交易

  1. Alice将自己的1个BTC存入交易所的比特币地址;Bob将自己的50个ETH存入交易所的以太坊地址;
  2. Alice在交易所上挂单:1 BTC for 50 ETH;
  3. Bob通过交易所完成与Alice的交易,Alice得到50 ETH,Bob得到1 BTC(这里会有不少的形式。一种是Bob挂出购买比特币的单子,然后交易所撮合。一种是Bob直接看到Alice挂出卖单,然后直接要这个卖单)
  4. Alice将交易所得的50 ETH提币到自己的以太坊账户;Bob将交易所得的1 BTC提币到自己的比特币账户;

通过引入中介完成了Alice和Bob的BTC和ETH的交换。通过该例子可以看出交易所的方式目前仅能够支持资产的交换,且资产交换的原子性、安全性完全由中心化的交易所保障,故存在一定的中心化风险。

2、哈希锁定****(Hash-locking)****

哈希锁定机制又称为哈希时间锁定协议(hashed- timelock agreements, HTLA),是一种基于原子交换的跨链机制,其通过资产锁定并设置相应的时间和解锁条件来实现资产交换,并实现原子性。优点是安全性高,缺点是使用场景有限。哈希锁定机制只支持资产或者信息交换,而不支持资产或者信息转移。

跨链交易实例(仍以前一节中的交易需求为例):

  1. Alice随机构建一个字符串s,并计算出其哈希h;
  2. Alice将h发送给Bob;
  3. Alice通过合约锁定自己的1个BTC资产,设置一个较长的锁定时间T1, 再设置了获取该BTC的条件:Bob提供h的原始值s;
  4. Bob锁定50ETH到自己的合约,设置一个相对较短的锁定时间T2(T2 < T1)。再设置50ETH的获取条件:Alice提供h的原始值s;
  5. Alice将字符串s发送到Bob的合约获得50个ETH;
  6. Bob观察到步骤5中Alice的s值,将其发送给Alice的合约成功获取1个BTC; 至此完成资产的交换。
  7. 如果超时,则锁定的资产返回原主。

从上述的过程可以看出哈希时间锁定合约有一些约束条件:

  • 双方必须能够解析双方的合约内部数据,例如s,例如锁定资产的证明等;
  • 哈希锁定的超时时间设置时需要保证存在时间差,这样在单方面作弊时另一方可以及时撤回自己的资产。

3、侧链

侧链是一种通过双向挂钩(two-way peg)实现在不同区块链之间转移资产或数据信息的跨链技术。其中,双向挂钩是侧链机制实现的核心。侧链的缺点在于网络和资产的复杂度增加,新攻击媒介的产生和中心化挖矿的风险。

侧链实现是通过双向锚定(two-way peg)技术。将暂时的数字货币在主链中锁定,同时将等价的数字资产在侧链中释放。实现双向锚定的最大难点在于协议改造需兼容现有主链,也就是不能对现有主链的工作造成影响。

具体实现方式有:单一托管模式、联盟模式、SPV模式、驱动链模式、混合模式。

  • 单一托管模式就是类似交易所做中介完成锁币放币,其实和公证人模式类似,由多个公证人的多重签名来对转移资产的交易进行签名,避免了中心化。
  • SPV 模式(使用得最多的)是通过将交易发给本链的一个特殊地址,由此会自动创建一个 SPV 证明给侧链上并发起一个交易在侧链上解锁对应的资产。驱动链模式是用矿工来作为资金托管方,将资产的监管权发放到数字资产矿工手上,矿工进行投票决定何时解锁资产及将资产发送到何方。
  • 混合模式就是将这些侧链机制进行有效结合,对结构不同的链,为其使用最适合其结构的模式,如主链使用SPV,侧链使用驱动链。

SPV交易实例(仍以之前的交易需求为例):

  1. Bob将50ETH发送到BTC Swap的合约进行冻结(该合约若确认Bob接收到来自Alice的1BTC就自动将50ETH转给Alice);
  2. Alice确认Bob冻结信息后,将1BTC转到Bob比特币账户;
  3. BTC-Relay将比特币区块头推送到BTCSwap合约;Alice将自己转BTC给Bob的交易tx发给合约BTCSwap合约,请求50ETH;
  4. BTCSwap合约结合tx和比特币区块链进行SPV验证,验证通过则将50ETH转到Alice的以太坊地址。

4、中继机制

中继机制不完全依赖于可信第三方的验证判断,仅通过中间人收集不同链的数据状态进行自我验证。在中继机制中,平行链通过遵守协议规范与中继链连接,当平行链需要发起跨链操作时,平行链需要将跨链互操作的交易信息通过中继链的验证者审核后发布到中继链上,由中继链传递信息到目标平行链上实现跨链互操作。

中继链算是公证人机制和侧链机制的融合和扩展,目前社区内最活跃的两个跨链项目 Cosmos 和 Polkadot 采用的都是基于中继链的多链多层架构,其中Cosmos目前支持的是跨链资产交互;而Polkadot则宣称提供任意类型的跨链交互,但具体实现还有待观察。

侧链机制和中继机制的优点在于扩展性、安全性有一定保证,且使用场景广泛,而缺点是侧链实现难度较大。侧链机制和中继机制的区别在于:中继通过中间链的方式实现不同链之间数据状态的验证,而侧链是通过双向锚定实现性能拓展的解决方案。

5、分布式私钥控制

分布式私钥控制是使用分布式私钥的生成与控制来实现将多种不同区块链的数字资产映射到一条新的区块链上,并在这条新的区块链上实现不同链之间的数字资产交换。分布式私钥控制技术基于分布式的密钥分发机制,类似分布式签名公证人,但其进一步避免中心化风险。分布式私钥控制技术目前的使用场景有限,只应用于数字资产领域。

分布式私钥控制的核心在于分布式控制权管理,即将资产的所有权和使用权分离,将原链上数字资产的控制权安全地转移至非中心化系统中

5.1 Lock-in

step1. 将密钥分片并将分片密钥分布式保管,即分布式生成密钥(DKG)

step2. 将资产转入原链上指定账户并由 Fusion 节点进行验证,实现控制权的分布式管理

5.2 Lock-out

step1. 先检查 Fusion 映射账户中数据情况,满足具体条件后发起交易

step2. Fusion 各节点通过各自保存的分片密钥进行验证,解除分布式控制权管理以及资产映射。

step3. 分布式控制权完成交接后,智能合约将在 Fusion 映射账户中同步更新账户状态数据,以体现 Lock-in 和 Lock-out 完成情况,其记账过程实际上是通过 Fusion 系统向映射账户发放或收回等量等额数字资产的过程。

分布式私钥控制类似于公证人机制,但用户始终拥有对资产的控制权,只是在存储数字资产的密钥上采用了分布式存储的方式,这在定程度上避免了公证人机制下的中心化风险。 ,账户锁定不需要采用双向铺定方式,所有交易在验证节点重构后传入原链网络,不改变原链特性,各链均可自由且低门槛地接入原链,降低跨链接入成本,因此适用范围广,易于实现。 由于不改变原链特性,跨链需要根据原链的特性适配开发,因此开发难度较大,且等待原链确认时间较长,致使运行效率偏低。

6、对比

从对比结果看:在安全性方面,目前主流跨链技术的安全性有待进一步加强;在应用场景方面,哈希锁定的应用场景比较有限,仅仅支持实现资产的跨链交换。总之,目前同一应用场景下可采用多种跨链技术,此时需要将跨链技术的原理与应用背景结合,选择最合适的跨链技术去解决实际应用问题。

三、跨链未来的展望

跨链通信目前的功能和未来的整合:

  • 跨链桥(例如:Stargate)
  • Omnichain NFT(Gh0st)
  • 在 LayerZero 基础上的新应用(例如:Rage Trade)
  • 使用 Chainlink 作为默认的预言机(如在测试网上看到的那样)
  • 整合 ICS 标准(区块链间通信标准)

所有这些跨链解决方案的一个共同特点是,它们都以某种方式整合了区块链间通信,无论是共享数据标准、Cosmos SDK 模块(如 CosmWasm),还是直接建立在 Cosmos SDK 本身。

跨链领域仍处于非常早期的起步阶段,在跨链调用等方面还有很大的设计空间。上面没有提到的其他值得注意的跨链解决方案:

  • Composable Finance
  • Chainlink 的 CCIP
  • UniswapX 等

四、参考

Chainlink CCIP:Chainlink发布跨链互操作性协议(CCIP)

跨鏈橋與不可能三角: 跨鏈橋與不可能三角 —— 當我們聊跨鏈橋時,我們在聊什麼? - PANews

梳理中间件细分赛道: 梳理中间件细分赛道:跨链桥、预言机、网关类API与数据分析协议 | Web3世界

STG:https://twitter.com/CryptoTrendzN/status/1617055677071126528

LayerZero: https://mp.weixin.qq.com/s/KHHfSVFi2_YMX-4miynHcg

谁将成为跨链通讯协议标准: 谁将成为跨链通讯协议标准? IBC vs LayerZero vs Axelar vs Wormhole ? — atom_crypto

跨链技术区块链跨链协议综述

Nansen AlphaNansen:浅析三大跨链通信协议,未来还有哪些可能性?_资讯-odaily

ZK 跨链通信:账号已迁移

How IBC workshttps://www.coinbase.com/cloud/discover/dev-foundations/ibc-protocol

跨链通信简要研究: 跨链通信简要研究_资讯-odaily