为积极响应中国政府监管政策要求,自2021年9月28日起,蜜蜂查block.cc停止为中国大陆用户提供相关服务。蜜蜂查block.cc致力于遵循各国法律法规合法运营,感谢您的支持与理解!
币种: --
交易所: --
总成交额(24h): --
总市值: --
USD

Celer 跨链消息框架:开发和使用多链应用的全新模式

CelerNetwork技术社区 2022.01.14 20:18

Celer跨链消息框架(Celer Inter-chain Message,以下简称Celer IM)现已正式推出并上线测试网!

Celer IM从根本上改变了多链dApp的开发使用范式。开发人员现在可以通过Celer IM开发能够在多个链之间共享流动性和程序状态的dApp。用户无需手动跨越和切换多个区块链进行复杂交互,就可以通过Celer IM一键享受多个区块链生态系统上的流动性和应用。

Celer IM让跨链可组合性成为可能,从而推出一系列的全新模式「原生跨链dApp」。举例如下:

  • DEX将能允许用户在一次交易中跨多条链交换资产

  • 收益聚合器将能允许用户从一条链管理多链资产

  • 借贷协议可以允许用户在一条链上提供抵押,在完全不同的链上借出资产

  • DAO治理协议允许统一的多链治理机制,而无需在不同链之间移动资产

  • NFT市场中,来自一条链的用户可以对在完全不同的链上的NFT拍卖进行出价

  • 元宇宙游戏 ,用户可以在游戏中与各种链的虚拟物品进行无缝交互

  • 新型跨链资产桥,实际上cBridge可以看作是建立在Celer IM上的资产桥梁

几乎每个部署在多链上的dApp都可以从使用Celer IM框架中受益。

Celer IM框架非常易于使用,允许 「即插即用」升级,不需要修改已部署的代码。例如,UniswapSushiswap只需一个简单的插件合约(https://github.com/celer-network/sgn-v2-contracts/blob/main/contracts/message/apps/TransferSwap.sol)就可以转变为原生跨链DEX 。

Demo演示视频:https://www.youtube.com/watch?v=Q6Ehe5Bi7-4

在此演示中,Sushiswap的用户可以只需一个操作就把Arbitrum上的ETH,兑换为BSC的BNB。在整个Celer IM的系统中,自动并且去中心化地完成了下列步骤:

  • 把Arbitrum上的ETH在Sushiswap中换成了USDT

  • 将USDT从Arbitrum桥接到BSC

  • 在BSC上将桥接过去的USDT换成BNB

Celer IM已经上线测试网,并且发布演示程序(https://interchain-swap-demo.celer.network/#/transfer)、开发文档(https://github.com/celer-network/sgn-v2-contracts/tree/main/contracts/message)、智能合约框架(https://github.com/celer-network/sgn-v2-contracts/tree/main/contracts/message/framework)和示例应用程序代码(https://github.com/celer-network/sgn-v2-contracts/tree/msg-swap/contracts/message/apps)。我们正在积极寻找开发者合作伙伴,共同打造功能强大、用户友好的原生跨链dApp。如果有兴趣合作,请与我们联络(https://form.typeform.com/to/LsetjLjC)。

「多链原生dApp」的全新模式

目前普遍的开发多链dApp的做法是通过简单地完成复制多个链上相同的代码,这些dApp在不同链上的流动性、应用逻辑和状态是完全隔离的。事实上,除了UI和资产,这些dApp之间没有任何共享。

这种方法通常存在流动性效率低、状态割裂和用户体验降级的问题。Celer IM通过实现跨链合约调用和消息传递,能够让用户通过“一键操作”享受更高流动性效率和统一的应用逻辑,从而让这些基于Celer IM的dApp挖掘多链区块链世界的真正潜力。

举一些例子。

DEX

如今,多链DEX必须为部署在其上的每条链上的相同关键资产对建立流动性池。因此,DEX必须为这些资产对在所有这些不同的链上建立流动性激励。尽管所有链上的总流动性可能相当高,但每条链上每个池的流动性深度实际上很分散。不幸的是,这会造成高滑点,从而影响整体交易体验。另外,如果用户想要交易一种在不同链上存在深度流动性的资产,他必须在原始链上对其进行手动兑换,使用单独的资金桥应用,然后切换到另一条链进行最后的交换。

使用Celer IM构建的DEX只需一次交易即可自动将交易传递到深度流动性池,从而显着改善交易体验。通过这项创新,DEX项目能够将某一对token的流动性激励聚集在同一个池子里,从而以低滑点创造更深的流动性。

借贷协议

今天,如果用户在一条链上的借贷协议中提供抵押品,他们只能借用同一条链上的资产。为了从不同的链中借出资产,他们必须提取流动性,手动将其移动到不同的链,然后在新链的抵押池中提供流动性。

Celer IM实现了一种新型的链间借贷,用户可以在一次交易中将他们的抵押品从一条链上的流动性池无缝转移到另一条链上的池中。然后,他们可以直接借入新链上的资产。有了这个功能,用户将拥有一个简单而干净的用户体验,让他们无需离开贷款应用程序就可以完成他们需要做的事情!

NFT 市场

如今,如果用户想要参与NFT拍卖,在NFT所在区块链上他们必须得有资金 。但往往存在想要参与拍卖但在该特定链上没有资金的人。以OpenSea为例,因为它当前是一个仅部署在以太坊上的NFT市场,复杂的桥接操作和高昂的gas成本让很多其他链上的用户被排除在外,不能参与OpenSea上的NFT交易。

Celer IM可以帮助扩展NFT市场以覆盖更广泛的受众。除了最初铸造NFT的链,拍卖将能够跨链进行。最重要的是,在拍卖结果最终确定之前,无需进行任何单独的跨链资金转移。这显著降低了参与NFT拍卖的成本,降低了复杂的操作门槛并扩大了整个市场的交易池。

Celer IM架构及设计模式

那么,如何实现这些原生跨链dApp,开发人员又需要构建什么呢?

在这个模块,我们会逐步拆解常见的应用设计模式,介绍Celer IM的架构。

伴随资金转移的跨链逻辑

对于许多原生跨链应用,核心流程通常涉及将资金发送到一个或多个链,并使用这些跨链资金在目标链上「完成其他任务」。上面给出的DEX演示其实就使用了这种设计模式。在接下去的介绍中,我们也会提供DEX演示的具体代码链接。

上面的流程图看起来虽然有些复杂,但其实大部分的流程是由Celer IM完成的,dApp 开发人员只需要搭建IM架构应用模板(https://github.com/celer-network/sgn-v2-contracts/tree/main/contracts/message/framework)中的两个简单函数。

第 1 步:用户向dApp发起交易

在Celer IM 中,用户不再直接与dApp现有的智能合约交互,而是与一个新的 dApp Plug-in合约交互(标记 A),表达他们想要执行的跨链逻辑。这个 dApp Plug-in成为整个dApp业务逻辑的一部分,可以与源链上dApp现有的智能合约进行交互。与dApp Plug-in合约的交互通常是用户为与这个跨链dApp 交互所发出的唯一交易。

在展示的DEX示例中,transferWithSwap(https://github.com/celer-network/sgn-v2-contracts/blob/main/contracts/message/apps/TransferSwap.sol#L107)函数就是整个流程的起点,它允许用户表达跨链逻辑请求,比如「先在X链上将Token A交换成Token B,再在Y链上用换好的Token B 交换成Token C」。

当然,通常情况下用户不会手动说明这些请求,使用Celer IM框架的dApp应该为调用此类函数构建更抽象的用户目标。

第 2 步:dApp Plug-in将消息和相关的资金跨链请求发出

在完成源链上的必要操作后,dApp Plug-in会将转换好的资金和相关消息发送到目标链(标记B和C )。该消息说明了需要在目标链上执行的操作。在 这个DEX的例子中(https://github.com/celer-network/sgn-v2-contracts/blob/main/contracts/message/apps/TransferSwap.sol#L31),这个消息就是「将跨链的Token B换成Token C,然后将Token C发送给用户」。只需调用sendMessageWithTransfer(https://github.com/celer-network/sgn-v2-contracts/blob/main/contracts/message/framework/MsgSenderApp.sol#L36),消息和资金转账就会自动关联在一起(https://github.com/celer-network/sgn-v2-contracts/blob/main/contracts/message/apps/TransferSwap.sol#L175)。消息随后会被发送到Message Bus 合约(https://github.com/celer-network/sgn-v2-contracts/tree/main/contracts/message/messagebus),资金则通过一个资产跨链桥(比如cBridge)完成转移。

注意:在这种应用模式中,Celer IM是可以兼容其他资产桥的,以cBridge为例是因为cBridge是IM支持的第一个资产桥。

第 3 步:状态守卫者网络(SGN)传递消息和资金跨链请求

为帮助大家理解这一步,我们首先要介绍Celer IM中的一个核心组件:状态守卫者网络(SGN)。SGN 自身是建立在Tendermint上的一个权益证明 (PoS) 区块链,在IM架构下,它是不同区块链之间的消息路由器。节点提供者必须质押CELR才能成为验证者,加入SGN的共识过程。SGN使用的安全机制与Cosmos和Polygon PoS链等L1区块链相同。SGN的CELR质押和罚没机制都是在以太坊L1智能合约上实现的。

SGN质押节点会持续监控接入的所有链上发生的交易。当一笔交易在Message Bus合约中触发了一个含有预定 header-payload格式(https://github.com/celer-network/sgn-v2-contracts/blob/main/contracts/message/messagebus/MessageSender.sol#L15)的跨链消息事件时(标记D),验证节点将首先对「消息是否存在」达成共识,并同时生成一个加权多签证明。然后,这个证明就存储在SGN链上,等待订阅该消息的Executor中继到目标链上(标记 H)。

对于资产跨链,我们可以把cBridge合约看作一个自带资产跨链优化的Message Bus。SGN会进行与消息跨链类似的共识和证明过程(标记E)。但是资产跨链时,SGN验证者不会将内置的资产跨链证明中继到一个链下的Executor上,而是直接把链上交易发送给目标链上的cBridge合约(标记F),并触发资金转账,发给目标链上的dApp Plug-in合约(标记G)。再次想向大家强调的是,Celer IM是可以接入任何资产跨链桥的,但是首先默认支持了Celer的cBridge。

第 4 步:Executor执行跨链应用逻辑

Executor的任务是从SGN区块链读取加权多签证明,并简单将其中继到目标链上的Message Bus(标记 I)。任何人都可以为任何应用运行Executor,因为其功能只是中继消息。当然,dApp应该考虑给予Executor激励,因为负责发送交易并在目标链上支付gas费用的是Executor。

目标链上Message Bus的作用是检查证明消息的有效性,并确认dApp Plug-in确实收到了相关的付款(标记 J)。之后,Message Bus会将消息(逻辑执行指令)传递给承载dApp在目标链上跨链业务逻辑的dApp Plug-in合约上(标记 K)。

目标链上的dApp Plug-in只需要实现executeMessageWithTransfer(https://github.com/celer-network/sgn-v2-contracts/blob/main/contracts/message/framework/MsgReceiverApp.sol#L38)接口。在我们给出的DEX示例中, 这个函数(https://github.com/celer-network/sgn-v2-contracts/blob/main/contracts/message/apps/TransferSwap.sol#L197)将在目标链上执行「将Token B换成Token C」的逻辑。

不含资金转移的跨链逻辑

当然,发送跨链消息或逻辑执行指令并不一定伴随资金转移。例如,在NFT市场中,如果用户参与在其他链上的拍卖,不需要将资金实际转移到目标链,只需要在源链锁定资金,就可出价参与竞拍。只有在赢得拍卖后,用户才需要进行资金的跨链转移。

这种流程只是第一个模式的简化版本。dApp Plug-in 只需要在源链上实现逻辑调用sendMessage(https://github.com/celer-network/sgn-v2-contracts/blob/main/contracts/message/framework/MsgSenderApp.sol#L28),然后在目标链上的dApp Plug-in合约中实现executeMessage(https://github.com/celer-network/sgn-v2-contracts/blob/main/contracts/message/framework/MsgReceiverApp.sol#L52)。

故障处理

由于上述跨链消息模式的异步特性,应用逻辑应包含故障处理的考量。在这些应用模式中,故障可能发生在以下三个步骤中,应分别进行相应处理:

  1. 源链dApp逻辑执行失败。这与Celer IM无关,应由dApp业务逻辑本身处理。故障举例:DEX Token交换超过限定时间。

  2. 跨链桥资产跨链失败。源链dApp将通过一个通用接口得到通知,并应通过重试资产跨链或将资产发回给用户来处理退还的资产。

  3. 目标链dApp逻辑执行失败。当用户资金到达目标链时,目标链上的dApp逻辑执行仍有可能发生故障。dApp开发人员应有所准备,为应对此类故障实现一些回退函数。处理此类故障常见的方法有:停止执行逻辑,并将资金发送给目标链上的用户;或者将资金转回源链。但实现怎样的回退函数逻辑完全取决于dApp开发人员。

本文旨在抽象概括IM架构的设计和拆解,我们不会详细介绍故障处理的流程,但是会在开发文档(https://cbridge-docs.celer.network/developer/cbridge-sdk)中提供详细的设计模式参考。

链上价值累积和费用

从上面两种模型中,可以明显看到:Celer IM如果要顺利运行,SGN中的CELR质押者和验证者必不可少。

SGN在IM架构中发挥着达成源链消息共识、存储源链消息证明、实现资金跨链的作用。为了让SGN能够持续提供服务,与其他任何PoS区块链验证者的收费模式类似,使用Celer IM的用户也需要向SGN支付费用。费用本身会根据生成区块的SGN节点分配给 CELR质押者。

使用Celer IM搭建原生跨链dApp非常简单

在Celer IM架构中,不管是扩大现有dApp的市场规模,还是搭建一个全新的dApp,实现起来都很简单,只需要进行以下3个步骤:

首先,需要编写dApp Plug-in智能合约代码。在源链的智能合约接口中实现的逻辑只要能够表达跨链执行目的,并能在源链上调用sendMessagesendMessageWithTransfer即可;并且,也需要在目标链的dApp Plug-in合约中实现executeMessageexecuteMessageWithTransfer函数。

第二步是运行Executor。这一步骤不需要编写代码。dApp开发或社区成员都可以运行一个Executor, 并订阅SGN上生成的相关消息证明。

最后一步是进行UI/UX调整。由于应用现在具有的跨链逻辑可能会涉及多个交易,让用户了解一个跨链行为的不同状态自然非常重要。UI的具体展示当然取决于应用本身,但Celer IM提供了一个易于查询的网关服务,可以让dApp获取消息和资金跨链的状态,让dApp开发人员能够搭建一笔跨链交易的完整生命周期。

我们正在寻找dApp合作伙伴 ,一起构建Celer IM 的生态。Celer会为合作伙伴提供技术支持,我们也在设立专项资金支持,并会在后续提供更多细节。如果您有兴趣加入Celer IM生态,请与我们联系(https://form.typeform.com/to/LsetjLjC)!

新闻资讯