【區塊鏈】區塊鏈跨鏈通信研究概述

區塊鏈跨鏈通信研究概述

跨鏈技術本質上是⼀種將A鏈上的數據D(或信息I,或消息M)安全可信地轉移到B鏈並在B鏈上產⽣預期效果的⼀種技術。因爲區塊鏈系統本來就是⼀種特殊的分佈式賬簿數據庫系統,所以這個轉移的數據,最常見的就是資產的數據,如代幣餘額。

目前,主流的區塊鏈跨鏈技術⽅案**按照其具體的兩種架構(實現⽅式)**主要有:

  • 公證⼈機制;
  • 哈希鎖定
  • 側鏈&中繼鏈
  • 分佈式私鑰控制。

⽬前,最有名的跨鏈項⽬有CosmosPolkadot,兩者採⽤的都是基於中繼鏈的多鏈多層架構。由此可⻅,側鏈&中繼鏈技術將會是未來跨鏈技術的主⼒

本⽂⾸先簡要介紹跨鏈的技術原理。其中簡要介紹公證⼈機制、哈希鎖定,詳細介紹側鏈&中繼鏈技術。然後將介紹⼏個相關的跨鏈項⽬,包括基於ETH的Plasma基於Polkadot的達爾文網絡基於Cosmos 的IRIS

公證人機制及哈希鎖定

跨鏈交互根據所跨越的區塊鏈底層技術平臺的不同可以分爲:同構鏈跨鏈和異構鏈跨鏈。同構鏈之間安全機制、共識算法、⽹絡拓撲、區塊⽣成驗證邏輯都⼀致,它們之間的跨鏈交互相對簡單。⽽異構鏈的跨鏈交互相對複雜,如Bitcoin採⽤PoW算法⽽Fabric採⽤傳統確定性共識算法,其區塊的組成形式和確定性保證機制均有很⼤不同,直接跨鏈交互機制不易設計。異構鏈之間的跨鏈交互⼀般需要第三⽅輔助服務輔助跨鏈交互

跨鏈要達到安全可信必然對跨鏈機制、步驟等有⼀些要求,其中最重要的就是跨鏈事務的原⼦性。對於普通的鏈內交易來說,交易需要⽀持原⼦性——交易如果失敗則需要回滾。⽽跨鏈的交易也是如此,其失敗時要回滾涉及本次交易兩條或多條鏈的交易。

1. 公證人機制(Notary Schemes)

公證人機制,也成爲見證人機制,是一種中介的方式。設區塊鏈A和B本身是不能直接進⾏互操作的,那麼可以引⼊⼀個共同信任的第三⽅作爲中介由這個共同信任的中介進⾏跨鏈消息的驗證和轉發。很多時候,這個公證⼈/中介就是交易所。其優點在於⽀持異構的區塊鏈跨鏈,缺點在於有中⼼化⻛險,只能實現交換不能實現轉移。
跨鏈交易示例說明

假設A和B進⾏1個BTC換50個ETH的交易:
1. A將自己的1個BTC存入交易所的比特幣地址;B將自己的50個ETH存入交易所的以太坊地址;
2. A在交易所上掛單:1 BTC for 50 ETH;
3. B通過交易所完成與A的交易,A得到50個ETH,B得到1個BTC。這裏會有不少的形式:一種是B掛出購買比特幣的單子,然後交易所撮合;另一種是B直接看到A掛出的賣單,然後直接要這個賣單。
4. A將從交易所得到的50個ETH提幣到自己的以太坊賬戶中;B將從交易所得到的1個BTC提幣到自己的比特幣賬戶;通過引入中介完成A和B的BTC和ETH的交換。

通過該例⼦可以看出交易所的⽅式⽬前僅能夠⽀持資產的交換,且資產交換的原⼦性、安全性完全由中⼼化的交易所保障,故存在⼀定的中⼼化⻛險。

2. 哈希鎖定(Hash-Locking)

哈希鎖定的典型實現是哈希時間鎖定合約HTLC(Hashed TimeLock Contract)。哈希時間鎖定最早出現在⽐特幣的閃電⽹絡。哈希時間鎖定巧妙地採⽤了哈希鎖和時間鎖,迫使資產的接收⽅在deadline內確定收款併產⽣⼀種收款證明給打款⼈,否則資產會歸還給打款⼈。收款證明能夠被付款⼈⽤來獲取接收⼈區塊鏈上的等量價值的數量資產或觸發其他事件。哈希鎖定只能做到交換⽽不能做到資產或者信息的轉移,因此其使⽤場景有限。
跨鏈交易示例說明

以公證人機制示例中的需求爲例:
1. A隨機構建一個字符串s,並計算出其哈希h;
2. A將h發送給B;
3. A通過合約鎖定自己的1個BTC資產,設置一個較長的鎖定時間T1,再設置了獲取該BTC的條件:B提供h的原始值s;
4. B鎖定50個ETH到自己的合約,設置一個相對較短的鎖定時間T2(T2<T1)。再設置50個ETH的獲取條件:A提供h的原始值s;
5. A將字符串s發送到B的合約獲得50個ETH;
6. B觀察到步驟5中A的s值,將其發送給A的合約成功獲取1個BTC;至此完成資產的交換。
7. 如果超時,則鎖定的資產返回原主。

從上述過程看,哈希時間鎖定合約有一些約束條件:

  • 雙方必須能夠解析雙方的合約內部數據,例如s、鎖定資產的證明等
  • 哈希鎖定的超時時間設置時需要保證存在時間差,這樣在單方面作弊時另一方可以及時撤回自己的資產。

側鏈/中繼鏈

什麼是側鏈?

最初,主鏈特指比特幣主網區塊鏈。所謂側鏈就是除了比特幣區塊鏈以外的,任何能遵循側鏈協議並和比特幣互通的一切區塊鏈。側鏈使得比特幣有更好的流動性;而在比特幣主網上開發應用很困難,現在通過在側鏈上開發應用再使用互通方式與主鏈連接可以解決這個問題,也就是間接使用了比特幣,從而進一步鞏固了比特幣的中心地位。

根據維基百科上的解釋:側鏈用來指代與主區塊鏈並⾏的那條區塊鏈。來⾃主區塊鏈的entries可以向側鏈連接,也可以被側鏈連接;這樣⼀來,側鏈就可以獨⽴於主區塊鏈進⾏操作(例如通過使⽤備⽤的記錄保持⽅式)。⼀個側鏈模型是驅動鏈。”
這裏包含三個要點:

  1. 側鏈是相對的。不能單純的說某條鏈B是側鏈,而必須說這條鏈B可以是鏈A的側鏈;
  2. 側鏈與主鏈是獨立的。鏈B可以有自己的功能,在它自己運行時不需要鏈A的支持。如果鏈B發生運行故障或被中心化控制,不會直接影響到鏈A本身的運行(但是可以間接影響,比如鏈B被控制後,鏈A還依舊與之交互);
  3. 側鏈與主鏈可以連接互通,即跨鏈。當要實現跨鏈的功能時才需要鏈B和鏈A進行互通。因爲側鏈的互通機制是其最主要的功能,所以常常將側鏈與主鏈的互通稱爲側鏈技術。至於側鏈本身是否包含在側鏈技術之中,還存在爭論。

側鏈的意義

從主鏈單鏈⻆度講,側鏈可以虛擬化橫向和縱向提升主鏈的性能。

  • 所謂橫向,就是將多個側鏈與主鏈互通,將⼤部分交易放到側鏈上,然後再通過與主鏈互通實現,可以虛擬地提升主鏈的TPS。
  • 所謂縱向,就是側鏈可以有主鏈不具有的功能,通過側鏈,主鏈看上去也像是⽀持了這些功能。
  • 所謂虛擬化,就是雖然有橫向和縱向的提升,但是主鏈本身並任何沒有變化,只是通過衆多側鏈幫其起到類似代理的作⽤,使其看上去性能提升。

從全局角度看,側鏈作爲跨鏈技術的一種,自然是爲萬鏈互連做出了重要貢獻。實現萬鏈互聯有兩者架構:

  1. 任何⼀條鏈,既有主鏈的功能,⼜有側鏈的功能(⼀些資料將擁有側鏈功能叫做遵循側鏈協議),這就像計算機⽹絡中任何計算機既是主機⼜是路由器。
  2. 只有特定的⼏條鏈作爲主鏈,其他所有鏈都只⽀持側鏈功能,就和現在的計算機⽹絡類似,有⽹絡核⼼部分——單純的路由器,也有⽹絡的邊緣部分——單純的主機。

側鏈技術

側鏈是通過雙向錨定技術實現的。將暫時的數字貨幣在主鏈中鎖定,同時將等價的數字資產在側鏈中釋放。實現雙向錨定的最大難點在於協議改造需要兼容現有主鏈,也就是不能對現有主鏈的工作造成影響。其具體的實現方式有:單一託管模式、聯盟模式、SPV模式、驅動鏈模式、混合模式。

  • 單一託管模式:類似交易所做中介完成鎖幣放幣。一種最簡單的實現主鏈與側鏈雙向錨定的方法就是通過將數字資產發送到一個主鏈單一託管方(類似於交易所),當單一託管方收到相關信息後,就在側鏈上激活相應數字資產。這個解決方案的最大問題是過於中心化
  • 聯盟模式:即公證⼈模式,由多個公證⼈的多重簽名來對轉移資產的交易進⾏簽名,避免了中⼼化。在這種模式中,如果要想盜竊主鏈上凍結的數字資產就需要突破更多的機構,但是側鏈安全仍然取決於公證人聯盟的誠實度
  • SPV模式:SPV(Simplified Payment Verification)模式是最初的側鏈白皮書《Enabling Blockchain Innovations with Pegged Sidechains》中的去中心化雙向錨定技術最初設想。==SPV是一種用於證明交易存在的方法,通過少量數據就可以驗證某個特定區塊中交易是否存在。==在SPV模式中,用戶在主鏈上將數字資產發送到主鏈的一個特殊的地址,這樣做會鎖定主鏈的數字資產,該輸出仍然會被鎖定在可能的競爭期間內,以確認相應的交易已經完成,隨後會創建一個SPV證明併發送到側鏈上。此刻,一個對應的帶有SPV證明的交易會出現在側鏈上,同時驗證主鏈上的數字資產已經被鎖住,然後就可以在側鏈上打開具有相同價值的另一種數字資產這種數字資產的使用和改變在稍後會被送回主鏈。當這種數字資產返回到主鏈上時,該過程會進行重複。它們被髮送到側鏈上鎖定的輸出中,在一定的等待時間後,就可以創建一個SPV證明,來將其發送回主區塊鏈上,以解鎖主鏈上的數字資產。SPV模式存在的問題是需要對主鏈進行軟分叉
  • 驅動鏈模式:驅動鏈概念是由Bitcoin Hivemind創始人Paul Sztorc提出的。在驅動鏈中,礦工作爲‘算法代理監護人’,對側鏈當前的狀態進行檢測。換句話說,礦工本質上就是資金託管方,驅動鏈將被鎖定數字資產的監管權發放到數字資產礦工手上,並且允許礦工們投票何時解鎖數字資產和將解鎖的數字資產發送到何處。礦工觀察側鏈的狀態,當他們收到來自側鏈的要求時,他們會執行協調協議以確保他們對要求的真實性達成一致。誠實礦工在驅動鏈中的參與程度越高,整體系統安全性也就越大。如同SPV側鏈一樣,驅動鏈也需要對主鏈進行軟分叉
  • 混合模式:上述所有的模式都是對稱的,而混合模式則是將上述獲得雙向錨定的方法進行有效的結合的模式。由於主鏈與側鏈在實現機制存在本質的不同,所以對稱的雙向錨定模型可能是不夠完善的。混合模式是在主鏈和側鏈使用不同的解鎖方法,例如在側鏈上使用SPV模式,而在主鏈網絡上則使用驅動鏈模式。同樣,混合模式也需要對主鏈進行軟分叉

這⾥SPV模式是使⽤得最多的,也是最有前途的。SPV就是簡單⽀付驗證(Simplifified Payment Verifification),其能驗證交易是否存在。

BTC-Relay是號稱的史上第⼀個側鏈,其通過以太坊構建了⼀個⽐特幣的側鏈,運⽤以太坊的智能合約允許⽤戶驗證⽐特幣的交易。
SPV交易示例

以之前的需求爲例
1 B將50個ETH發送到BTCSwap的合約進行凍結(該合約若確認B接收到來自A的1個BTC就自動將50個ETH轉給A)
2 A確認B凍結信息後,將1個BTC轉到B的比特幣賬戶;
3 BTC-Relay將比特幣區塊頭推送到BTCSwap合約;A將自己轉BTC給B的交易tx發給合約BTCSwap合約,請求50個ETH;
4 BTCSwap合約結合tx和比特幣區塊鏈進行SPV驗證,驗證通過則將50個ETH轉到A的以太坊地址。

側鏈的機制相對哈希鎖定⽽⾔能夠提供更多的跨鏈交互場景,側鏈以及類SPV驗證的思想適合所有跨鏈的場景。

中繼鏈

中繼鏈算是公證⼈機制和側鏈機制的融合和擴展,⽬前社區內最活躍的兩個跨鏈項⽬ Cosmos 和 Polkadot 採⽤的都是基於中繼鏈的多鏈多層架構,其中

  • Cosmos⽬前⽀持的是跨鏈資產交互;
  • Polkadot則宣稱提供任意類型的跨鏈交互,具體實現還有待觀察。

Cosmox的中繼鏈機制

爲了⽀持平⾏鏈之間的跨鏈操作,Cosmos提出了⼀種跨鏈交互協議IBC(Inter-Blockchain Communication Protocol)。

以鏈A到鏈B轉賬10token爲例說明使用IBC的跨鏈交互:
1 互相跟蹤。如果A要和B進行跨鏈交易,那麼A和B鏈需要分別運行相當於對方區塊鏈的輕節點,這樣可以實時接收到對方的區塊頭信息(方面後續執行類SPV驗證);鏈A、鏈B初始化IBC協議;
2 鏈A凍結10token,並生成相應的證明發送給鏈B;
3 鏈B接收到相應的IBC消息,通過鏈A的區塊頭信息確定鏈A確實進行相應的資產凍結,然後鏈B會生成等價10token的資產。

以上是使用IBC協議的兩個平行鏈直接進行跨鏈的基本過程,如果區塊鏈很多,那麼這種方式的兩兩跨鏈複雜度會呈現出組合級別增加,因此Cosmos網絡又引入一種Hub的中繼鏈,所有的平行鏈都通過IBC連接到Hub,讓Hub輔助跨鏈交易的驗證和資產轉移(因此,某鏈能與Cosmos體系中的鏈進行交互=某鏈能連接到Hub)。目前Cosmos實現了一個官方的Hub稱爲Cosmos Hub,如圖所示:
Cosmos Hub
另外,Cosmos網絡的詳細架構圖如下所示。⼀條鏈從層次結構上講,分爲⽹絡層、共識層、應⽤層爲⽅便平⾏鏈開發,Cosmos提供了tendermint core(簡稱tendermint)和Cosmos SDK(Go語⾔)。其中tendermint 是指⽹絡層、共識層的封裝,⽽Cosmos SDK是應⽤層中常⽤的模塊:賬戶、治理、Staking、IBC等等的封裝。因此,⾃⼰開發⼀條新鏈可以使⽤Cosmos SDK+ tendermint,並且由此開發出來的鏈能直接與 Cosmos Hub連接(Cosmos Hub⾃⼰本身也是⽤Cosmos SDK+tendermint開發的)。
Cosmos的詳細架構圖
⽽對於⾮Cosmos SDK開發的區塊鏈(如已經存在的這些區塊鏈),如果要與Cosmos體系中的鏈進⾏交互 (即能與Hub連接),需要使⽤Peg Zone進⾏橋接,所謂的Peg Zone就是使⽤Cosmos SDK開發的,既能接⼊Hub的,⼜能和原鏈進⾏交互的⼀條鏈。如圖中的Ethereum,如果要接⼊Cosmos Hub,則需要專⻔使⽤Cosmos SDK開發⼀條起Peg Zone作⽤的新鏈。

所謂Cosmos主⽹是指由Cosmos團隊⾃⼰開發的第⼀個官⽅版Hub,也就是不同鏈進⾏跨鏈操作時的第⼀箇中央樞紐。以太坊將是Cosmos最先連接的⾮Cosmos SDK開發的公鏈,⽬前有兩個項⽬去實現這種連接:Cosmos 開發團隊主導的Ethermint 項⽬,以及由 Loom Network主導的PlasmaChain。這兩個項⽬其實就是開發⼀個連接以太坊和Cosmos Hub的、起Peg Zone功能的⼀條鏈。

協議應該是各⽅達成共識的,上面說到的“側鏈協議”其實並不是真正的協議,因爲側鏈技術⽬前沒有像計算機⽹絡⼀樣有⼀些共識的協議,所以其實只能說是側鏈機制。⽽Cosmos爲跨鏈帶來的最⼤貢獻在於IBC協議的設計,IBC協議提供了⼀種通⽤的跨鏈協議標準。IBC的設計使得跨鏈交易可以在多個Hub之間進⾏安全路由和轉發,類似⽬前互聯⽹的TCP/IP 協議。但是遺憾的是⽬前的Cosmos設計也只能夠⽀持資產的跨鏈,⽽且由於不同區塊鏈的業務不同其共識速率的不⼀致也會影響跨鏈交易有效性的證明。這⾥只講了Cosmos的側鏈技術,關於Cosmos更多的內容,請看其他資料。

Polkadot的中繼鏈機制

Polkadot的平⾯體系結構下圖所示,其中有三種鏈⻆⾊和四種參與⽅。
Polkadot體系結構
三種鏈角色

  • 中繼鏈(Relay chain):中繼鏈位於Polkadot的體系的核心地位,主要是爲整個系統提供統一的共識和安全性保障;
  • 平行鏈(Parachain):在Polkadot中平行鏈負責具體的業務場景,平行鏈自身不具備區塊的共識,它們將共識的職責渡讓給了中繼鏈,所有平行鏈共享來自中繼鏈的安全保障,中繼鏈是Polkadot組成的一部分(中繼鏈有可能不是一條鏈,Polkadot對其定義是App的數據結構,因此可以是DApp甚至是一般的App;不過大部分情況下還會是一條鏈);
  • 轉接橋(Bridges):在Polkadot中轉接橋其實有三個含義,其中最重要的含義是:爲Polkadot體系之外的區塊鏈(如Bitcoin,Ethereum)提供不同的Bridge與Polkadot連接在一起進行跨鏈交互。三種鏈角色和Cosmos體系中差不多。

四種參與方

  • 驗證者(Validator):驗證者負責Polkadot的⽹絡出塊,會運⾏⼀箇中繼鏈的客戶端,在每⼀輪區塊產⽣中會對其提名的平⾏鏈出的塊進⾏覈驗。當平⾏鏈的塊都被他們的驗證者集合確定好之後,驗證者們會將所有平⾏鏈區塊頭組裝到中繼鏈的區塊並進⾏共識;
  • 收集者(Collator):也叫覈對⼈: 幫助驗證者收集、驗證和提交備選平⾏鏈區塊,維護了⼀個平⾏鏈的全節點;
  • 釣魚人(Fisherman):釣魚人主要靠檢舉非法交易或者區塊以獲取收益;
  • 提名人(Nominator):擁有stake的相關方,維護和負責驗證者的安全性。

下圖對這四種參與方進行了描述。整個過程是自動地、去中心化地執行。
四種參與方的詳細描述
用戶在平行鏈發起交易,交易被收集人收集,打包成區塊,交給一組驗證人去驗證。這組驗證人並不是來自平行鏈,而是來自中繼鏈統一管理的驗證人池,通過隨機分組指定給平行鏈。
每條平行鏈都有一個消息輸出隊列和一個消息輸入隊列。如果用戶發起的是跨鏈交易,交易就會被放進輸出隊列。再被目標平行鏈的收集人放入其輸入隊列。目標平行鏈的收集人執行交易,生成區塊,由驗證人組敲定。
提名人是Polkadot基礎通過DOT的持有者,它希望質押DOT獲得收益。但是要麼是因爲DOT數量少,要麼是缺少運行維護驗證人節點的專業技能。因此係統提供了另一個參與途徑,就是持幣者選擇它信任的驗證人,把自己的DOT通過驗證人質押,分享驗證人收益。
釣魚人是個軟件進程,它監控網絡上的非法行爲,一旦發現就會向區塊鏈提交舉報交易。舉報交易也要經過共識過程,通過2/3以上驗證人驗證,打包進區塊,懲罰和獎勵也都是區塊鏈交易。

在Polkadot中如果Parachain A需要發送一筆交易到Parachain B的過程如下:

  • 鏈A將跨鏈交易放到自己的消息輸出隊列engress;
  • 鏈A的Collator收集鏈A的普通交易以及跨鏈交易並提交給鏈A的驗證者集合;
  • 鏈A的驗證者集合驗證成功,將本次鏈A的區塊頭信息以及鏈A的engress內信息提交到中繼鏈上。中繼鏈運行共識算法進行區塊確認以及跨鏈交易路由,中繼鏈上的驗證者會將鏈A的相應交易從鏈A的engress queue中移動到鏈B的消息輸入隊列ingress queue中;
  • 鏈B執行區塊,將ingress queue中相應交易執行並修改自身賬本。

以上便是Polkadot跨鏈交易的主要步驟。Polkadot爲應用鏈提供的工具是Substrate,目前支持Rust語言開發。

參考資料

  • https://mp.weixin.qq.com/s/X7ztDBG6kqgrBaGwrrsfQw
  • https://www.jianshu.com/p/233657a2a205
  • https://www.jinse.com/blockchain/189868.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章