一文读懂Celer跨链消息框架:开发和使用多链应用的全新模式_DAP:区块链dapp开发教程

Celer跨链消息框架现已正式推出并上线测试网!

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

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

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

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

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

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

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

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

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

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

CelerIM框架非常易于使用,允许「即插即用」升级,不需要修改已部署的代码。例如,Uniswap和Sushiswap只需一个简单的插件合约就可以转变为原生跨链DEX。?

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

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

将USDT从Arbitrum桥接到BSC

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

CelerIM已经上线测试网,并且发布演示程序、开发文档、智能合约框架和示例应用程序代码。我们正在积极寻找开发者合作伙伴,共同打造功能强大、用户友好的原生跨链dApp。如果有兴趣合作,请与我们联络。

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

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

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

举一些例子。?

DEX

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

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

NFT市场

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

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

伴随资金转移的跨链逻辑

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

上面的流程图看起来虽然有些复杂,但其实大部分的流程是由CelerIM完成的,dApp开发人员只需要搭建IM架构应用模板中的两个简单函数。?

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

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

在展示的DEX示例中,transferWithSwap函数就是整个流程的起点,它允许用户表达跨链逻辑请求,比如「先在X链上将TokenA交换成TokenB,再在Y链上用换好的TokenB交换成TokenC」。

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

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

在完成源链上的必要操作后,dAppPlug-in会将转换好的资金和相关消息发送到目标链。该消息说明了需要在目标链上执行的操作。在这个DEX的例子中,这个消息就是「将跨链的TokenB换成TokenC,然后将TokenC发送给用户」。只需调用sendMessageWithTransfer,消息和资金转账就会自动关联在一起。消息随后会被发送到MessageBus合约,资金则通过一个资产跨链桥完成转移。?

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

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

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

SGN质押节点会持续监控接入的所有链上发生的交易。当一笔交易在MessageBus合约中触发了一个含有预定header-payload格式的跨链消息事件时,验证节点将首先对「消息是否存在」达成共识,并同时生成一个加权多签证明。然后,这个证明就存储在SGN链上,等待订阅该消息的Executor中继到目标链上。?

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

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

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

目标链上MessageBus的作用是检查证明消息的有效性,并确认dAppPlug-in确实收到了相关的付款。之后,MessageBus会将消息传递给承载dApp在目标链上跨链业务逻辑的dAppPlug-in合约上。?

目标链上的dAppPlug-in只需要实现executeMessageWithTransfer接口。在我们给出的DEX示例中,这个函数将在目标链上执行「将TokenB换成TokenC」的逻辑。

不含资金转移的跨链逻辑

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

这种流程只是第一个模式的简化版本。dAppPlug-in只需要在源链上实现逻辑调用sendMessage,然后在目标链上的dAppPlug-in合约中实现executeMessage。

故障处理

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

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

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

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

本文旨在抽象概括IM架构的设计和拆解,我们不会详细介绍故障处理的流程,但是会在开发文档中提供详细的设计模式参考。?

链上价值累积和费用

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

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

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

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

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

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

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

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

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:15ms0-5:622ms