Celer 跨鏈消息框架:开發和使用多鏈應用的全新模式

2022-01-14 21:01:53

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框架非常易於使用,允許 「即插即用」升級,不需要修改已部署的代碼。例如,Uniswap和Sushiswap只需一個簡單的插件合約(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 跨鏈消息框架:开發和使用多鏈應用的全新模式

上面的流程圖看起來雖然有些復雜,但其實大部分的流程是由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市場中,如果用戶參與在其他鏈上的拍賣,不需要將資金實際轉移到目標鏈,只需要在源鏈鎖定資金,就可出價參與競拍。只有在贏得拍賣後,用戶才需要進行資金的跨鏈轉移。 


      Celer 跨鏈消息框架:开發和使用多鏈應用的全新模式

這種流程只是第一個模式的簡化版本。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)!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

推薦文章

Lumoz开放esMOZ空投查詢並公布空投規則

Lumoz 空投正式來臨。 在過去兩年中,社區與 Lumoz 攜手度過了多個重要階段: Pre-A...

星球日報
5 4小時前

Solana基金會Matt Sorg&OKX Web3:Solana帶來巨大創新|开發者物語04

Solana 網絡以及其生態交易工具,成為推動本輪「Memecoin 超級周期」的重要基礎。Sol...

星球日報
4 4小時前

美國大選,加密行業的命運分叉口

無論下周的總統大選結果如何,SEC 很可能會迎來新主席。傳統上,SEC 主席通常會在新總統上任時辭...

星球日報
5 4小時前

揭祕Scam-as-a-Service:警惕釣魚攻擊的產業化

2024年6月开始,CertiK安全團隊監控到大量相似的phishing/drainer tran...

CertiK
5 4小時前

專訪頂級交易員Nachi:大選前夜,Binance排名前10的交易大師如何看待加密後市?

許多人渴望成為職業交易員,然而大多數交易者往往因交易心態失控、倉位管理不當而最終滿盤皆輸。在盈虧不...

律動BlockBeats
5 4小時前

Meme熱潮,VC的新战場,機遇還是陷阱?

TL;DR 1、Meme 經歷了 2013 年至 2019 年的緩慢萌芽階段,隨後 2020 年至...

星球日報
6 4小時前