跨鏈有什麼用?一文讀懂跨鏈閘道器的設計理念

買賣虛擬貨幣

跨鏈有什麼用?跨鏈閘道器在跨鏈體系中,是一個對接具體型別區塊鏈以及轉發跨鏈訊息的重要組成部分。它主要提供了應用鏈適配、跨鏈交易監聽、跨鏈交易執行、跨鏈交易路由等核心功能。本文主要從跨鏈閘道器的架構、跨鏈交易流程以及應用鏈和跨鏈閘道器解耦方式等方面介紹跨鏈閘道器的設計理念。

一、整體架構

跨鏈閘道器的整體架構如下圖所示:

考慮到不同場景下的跨鏈需求,跨鏈閘道器可以靈活支援兩種跨鏈模式。一種是中繼模式,也就是透過中繼鏈來進行跨鏈操作,比較適合較多區塊鏈進行跨鏈互操作的場景。另一種是直連模式,能夠直接連線到其他跨鏈閘道器,進行跨鏈交易的傳遞,比較適合鏈對鏈的小型跨鏈系統。為了支援不同跨鏈模式之間的切換,跨鏈閘道器採用瞭如下分層的設計。

第一層是應用鏈層:該層負責和應用鏈及其智慧合約進行互動邏輯,為上層的互動提供統一的互動介面。由於區塊鏈的架構因鏈而異,為了讓應用鏈適配和跨鏈閘道器能夠解耦,達到便捷接入的效果,我們採用了外掛機制。

第二層是互動層:這一層包含了如何提交IBTP包以及如何監聽應用鏈上的跨鏈交易等具體邏輯。互動層處於跨鏈閘道器中的底層,包括執行模組和監聽模組。互動層向上層模組遮蔽了跨鏈交易從應用鏈獲取和提交的細節,提供了更精簡的互動介面。

第三層是中繼層:該層作為跨鏈閘道器中訊息流轉的中轉排程層,從應用鏈上來的跨鏈訊息和從其他區塊連結收的跨鏈訊息都統一透過該層進行相應的處理和路由。中繼層主要能夠遮蔽不同跨鏈模式下的複雜性,統一呼叫底層的模組。

二、跨鏈交易處理流程

在一個典型的跨鏈交易流程中,在應用鏈A上的使用者發起了一筆傳送到應用鏈B的跨鏈交易,應用鏈B上執行完成後返回回執到應用鏈A。以下按照整個流程的順序詳細介紹跨鏈閘道器在整個流程中的處理細節。

監聽交易

跨鏈交易由使用者發起,呼叫部署在應用鏈A上的跨鏈合約。跨鏈合約在收到跨鏈交易的請求後,丟擲一個特定格式的跨鏈事件。由相應的應用鏈外掛輪詢或者訂閱該跨鏈事件,並收集應用鏈A上對於該跨鏈事件的Proof資訊(比如在Fabric中的背書資訊),隨IBTP包一起傳送到跨鏈閘道器的監聽模組上。

監聽模組對於跨鏈交易做基本的檢查操作(比如跨鏈交易序號的檢查),檢查透過的跨鏈交易才能提交到分發模組。如果跨鏈交易有問題,執行相應的的回滾操作。

分發交易

收到監聽模組提交的跨鏈交易後,由於跨鏈閘道器支援不同的跨鏈模式,所以分發模組需要統籌負責跨鏈交易具體的傳遞物件。

在中繼模式下,分發模組將跨鏈交易透過直接和中繼鏈的代理模組傳送跨鏈交易。在直連模式下,可以透過P2P網路連線到其他應用鏈的跨鏈閘道器(在示例流程中,應用鏈B的跨鏈閘道器)併傳送相應的跨鏈交易。

同步交易

不同跨鏈模式下,同步交易的方式也不同。

在中繼鏈模式下,跨鏈交易參與共識,並且打包進區塊中。所以同步交易時候,需要中繼鏈輕節點模組不斷同步更新區塊頭資訊。同步模組則是同步中繼鏈區塊中和自身跨鏈閘道器相關的所有跨鏈交易(應用鏈B的跨鏈閘道器同步和B相關的跨鏈交易)。對於中繼鏈同步的交易,還需要配合輕節點對跨鏈交易進行SPV驗證,確保跨鏈交易的有效性。

在直連模式下,跨鏈閘道器透過P2P網路接收跨鏈交易(應用鏈B的跨鏈閘道器接收應用A的跨鏈閘道器傳送過來的跨鏈交易)。

檢查交易

對於同步自其它鏈的跨鏈交易,都需要透過檢查模組的檢查才能交給分發模組進行下一步的處理。檢查的邏輯和跨鏈的模式相關。

在中繼模式下,跨鏈交易已經透過了中繼鏈的驗證引擎,並且參與過中繼鏈的共識,所以檢查模組只需要驗證跨鏈交易確實來自於中繼鏈即可。而在中繼鏈上,對於透過共識的跨鏈交易,中繼鏈節點會對其進行簽名。檢查模組對於附帶的簽名進行驗證即可驗證跨鏈交易的有效性。

在直連模式下,跨鏈交易是透過P2P網路獲取的跨鏈交易,所以相比中繼模式,檢查模組需要承擔更多的驗證工作。主要需要檢查的有應用鏈的註冊檢查,驗證引擎的驗證檢查等。如果應用鏈需要定製化跨鏈交易的驗證規則,後續可以透過更新驗證規則的方式更加動態的進行。

執行交易

來自中繼鏈或者其他跨鏈閘道器的跨鏈交易,透過檢查模組的檢查後,就可以提交到執行模組。執行模組直接和應用鏈外掛對接,在呼叫跨鏈合約之前,需要檢查序號以防止重放攻擊。

提交交易之後,執行模組需要等待應用鏈上執行的結果,並將結果透過跨鏈回執的方式返回給分發模組,跨鏈回執的傳遞流程和跨鏈交易類似。執行模組要保證跨鏈交易提交到了應用鏈上,並且需要返回相應的回執資訊。

三、外掛機制

對於跨鏈場景來說,一個比較棘手的問題是不同架構的區塊鏈的接入適配。為了簡化不同區塊鏈的適配問題,我們在跨鏈閘道器中採用了外掛機制。跨鏈閘道器主要負責與中繼鏈或者其他跨鏈閘道器的互動和通訊。而所有具體在應用鏈上進行操作的部分全部封裝到應用鏈外掛中,並按照跨鏈閘道器和應用鏈互動的需求確定了一套適合跨鏈互動的外掛介面。

這樣對於跨鏈閘道器來說,對接任何新的型別的應用鏈的時候,都不需要修改自身,而是根據確定的介面開發一個新的應用鏈外掛即可。

外掛需要提供的介面主要分為以下四個主要部分:

1.提交交易介面

跨鏈閘道器提交IBTP包的介面。跨鏈閘道器和應用鏈外掛互動的基礎是IBTP:跨鏈閘道器向外掛提交的IBTP包,得到的回執資訊也是IBTP包。這樣外掛向跨鏈閘道器遮蔽了不同區塊鏈交易結構不一致的複雜性,簡化了跨鏈閘道器的設計。

應用鏈外掛負責解析IBTP包,並轉換為適配應用鏈提交交易的結構。同時也要對於得到的執行結果進行封裝,同時從應用鏈獲取對於改跨鏈交易的Proof資訊。

2.查詢跨鏈交易元資訊介面

IBTP協議層面,協議能夠感知的最小粒度是應用鏈。協議只能讓跨鏈交易轉發到IBTP包中目的鏈ID所對應的跨鏈閘道器。對於更細粒度的鏈上合約和使用者賬號地址等,在應用層中對IBTP的payload欄位中自行解析和定義業務結構。

所以跨鏈合約需要記錄的是自身應用鏈與其他鏈的最新交易序號資訊(即為跨鏈交易的元資訊),並且在執行跨鏈交易時更新這些元資訊。因為這些元資訊對於跨鏈閘道器重啟恢復來說至關重要,所以外掛需要提供一個能夠查詢這些元資訊的介面。

3.查詢歷史交易資訊

對於應用鏈丟擲的跨鏈事件,可能會因為網路抖動或者跨鏈閘道器宕機等不可控原因,導致部分跨鏈事件沒有及時收到。這種情況下,外掛需要提供查詢遺漏的跨鏈事件的介面,用於跨鏈閘道器恢復跨鏈閘道器處理跨鏈事件的順序。

4.查詢應用鏈基礎資訊

跨鏈閘道器對於使用應用鏈外掛是無感知的,所以如果如果跨鏈閘道器需要獲取應用鏈的基礎資訊(如應用鏈型別,共識演算法型別,應用鏈名稱等)時,需要嚮應用鏈外掛查詢。

滿足上面四個要求的外掛能夠滿足跨鏈閘道器收集轉發跨鏈交易的需要,同時能夠充分解耦跨鏈閘道器對於底層應用鏈的依賴,讓適配新型別的區塊鏈變得更加便捷和簡單。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;