WeCross跨鏈協作入門教程 | Meetup回顧+演講PPT下載

買賣虛擬貨幣

3月31日,我們聯合FISCO BCOS開源社羣首次嘗試線上Meetup,微眾銀行區塊鏈高階架構師莫楠精心準備了一場零基礎入門跨鏈的分享,透過“哪些領域需要跨鏈協作”、“我們為什麼這麼設計WeCross”、“WeCross怎麼快速用起來”三個開發者極其關心的問題,以通俗理論配套實操演示,助力快速掌握跨鏈技術。

直播間討論非常熱鬧,小夥伴們對跨鏈技術的熱忱頗讓我們感動。我們繼續秉持開源開放的心態,分享演講PPT供大家繼續研究。直播過程的精彩內容和大家提出的典型問題,我們在本文進行精心整理,歡迎轉發給更多人一起學習。

四大應用場景啟迪跨鏈靈感

可用於司法存證跨域仲裁

聯盟鏈多中心和不可篡改的特性,天然吻合存證場景,甚至可以把區塊鏈本身視為一個天然的存證平臺,因而區塊鏈存證應用非常廣泛,全國各地的存證鏈多如牛毛。

各地存證鏈在地域上、業務上是分離的。各城市司法機構的案件和證據,常規情況下沒有交集,彼此資料無法互通互信,當面臨一些需要異地取證、聯合舉證或是聯合仲裁的案件審判時,不僅需要耗費大量人力和時間在多地進行資料驗證和比對,還需要引入一箇中心化的可信機構來進行協調。若是涉及的存證鏈使用的底層框架不同,那要進行異地取證或是聯合舉證,可就更加困難了。

WeCross針對這類司法存證場景提供了有效解決方案,可以幫助司法機構一鍵從不同地區的多條鏈中同時取證,並且保證證據的可信和完備。

可用於數字資產可信交換

多元化的數字資產場景和區塊鏈應用帶來了區塊鏈資產相互隔離的問題,不同數字資產業務彼此搭建的區塊鏈上的數字資產無法安全可信地實現互通。

WeCross的兩階段事務模型和HTLC事務模型支援數字資產的可信轉移,加密和准入機制保障數字資產轉移的安全。

可用於個體資料跨域授權

微眾銀行區塊鏈在個人授權和認證方面,開源了分散式身份解決方案WeIdentify,可承載實體物件(人或者物)的現實身份與鏈上身份的可信對映、以及實現實體物件之間安全的訪問授權與資料交換。方案在澳門政府的智慧城市建設中成功應用,為澳門電子政務服務提供技術支援。

隨著WeIdentify方案的普及推廣,未來其他城市也將部署相應的身份鏈,且在身份認證領域,Hyperledger Indy也做了一些實踐,不同鏈間存在跨地域、跨技術框架的資料互通需求。這時,WeCross也能發揮作用。

可用於物聯網跨平臺聯動

物聯網並非一個新概念了。2005年,隨著感測器、小型數碼裝置等產品的發展,以及一些RFID的應用,大眾對物聯網已經有一定認知。

隨著時代的發展,物聯網的概念也在不斷髮生變化,嚴格意義上來說,其實是一個不斷往舊瓶裝新酒的過程。最初,物聯網和RFID繫結在一起。IPv6出現後,物聯網和IPv6龐大的地址空間相結合,做一些裝置的標識。大資料火了起來以後,物聯網又能跟大資料結合,做到資料互聯、人與人或物與物的互聯。當前,物聯網又可以和區塊鏈結合。

為什麼會有這種情況呢?因為物聯網本身是一個很大很廣的概念,從定義上可以看到,基本上,人與物、物與物之間的聯動都是物聯網,包括一些智慧家居自動駕駛,都是物聯網具體的應用。

物聯網跟區塊鏈有什麼結合點呢?當下,物聯網裝置越來越多,拿一個家庭來說,可能會有攝像頭、門鈴感測器等裝置,它採集的是使用者的隱私資料,這些隱私資料需要授權和保護。物聯網與區塊鏈聯動,可以將資料上鍊,對資料進行認證和授權。

物聯網的特點是小而多。拿我家舉例,WiFi的智慧開關特別多,可能有20~30個,類似這樣數量級別的物聯網裝置,用一條區塊鏈去承載的話,壓力很大。我們可以根據不同場景、不同裝置分成多條區塊鏈後進行互聯,並透過跨鏈的互動,來滿足物聯網裝置多樣融合的需求。

應用場景小結

上述幾個場景示例可以總結出一些結論:

現有的區塊鏈是分散在不同地域、不同行業、不同領域的,分散的區塊鏈之間,本身有互聯互通需求,需要使用跨鏈。

一條區塊鏈承載的容量有限,特別是聯盟鏈,往往受制於類似PBFT或者Raft的共識機制,無法承載海量資料,需進行一些平行擴充套件、橫向擴充套件,將資料分散到多條區塊鏈上,然後在多條區塊鏈上做資料互動。跨鏈可以滿足同構區塊鏈平行擴充套件後的可信資料交換需求。

4S原則應對跨鏈挑戰

WeCross設計理念

WeCross的設計理念主要體現四個方面,要做高效能、安全可信、可橫向擴充套件和方便好用的跨鏈平臺,歸結起來就是我們提出的“4S”原則了。

WeCross體系抽象

基於上述原則,我們對跨鏈體系和架構的理解分為四個層次(如下圖)。

資料層:我們把區塊鏈上的一些資訊和資料抽象為區塊鏈資源。區塊鏈資源可以指代智慧合約資產或者是資料庫通道這樣的資料。對於區塊鏈結構,我們抽象為一種通用區塊資料結構;鏈上資訊和資料要定址的話,則抽象出一種叫做定址協議的概念。

互動層:互動層由區塊鏈介面卡、網路互聯以及交易驗證所組成。區塊鏈介面卡用於適配不同區塊鏈,而網路互聯則方便不同區塊鏈之間互動資料以及進行互聯。交易驗證保證我們在不同鏈上的資料是可信且不被篡改的。

事務層:事務層是基於資料結構和互動的抽象層,實現跨鏈事務效果。它保證兩個區塊鏈之間關聯的交易要麼同時發生,要麼同時結束,不可能出現一個成功或者一個失敗的情況。對於事務的實現,WeCross支援業界主流的兩種事務實現方式:兩階段事務、雜湊時間鎖定。未來,我們還將依據場景需求設計更多事務機制。

治理層:作為更高的管理層級,治理層對區塊鏈准入許可權等作控制,支援區塊鏈的監管審計。

WeCross系統架構

WeCross 的跨鏈系統架構設計充分考慮跨行業、機構和地域的多區塊鏈互聯,無論是新部署的區塊鏈平臺還是已有的區塊鏈平臺,都可以基於上一節中的區塊鏈體系抽象,在不改動原有區塊鏈平臺底層的前提下,無縫接入 WeCross 平臺。

上圖所示就是典型的跨鏈架構,共有三條區塊鏈:存證鏈A、存證鏈B和費用鏈C,而使用者甲、乙、丙則是三個區塊鏈系統的使用者,他們各自部署一個區塊鏈。在WeCross系統架構中,每個獨立的跨鏈路由連線各自對應的區塊鏈,例如,跨鏈路由A連線區塊鏈A,跨鏈路由B連線區塊鏈B,以此類推。

透過P2P連結、網路連線,跨鏈路由之間可同步區塊鏈上的智慧合約與資源資訊。我們可以看到,區塊鏈B上有一個結算存證資源,這其實就是抽象出的一個智慧合約概念。當使用者呼叫區塊鏈B上的資源時,A會將該使用者的請求傳送到跨鏈路由A,再由跨鏈路由A把請求轉發到跨路由B。透過存證鏈B的介面卡,跨鏈路由B將請求轉化成區塊鏈B的交易傳送到區塊鏈B,最終完成這個操作。

WeCross可信互動流程

在介紹WeCross的可信互動流程之前,先將剛才的架構分別放置在兩個機構中。

當使用者將交易傳送到跨鏈路由A後,跨鏈路由A會將交易透過P2P網路傳送給跨鏈路由B,收到交易後,跨鏈路由B會對交易做身份和許可權的校驗,並且把交易轉化為區塊鏈B的交易傳送上鍊並接受交易回執。

除此之外,跨鏈路由B還會從區塊鏈B處獲取交易和回執的默克爾證明,以此證明交易確實存在於區塊鏈B。完成這些之後,跨鏈路由B會將交易回執和交易回執的默克爾證明返回給跨鏈路由A,再由跨鏈路由A校驗之後返回給使用者。

整個交易流程確保了來自區塊鏈B的資料不被篡改與偽造。

WeCross核心技術

為了實現跨鏈互動的高效可用、安全可信和便捷治理,WeCross 基於區塊鏈體系的抽象、跨鏈系統的架構和可信互動流程的頂層設計,提煉四個技術點,以實現跨鏈的核心功能,它們分別是通用區塊連結口、異構鏈互聯協議、可信事務機制與多邊跨域治理。

首先說說通用區塊連結口。

我們可以將通用區塊連結口理解為不同區塊鏈之間溝通的通用語言,例如,我們與外國人溝通,中文與英文字身不互通,但如果其中一方會說對方的語言,就可以溝通協作了。為了方便區塊鏈之間的“交流”,我們設計了“統一資源正規化”的概念,即提出了一種包括資料介面、呼叫介面和事件介面的資源概念。在常見的區塊鏈應用中,使用者使用區塊鏈首先不外乎就是從區塊鏈上找到某個特定資源,這個特定資源可以是智慧合約、使用者的資產等,然後對這個資源進行呼叫操作。

如果我們將資源的資料介面和呼叫介面都抽象了,那使用者就可以透過“統一資源”的概念去呼叫。比如,透過FISCO BCOS 的Solidity去呼叫Hyperledger Fabric chaincode。因為兩者本質上都是對合約和方法的呼叫,傳入的引數和返回值具備一致性,因此,我們可以用資源對兩者做統一抽象與呼叫。

最終,當使用者使用WeCross呼叫某個區塊連結口或資源時,他不需要關心具體的區塊鏈底層架構,只需用WeCross的資源介面,開發一次區塊鏈邏輯,就可適配不同區塊鏈。這裡的另一個概念是抽象區塊結構。除了資源和智慧合約,區塊也是區塊鏈中很重要的概念,雖然市面上區塊鏈、聯盟鏈的架構和結構都不一樣,比如FISCO BCOS是用RLP編碼,Hyperledger Fabric則是用Protocol Buffer編碼,但這些區塊鏈也具有共同的特性。例如,所有的區塊鏈裡都有區塊高度、區塊雜湊等。

我們將區塊鏈平臺的欄位統一提取出來,組成統一格式的“抽象鏈”概念。透過這個統一格式的抽象鏈,我們可以驗證不同區塊鏈的區塊資料結構、區塊是否合法、當前區塊高度等資訊,還可以提取用於驗證的Merkle證明資料。

第二項核心技術是異構鏈互聯協議。

解決了區塊鏈資源介面的抽象與區塊鏈結構的抽象後,就要想辦法讓不同區塊鏈之間進行互動。WeCross的方式是組建一個P2P網路,透過這個網路傳輸、中轉區塊鏈間的交易和資料等資訊,為了實現這個效果,我們使用了通用接入正規化與跨鏈互動模型兩項技術。通用接入正規化可理解為通用區塊連結口的一種具體實現。

WeCross本身就是一個外掛化架構,不同區塊鏈可透過外掛接入到WeCross中,透過一系列抽象介面適配具體區塊鏈。比如,WeCross在支援FISCO BCOS時,設計有一個FISCO BCOS外掛,第三方使用者包括WeCross使用者,可按照規範和指南開發類似的外掛來支援不同的區塊鏈。

關鍵的一點是,WeCross對任何聯盟鏈、區塊鏈的適配都是非侵入式的,也就是說,WeCross不對原有區塊鏈做任何滲透修改,就可以適配和接入。

完成適配和接入後,我們需要引入一種跨鏈互動模型,這也是前面提到的WeCross主體架構。它的核心思路是跨鏈路由間組成一個P2P網路互動鏈上資訊,這樣就能做到把不同區塊鏈連線在一起。

多個區塊鏈之間光是能通訊或是能互動,是無法滿足真實的業務需求的。

以網購舉例,買東西通常都是一手交錢一手交貨。交錢和交貨其實是兩個動作,在區塊鏈世界裡,交錢可能發生在資金的區塊鏈上,交貨可能發生在物流的物品鏈上,而交錢相當於在資金鍊上發生了一筆交易,交貨則是在物品鏈上發生了另外一筆交易。

這兩條交易必須是原子事務,即這兩個動作必須同時成功或者同時失敗,否則就可能出現錢交了,貨沒到手,或錢沒交,貨卻到手的情況。針對這種場景,WeCross提供了可信事務機制。

可信事務機制基於兩項基礎技術,資料互信機制與跨鏈事務機制。

資料互信機制依賴默克爾證明技術,這是一種經典技術,現在FISCO BCOS和很多聯盟鏈平臺都支援。它本身是樹狀資料結構,對內部資料進行樹狀和邏輯關係證明。它能達到兩個區塊鏈之間無法互相偽造或篡改的效果。跨鏈事務機制就是保證兩個區塊鏈上關聯交易操作的原子性和事務性。

WeCross支援兩種跨鏈事務機制實現。一種是兩階段事務機制,它是大家所熟悉的比如Mysql這樣的資料庫做分散式事務的首選,優勢是通用性好,能適用於任何場景。另一種是雜湊時間鎖定,各位如果對閃電網路或者雷電網路這樣的工業專案有所瞭解,就會很熟悉雜湊時間鎖定,它是一種專門用於數字資產間的事務機制,基於抵押模式實現,尤其適合數字資產交換。

這兩種事務機制WeCross都支援,大家可以根據PPT裡的簡單時序圖,瞭解實現的效果是讓兩個區塊鏈上關聯的交易同時發生、同時失敗,理解到這個就可以了。

多邊跨域治理所面向的場景不僅侷限於兩個區塊鏈之間。

雖然WeCross支援多個區塊鏈間的互動,但隨著區塊鏈數量增長,區塊鏈間兩兩互聯的連線數量也會成倍增長。

多邊跨域治理提出治理鏈的概念,一方面可中轉多個區塊鏈之間的跨鏈訊息,另一方面提供了一些許可權控制、事務管理以及監管准入的功能,監管機構可以透過治理鏈來介入和監管各個鏈間的互動。

WeCross核心優勢首先,WeCross是開源開放的,遵循微眾銀行“把原始碼丟出去,把信任建起來”的理念,所有原始碼全部開源。基於透明的技術和理念,所有參與者都能檢閱我們的程式碼,理解其實現,杜絕惡意作惡的情況。

WeCross對開發友好。實現了多語言版本SDK,並提供互動式控制檯。即便不會寫程式碼,使用者也可透過控制檯進行跨鏈邏輯操作和驗證。瀏覽器也在WeCross的計劃中,未來使用者可透過瀏覽器,點選滑鼠就可輕鬆管理多個區塊鏈。

跨鏈和區塊鏈底層在安全可信上,保持同樣的高要求,WeCross為安全可信做的措施包括:加密:WeCross所有跨鏈資訊的互動都是加密的。准入:參與跨鏈的任何區塊鏈的資源資訊,都需要配置訪問許可權,許可權的配置精確到資源和使用者粒度。隔離:跨鏈互動所需要傳輸的資料遵循最小化原則,只傳輸跨鏈相關的必要資料,不會額外傳輸任何其它敏感資料。多個區塊鏈之間沒有直接連線,跨鏈路由嚴格控制各個跨鏈互動過程,防止資料未經授權地洩露,保證資料隔離。追溯:所有的跨鏈事務操作,其輸入輸出和完整的執行記錄都會在跨鏈路由或治理鏈鏈上儲存,一旦事務異常或是遇到惡意操作,可以回滾並還原現場,追溯整個事務的過程,檢查事務的失敗原因。

互信:所有經由跨鏈路由傳輸的交易和回執,都需要默克爾證明並由雙方的跨鏈路由驗證,這使得跨鏈路由無法擅自偽造和篡改區塊鏈的資料,保證跨鏈互動的互信互通。

基於FISCO BCOS的實操演示

WeCross的程式碼已經正式開源,大家可以在程式碼倉庫下載最新程式碼,檢視技術文件。

github程式碼倉庫:

https://github.com/WeBankFinTech/WeCross

gitee高速映象:

https://gitee.com/WeBank/WeCross

環境需求

WeCross對環境的需求如表所示,總體而言,對伺服器環境、磁碟和網路的要求均不高。

作業系統目前支援Linux Kernel 2.6或以上,我們建議的作業系統最好是Ubuntu16.04或Centos7.3以上。WeCross基於Java開發,要求Java的執行環境。

已支援的區塊鏈底層框架

透過開源共建的方式,WeCross會逐步對接更多的區塊鏈平臺和應用,歡迎社羣積極參與貢獻。

元件構成

實操演示如何快速支援多個區塊鏈

此部分以FISCO BCOS為例,演示【搭建FISCO BCOS區塊鏈→→啟動區塊鏈→→使用控制檯,在區塊鏈上部署合約→→拉取WeCross專案→→構建WeCross→→搭建WeCross→→WeCross Stub建立→→Stub連線和證書配置→→P2P與RPC配置→→檢視WeCross日誌→→傳送交易】的操作流程。

相關解析已在演講PPT中增補註釋,步驟涉及較多程式碼,為方便學習,請直接下載演講PPT檢視。

演講PPT下載:關注本公眾號,對話方塊回覆【0331】獲取

直播互動精選

小夥伴討論熱情高漲,因篇幅有限,這裡僅選取部分高頻問題進行分享。我們建設有不打烊的【微眾銀行區塊鏈交流群】,歡迎大家入群和我們深度交流。

入群方式:本公眾號對話方塊回覆【小助手】

Q:這個專案的目標區塊鏈只能是聯盟鏈嗎?

A:是的,目前不支援公鏈。

Q:跨鏈操作涉及的鏈回滾問題是如何解決的?

A:如果在跨鏈事務中,某個區塊鏈的交易發生了回滾,WeCross會按照跨鏈事務的機制對整個事務中的其它區塊鏈進行回滾處理,具體的回滾方式與事務機制有關,兩階段事務中是向其它區塊鏈傳送rollback交易,HTLC事務中是讓其它區塊鏈超時。

Q:WeCross的賬戶系統和底層原生鏈的賬戶系統是什麼關係?

A:WeCross的賬戶用於向區塊鏈傳送交易,與原生鏈的賬戶是等同的。

Q:WeCross更像是高安全可信的跨鏈閘道器嗎?實現同構和異構鏈之間的鏈互動,WeCross屬於中繼跨鏈還是側鏈?

A:可以這麼理解,WeCross兼具中繼鏈與側鏈的模式。

Q:WeCross怎麼多鏈鎖定?

A:透過事務機制,向多個區塊鏈傳送lock交易。

Q:跨鏈系統的安全性是怎麼設計的?如果受到攻擊在跨鏈的時候,會影響其他區塊鏈嗎?

A:WeCross的跨鏈事務在兩個區塊鏈間發生,不涉及其它未參與事務的區塊鏈,當任一個區塊鏈出現異常時,僅影響與該鏈正在進行事務操作的區塊鏈。

Q:跨鏈路由,在新鏈加入的時候或者舊鏈退出的時候,怎麼更新跨鏈路由?這之間有同步機制?

A:跨鏈路由間有定時的自動狀態同步和更新機制。

Q:WeCross異構鏈A機構怎麼保證B機構不惡意篡改A合約上某人的資產呢?

A:WeCross跨鏈路由間有許可權控制。

免責聲明:

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

推荐阅读

;