深度解析區塊鏈架構、跨鏈和演進

本文根本上介紹區塊鏈的架構內涵,先概括區塊鏈的本質,以發展的眼光給出一個區塊鏈的高階架構,並對高階架構的各個模塊進行詳細的說明。

深度解析區塊鏈架構、跨鏈和演進

本文是基於作者近幾年來對各種區塊鏈平臺理念和技術的研究,結合作者過去十多年IT架構經驗,審慎思考的結果,文章僅代表作者個人觀點。作者會假設讀者對各種區塊鏈平臺有一定認知,不會對具體的區塊鏈平臺再做詳細的介紹。

為了從根本上說清楚區塊鏈的架構內涵,作者先概括出區塊鏈的本質,從區塊鏈的本質出發,以發展的眼光給出一個區塊鏈的高階架構,並對高階架構的各個模塊進行詳細的說明。還會從區塊鏈跨鏈的本質出發,說明區塊鏈的跨鏈架構,以及區塊鏈劃分和發展趨勢。最後結合區塊鏈高階架構,以可擴展性設計為導向,給出一個區塊鏈的高階部署架構模型。

區塊鏈的本質和架構模型

區塊鏈的定義和本質

筆者經過對各種區塊鏈異同點的分析和歸納思考,先給出了一個區塊鏈定義。

區塊鏈是在符合現實社會法律法規前提下,可治理的,依賴於密碼學算法和博弈經濟性設計,基於共識算法,對發生在主體間的價值創造,價值轉移,價值交換,以及涉及到各個價值主體由機器驅動的業務流程,在多個對等的主體間形成的共識,從而達到共享業務狀態,共享價值狀態,即共享賬本,以達到加速社會資源配置和價值流通,最終提高生產力的目的。

區塊鏈的本質是共識,在互不信任的主體間的共識就形成了公認的價值。區塊鏈的目標是解放和提高整個社會的生產力,手段是將生產關係虛擬化,運用IoT和價值錨定技術將現實世界和虛擬世界無縫連接起來,虛擬化的業務合約可以由機器自動化驅動現實和虛擬社會的資源配置,價值生產和流通,結合大數據智能分析優化虛擬的生產關係,現實和虛擬的法律法規和治理機制為虛擬的區塊鏈社會的穩定發展提供保障。

區塊鏈的架構模型

作者從區塊鏈的本質出發,以發展的眼光看待區塊鏈的架構和架構未來的發展,關注於主要業務和技術能力,給出一個全面而高度概括的區塊鏈架構模型。這是一個面向鏈合約服務的高階架構模型,體現了未來基於區塊鏈實現高度自動化、智能化、公平守約的虛擬社會生產關係的能力。

面向鏈合約服務的高階層次化架構包括了三大部分:業務合約和賬本,區塊鏈平臺服務,UI界面和API接口。以下對各個部分進行詳細說明。

深度解析區塊鏈架構、跨鏈和演進

圖1 區塊鏈架構模型

業務合約和賬本

在現實世界,我們每個人都處在各種關係契約中,所有人在契約的約定下參與整個社會的生產和生活。區塊鏈技術最終要能促進生產關係虛擬化,推動生產力的發展,整個區塊鏈生態系統的核心就是要能支持各種契約,即業務合約,並在相關參與者間共享交易賬本。

業務合約大到非常複雜的業務合約流程,這要高於企業各自的流程,是各個企業、組織或個人作為流程主體共同參與制定共同認可的生產關係流程契約。比業務合約流程粒度小的業務合約稱為合約服務,合約服務是在語義層面對業務行為進行抽象的最小契約,合約服務由一組合約動作(action)構成。作為抽象的合約服務的具體實現,合約代碼可以由不同合約語言編寫,合約代碼中引用的業務條款和法律條款也都可以有具體的不同實現語言。

合約流程

合約流程實現了基於合約服務的一系列固定的,按照既定業務規則和法律條款串聯或並聯起來的合約動作,通過各個合約動作的完成,實現業務在各個流程參與方的執行,實現由機器流程引擎驅動的價值高速自動創造,自動流轉,自動交換。合約流程一旦運行起來就是一個狀態機,合約流程在參與方間共享流程狀態,也就是共享一致的狀態機的狀態。

業務參與各方在閱讀具體的業務合約流程業務規則,法律條款後,簽定合約流程契約,合約流程生效,流程可以通過時間觸發,也可以是鏈上的事件觸發,也可以Oracle事件觸發,也可以人工觸發。初始化後的流程實例按照後續節點的類型,人工節點或是計算節點,實現通過UI界面或API的外部輸入確認的人工執行驅動,或調用合約服務的具體action實現代碼的機器計算驅動,形成業務價值交易,流程引擎調用業務條款檢查服務和法律條款檢查服務,獲得業務節點的業務規則狀態和法律條款滿足狀態,按照既定的流程規則,引擎驅動流程判斷流向下一(多)個節點。

業務流程在各個節點流轉時,由流程引擎驅動形成一個個的流程流轉交易,業務流程合約參與方通過共享流程流轉交易實現流程狀態共享的目的。流程驗證者在本地的沙盒中執行對流程流轉交易的驗證,實現流程狀態機一致的狀態流轉。

合約服務

作為業務合約的主體,定義了業務合約最基本的服務內容,每一個合約服務就是一種最小的完整的概念層面的業務語義定義。合約服務定義了完成業務所需的一個或多個合約動作(action),每個合約動作定義了輸入狀態和輸出狀態和要執行的業務邏輯命令。

合約服務本身和每一個合約動作,以及其中用到的任何合約條款法律條款都需要用人類語言進行清晰明確的描述,必要時提供形式化語義描述以免出現語言理解偏差。每一個合約動作的執行形成一個明確的合約價值交易。合約流程引擎在執行流程節點流轉時,按照流程定義的對合約服務動作的調用,自動進行服務動作的執行,從而產生業務價值交易,這是一種內在的合約服務調用。合約服務的調用也可以是外在的,由用戶通過UI界面基於外部API接口實現調用。

合約服務可以是一種組合服務,對現有的合約服務動作進行組合,形成新的服務動作業務語義。合約服務的可組合化有利於基於已有的業務合約定義,通過快速構建新型的業務合約進行生產關係創新,實現不同產業價值服務的零距離整合。為了實現合約服務的自包含化,並支持服務流程的編排,以及服務計算容器化、分佈式、可擴展的架構部署要求,合約服務需要定義成無狀態的。當簽約用戶或流程調用合約服務時,合約服務會進行服務路由,基於鏈服務管理的路由規則,選擇特定的合約代碼實現來具體驗證執行業務價值交易。

合約代碼

合約服務的每一個合約動作都會產生業務價值交易,業務價值交易會在合約代碼實現上進行執行和驗證。作為交易驗證者,合約服務可以有多種實現,如不同合約語言的實現,不同合約提供商的版本實現,不同利益相關方的合約代碼實現,這有利於所有的合約服務參與者去中心化,並在抽象的業務層面就達成共識。

合約代碼實現了合約動作定義的輸入狀態和輸出狀態和要執行的一組業務邏輯命令計算,命令是最小的執行單元,可以是調用一個技術服務,如生成zkSNARK證明,也可以是輸入和輸出狀態檢查、邏輯計算、法律條款服務檢查等。

經過所有的命令執行,如果輸入狀態可以確定性地得到輸出狀態,對於合約服務的發起者就可以形成一個業務價值交易建議,而其他參與者可以對這個業務價值交易建議進行驗證。對於合約流程產生的流程流轉交易,由流程執行建議者計算出狀態遷移交易建議,由流程執行驗證者進行本地流程流轉驗證。

價值共享賬本

合約流程的流轉會產生流程流轉交易,合約服務的執行會形成業務價值交易,所有的這些交易日誌,被分類按應用按聯盟團體組織成區塊鏈或者交易鏈,形成不可更改和抵賴的數據結構,在各個參與方之間形成一個統一的狀態賬本。價值共享賬本需要以高效、規範的方式進行數據組織,包括交易日誌和賬本狀態,以便於流程狀態(狀態機)和資產狀態數據庫的快速更新,也便於對歷史交易進行快速查找和回溯。另外,價值共享賬本底層還需要有共享的通信機制,如使用各種P2P算法,便於相關方進行基於權限的相關交易數據的快速同步。

區塊鏈平臺服務

區塊鏈平臺服務提供所有區塊鏈平臺層面的公共服務,平臺服務同具體的業務無關,是可以為所有業務合約所共享的服務。各種平臺服務可以是鏈上的,也可以是鏈外的,一同構成一個區塊鏈平臺不可或缺的能力。主要包括合約合規,安全控制,鏈上共識,鏈服務管理,治理(鏈上、鏈外),開發運維。

合約合規

合約合規服務將那些公共的合規性要求抽取出來,形成各個業務都通用的規則條款檢查服務,合約條款驗證服務,法律條款驗證服務,Oracle服務約定,合約憲法條款約定。

合約憲法指明瞭合約糾紛適用的法律,爭議解決辦法,以及人類可讀的合約意圖等。一個實際的區塊鏈平臺能夠同現實社會經濟並行運行的一個前提條件就是同現實社會一致的合法合規性。不論是把現實世界中心化的合約去中心化建模成虛擬世界的業務合約,還是基於區塊鏈新型的生產關係新創造的業務合約,合法合規依然是根本。

法律和規則都可以以最低粒度的條款內容存在,為了支持業務合約的快速搭建和創新,將通用的合約條款,規則條款,法律條款實現為一種服務,基於對條款服務的引用和基於條款服務的組合,可以實現更高粒度的合規合法性驗證要求。業務合約可以基於這些合約規則,合約條款,法律條款和組合的合規合法性驗證要求自動進行交易的合規性驗證。

對於那些無法由代碼實現的驗證內容和合約意圖,可以通過人類可以理解的方式通過合約憲法指定合約運行所依賴的現實世界法律,指定出現無法在鏈上解決的爭議,在現實世界的解決辦法。合約流程和合約服務如果使用現實世界數據輸入的,為了達到確定性運行,所有驗證人的驗證執行都必須依賴相同的Oracle服務或者交易各方都認可的Oracle服務。

安全控制

區塊鏈在平臺安全層面需要設計隱私模型,權限模型。

同現實世界人們需要一定的隱私性和匿名性一樣,區塊鏈虛擬世界也需要提供相應的隱私保護給用戶。對於公有鏈,出於網絡的安全考慮,往往需要交易無關方對交易內容執行驗證,必須讓用戶身份信息同用戶的交易信息隔離,使用戶身份得到保護,甚至採用零知識證明zkSNARK算法僅向驗證者提供一個無需暴露交易內容的證明,驗證者就可完成驗證,做到絕對的交易身份隱匿。

許可鏈由於網絡的參與方都是受控的,所以防範網絡攻擊的安全需求沒有公有鏈那麼高,共識機制只需確保技術層面的一致和完備,交易業務層面的驗證可以只在交易相關方進行驗證,這樣可以保證交易無關方看不到任何交易內容,即使是加密的交易內容也看不到。

公有鏈是一種開放權限的設計思路,不會顯式的設定不同參與人的操作權限,只會採用黑名單機制。而許可鏈是一種白名單機制,有非常嚴格的准入機制,只有允許的參與方才可以參與被允許的業務合約。許可鏈通常採用PKI基礎設施通過自身的CA機構,同企業現有的權限管理系統進行集成,如LDAP、AD服務器,進而控制不同的人具有不同的合約操作權限。

區塊鏈由於採用公私鑰機制進行交易,不論採用哪種數據模型,都存在最小粒度的基於私鑰的賬戶概念。區塊鏈存在兩種類型的合約賬戶:合約流程賬戶(Contract Process Account, CPA)和合約服務賬戶(Contract Service Account, CSA)。外部用戶也會有自己的私鑰賬戶(User Account, UA),外部用戶賬戶會參與到合約流程賬戶和合約服務賬戶相關的活動中,而合約流程賬戶會依賴合約服務賬戶執行相關的合約動作調用。

不同的合約流程和合約服務實例化後的相互關係會非常複雜,我們可以把這三種賬戶按照使用關係和依賴關係組織成樹狀結構,採用merkle證明的方式進行權限證明驗證。

鏈上共識

共識機制是區塊鏈建立信任的基石。不同類型的區塊鏈出於不同的考慮會選擇不同的共識算法或者採用共識算法的組合。共識的內容包括賬本的規範化(如何組織區塊,組織交易鏈),交易的確定性執行結果,交易的非雙花唯一性,交易的順序完備性,以及其他保證網絡安全穩定運行的其他信息(如數據可用性)。

另一方面,共識機制的運行又不應同賬本的規範化和交易的驗證緊密綁定在一起,這也遵從關注點分離的架構原則,有利於區塊鏈平臺整體的模塊化,插件化,容器化,有利於平臺的橫向擴展性。

鏈服務管理

區塊鏈平臺服務一個很重要的能力體現就是對於鏈上服務的高效可靠的管理,所有區塊鏈的業務合約的正常穩定運行都依賴於這些註冊的鏈服務。這種重要性使得鏈服務的管理需要遵從區塊鏈治理體制和治理流程規則。鏈服務包括以下幾種類型:

合約流程管理:包括對合約流程的建立,版本升級,退出的管理。一旦某個用戶賬戶綁定在合約流程實例賬戶上運行,一直要運行到整個合約流程實例完全結束,可以提供退出子流程供中途退出,或者通過治理流程,讓所有參與者選舉主動結束合約流程實例。

合約服務管理:包括對合約服務的註冊,版本升級,退出的管理。每一個合約服務是一個有完整業務意義的抽象的合約規約,其中每一個合約動作都代表了不同利益方共同遵守的價值約定,一旦簽約加入合約服務,就從法律意義上確認了這樣的價值約定。

鏈技術服務管理:包括對鏈技術服務的註冊,版本升級,刪除操作。合約服務和合約流程運行時所依賴的公共技術服務,如生成鏈平臺的zkSNARK證明,驗證簽名,如果暴露成鏈服務的形式,就可以完成基於無狀態服務的計算可擴展性,特別適用於計算密集型的技術服務高負載運行時,可最大並行度地支持合約服務的驗證執行,也有利於採用特定的硬件加速技術服務。

Oracle服務管理:包括Oracle服務的註冊,版本升級,刪除操作。Oracle服務是虛擬世界同現實世界的橋樑,很多業務合約的運行都離不開來自於現實世界的信息,必須提供統一的Oracle服務,供所有的驗證人進行運行時驗證,才能保證交易驗證的確定性。Oracle服務橫跨兩個世界,所以必須在兩個世界都要設立對其的監督制約機制。虛擬世界的監督機制設計,如存入大額抵押金成為Oracle服務提供方,成立賞金獵人監督機制,一旦被發現非法行為,如提供同實際情況不符的Oracle證明,即被沒收所有抵押金,吊銷Oracle服務資質,記錄徵信檔案,在現實世界也需要做出相應的懲罰。

鏈上治理和鏈外治理

任何不同利益主體參與的活動,從長期穩定發展的角度來看,都需要配套的治理策略和機制保障。區塊鏈作為多利益主體參與的動態變化的系統,架構處於不斷演進過程中,運行的業務合約也不斷髮展變化,還面臨利益驅使的惡意行為,及有組織的黑客攻擊行為,運行的業務合約和交易都存在監管和審計的需求。

為了讓區塊鏈可以平穩安全的運行,特別是對於公有鏈,需要從公平正義的基本法理出發,預先設計出完整的博弈經濟模型和社會化治理機制。博弈經濟模型可以保證區塊鏈的參與者都以不同的角色,積極高效自覺地參與和維護區塊鏈的生產、管理和治理,對符合區塊鏈整體利益的行為進行激勵,對正義行為進行獎勵,對惡意行為進行懲罰,使用經濟手段阻斷黑客攻擊,讓攻擊行為得不償失,另外,模仿現實世界對經濟活動徵收稅收,稅收用於整個區塊鏈平臺的治理。

為了能高效公平地推進鏈的治理,可以預先設計出擴展性良好的底層治理機制,如設計底層的鏈上投票合約,基於這個底層機制可以進行相關平臺重大事項的社會化投票公決,如區塊鏈主憲法的更改,鏈參數的更新,鏈系統合約的升級,業務合約(合約流程,合約服務,合約代碼)以及合約法律的升級。

對於那些無法通過鏈上解決的治理問題,或者需要現實世界配合解決的問題,以及那些還無法預見的問題,需要設定鏈外治理的策略和機制,如對於確認的業務合約中的惡意行為或黑客行為,除了經濟手段懲罰,還可以訴諸現實世界法律手段。

一個穩定運行的區塊鏈系統就形成一個經濟和金融體系,離不開對在其中運行的經濟交易的持續審計和監管,以杜絕違法合約和交易行為,如反洗錢交易。每一個業務合約的接入方需要負責對客戶進行盡職調查,做到KYC監管要求。對於區塊鏈的有效治理,還離不開基於區塊鏈交易數據的大數據智能分析,由於區塊鏈是一個經濟系統,可能還需要基於分析結果施加以適應經濟規律的宏觀政策。

開發運維

一個成功的區塊鏈平臺就是一個多利益主體參與的生態系統,每一個參與主體(政府、企業、組織、個人)都有可能參與到平臺的開發和運維工作中來。

設計和開發人員可以參與到基礎平臺層服務的設計開發,也可以實現業務合約的規格制定和開發,這其中會涉及到架構人員,業務人員,法律人員,技術人員,監管人員等各種專業人員。

對於一個業務合約的設計和開發,首先需要由業務人員,法律人員和架構師完成完整的業務合約規約的制定,不同價值主體可以共同完成或由一方完成後討論,形成合約共識,制定出完整的合約流程,合約服務規格說明書;再由不同的參與主體自行開發實現或委託實現,可以不斷迭代提煉出通用的服務,如法律條款檢查服務,通用技術服務,各方在自行開發實現時充分利用平臺已有的成熟的通用服務以提高實現效率和服務穩定性,參與各方可以採用不同的語言實現合約服務邏輯,以保證合約服務語義層面的一致性和合約的分佈性。可以設計和開發的要件有:合約流程,合約服務,合約代碼,技術服務,規則服務,合規服務。

每一個參與主體特別是驗證節點都可以參與到區塊鏈的平臺運維中來,運維行為包括對運行節點服務的容器化集群,提供動態擴展能力,安裝多語言多VM實現節點,支持多節點並行運行,並行驗證。生產運維需要有完善的流程,面對區塊鏈日新月異的變化,可以充分利用DevOps進行持續開發,持續集成的新開發運維體制和自動化測試部署流程。

對於生產系統需要能夠進行監控,進行事件記錄,對重要事件發出告警,對於告警錯誤碼需要預先制定處理流程,針對區塊鏈系統和業務,還需要預先制定出正常情況和異常情況下的運維流程。

UI界面和API接口

整個區塊鏈服務對外的交互接口,包括提供給人的UI界面和提供給其他信息系統或人工智能代理的API接口。交互的主要內容包括:

個性化任務列表

價值主體加入某個合約流程後,如果合約流程的某個業務流程節點需要主體的輸入和確認,這就轉化成對這個主體的界面交互請求,用戶需要在一個業務界面中輸入必須的內容,或者確認系統提供的業務信息,並使用主體的業務操作私鑰進行簽名,以表明主體的操作權限,讓業務合約得以繼續進行下去。主體可以同時加入多個合約流程,這就會存在一個任務列表,需要主體逐個進行界面操作完成。

個性化分佈式APP

每一個業務合約都可能是一個App,多個業務合約一起也可以是一個App,用戶,用戶的IoT智能終端,或者用戶的人工智能代理,加入的每一個業務合約(合約流程或合約服務)都是一個業務應用,所以需要為用戶提供定製化的分佈式App,滿足用戶的個性化需求。比如設計一個大一統的App基礎平臺,在其上提供各種插件式的個性化小應用,為用戶加入的各個業務合約提供界面,用戶自己管理自己身份,不再控制在集中的機構手中,所有小應用的交易和授權都是基於用戶各個應用的私鑰進行,只由用戶本人控制。

IoT協議適配和價值錨定

區塊鏈一個大的應用方向就是同物聯網的結合,物聯網的各種終端要實現智能化自動製造,智能化自主服務,就需要將他們綁定到虛擬世界裡,傳統的IoT中心化控制架構是無法直接反應社會化生產和服務要求的。

區塊鏈作為一個虛擬的經濟社會,維持了虛擬的經濟生產關係,讓IoT智能終端參與區塊鏈群體中,參與到具體的區塊鏈合約流程和合約服務中,由社會化的區塊鏈機器自動驅動IoT終端進行自動化的生產和服務,並引入人工智能代理加速人工處理,可以極大提高生產力。區塊鏈需要同IoT的協議進行適配,以確保雙向交易的無障礙流通。

另外,為了在虛擬世界建模現實世界的價值生產,轉移和交換,將現實世界真正融入到虛擬世界的生產關係合約中,需要為現實世界生產的產品和服務價值,在虛擬社會分配一個價值錨定標籤,就如同虛擬世界擁有了私鑰就可以鎖定價值一樣,在現實世界,也需要有一套可行的方案將虛擬世界的價值錨定標籤植入到現實世界的產品和服務中去,不同的產品和服務可能需要不同的錨定機制。通過價值錨定標籤,現實世界價值的生產、轉移和交換就可以無縫融合進虛擬世界的生產關係合約流程和服務中去。

人工智能代理

作為價值主體,可以使用人工智能代理幫助其完成合約流程的自動流轉和合約服務動作的自動發起。一個虛擬世界高速運轉的生產關係需要這樣的角色,隨著人工智能的發展,人工智能代理也能夠勝任基本的基於規則和用戶習慣的操作。另外,結合大數據智能分析,在設定一定的業務目標後,可以由人工智能代理主動發起一些優化的交易,降低人工操作,提高整個合約服務的運行效率,可以預見性地優化資源配置,減少整個社會化生產的資源浪費。

開放API

整個區塊鏈平臺對於可以開放的或者可以權限開放的接口,都提供標準的API,允許外部系統或人工智能代理進行訪問和操作。區塊鏈的各種業務合約(合約流程,合約服務)信息,區塊鏈的各種交易結果,當前流程狀態,資產狀態,或者區塊鏈的交易發生證明,資產存在證明,鏈上治理接口,也都可以API的方式向外部系統提供。通過API接口,也可以進行各種業務合約的操作,如人工處理的提交,合約動作交易的提交等。

業務合約瀏覽器

通過業務合約瀏覽器,用戶可以看到權限範圍內的所有可參與的業務合約,包括合約具體的規格化內容,如合約流程、合約服務各動作、合約具體規則、合約法律條款、合約憲法、治理規則等。

區塊鏈瀏覽器

區塊鏈瀏覽器可以瀏覽所有的區塊,以及權限許可的交易內容,可以對可瀏覽的交易進行回溯查看,可以從不同的維度進行交易、流程和價值資產的審查。

資產瀏覽器

資產瀏覽器運行用戶以統一的視角看待用戶關聯的所有合約資產。資產瀏覽器可以同個性化分佈式App整合在一起,讓用戶可以看到當前各個參與合約流程的當前狀態,各個合約服務的狀態資產,以統一的視圖幫助用戶進行交易的優化決策。

區塊鏈跨鏈本質和跨鏈模型

區塊鏈跨鏈的本質

把整個現實社會都搬到一個區塊鏈上是不現實的,現實社會本身也是分產業分經濟領域進行價值創造的,通過市場實現不同產業和不同經濟領域的價值交換。每一個獨立區塊鏈維護了自己獨立的價值經濟體系,跨鏈區塊鏈是連接獨立區塊鏈的中樞,承載了不同價值體系區塊鏈價值交換的功能,商品要能實現交互,需要有價格,價格來源於商品自身的價值,取決於供求關係,而供求關係是靠市場搭建的,所以,為了實現不同區塊鏈“商品”的價值交換,在跨鏈區塊鏈上會出現各種價值交易市場,跨鏈區塊鏈上每一個價值交易市場就是一個跨鏈合約服務。

價值不會憑空產生也不會憑空消失,跨鏈設計也必須遵從人類自古以來的經濟規律。跨鏈的本質是價值等價交換,任何違背這個基本原則的設計最終都會失敗。

區塊鏈跨鏈架構模型

圖2中獨立區塊鏈的架構模型已經在上文中說明了,所有獨立區塊鏈如果需要支持跨鏈價值轉移或交換,就需要存在外鏈合約服務,外鏈合約服務同普通的合約服務沒有本質的區別,也是一種合約服務規約,不同之處在於合約的制定者會提供一組公開聲明的跨鏈交易公鑰地址,需要進行跨鏈交易的主體可以把自己擁有的一定數量的價值體轉移到跨鏈合約服務指定的公鑰地址上,並指定跨鏈交易內容,如希望交換另一個區塊鏈上一定數量的價值體,並把交換後的價值體轉到自己在另一個區塊鏈上的公鑰地址上。

深度解析區塊鏈架構、跨鏈和演進

圖2 區塊鏈跨鏈架構模型

這裡假定存在兩個獨立區塊鏈A和B,存在一個主體X和主體Y,他們都擁有兩個鏈上的私鑰地址,主體X是區塊鏈A上的價值生產者,如農民生產糧食,主體Y是區塊鏈B上的價值生產者,如工廠生產工業品,主體X希望購買區塊鏈B上的產品或服務,如工業品,主體Y希望購買區塊鏈A上的產品或服務,如糧食。

跨鏈區塊鏈主要有兩種類型的鏈組成,一種是主鏈,跨鏈主鏈只有一個,一種是適配子鏈,適配子鏈至少存在2個,由跨鏈主鏈連接各個適配子鏈,各個子鏈之間沒有信任關係,而是通過主鏈進行信任的傳遞。適配子鏈和主鏈按照設定的協議進行交互,以達到信任傳遞和交易傳遞的目的。

跨鏈區塊鏈本身也需要有同獨立區塊鏈一樣的區塊鏈平臺服務,如合約合規、安全控制、鏈上共識、鏈服務管理、鏈上鍊外治理、開發運維,這些在上圖都做了省略。對於鏈上共識,主鏈和子鏈需要採用比PoW更加高效的算法實現跨鏈交易交互,如採用BFT共識算法,目前兩個跨鏈平臺(Cosmos和Polkadot)設計都是採用PoS+BFT的混合共識算法。

跨鏈區塊鏈本身也是個區塊鏈,所以獨立區塊鏈所具有的業務合約能力也應具有,但基於跨鏈區塊鏈構建的業務合約會支持更復雜的業務,實現同不同價值區塊鏈的連接,進行價值交換。每一個跨鏈業務合約都會形成一個交易市場,不同區塊鏈的不同價值體系在這個交易市場上獲得各自的定價,並進行交易,極有可能會形成基於主鏈代幣或者主權加密通貨的各種區塊鏈價值體的統一報價和交易市場。

更高級地通過跨鏈合約流程,可以實現所有區塊鏈虛擬社會生產關係的組合,假設每個獨立區塊鏈是一個獨立的經濟領域,跨鏈合約流程就可以串接起獨立的經濟領域成為一個完整的產業鏈條。跨鏈區塊鏈本身也是可以互聯的,通過跨鏈區塊鏈的連接,就串接起了工業、農業、服務業等各行各業,從而構成了整個社會的生產關係。

生產生活都關聯到區塊鏈虛擬社會上,基於區塊鏈提供的合約服務以及基於區塊鏈提供的機器驅動業務流程,結合IoT和人工智能,價值生產、轉移和流通會更加快速便捷,人類的生產關係也會更加優化協調,生產力由此可以得到進一步解放。區塊鏈和跨鏈將整個人類對等地關聯在一起,去除了任何的信息不對稱性和現實社會的各種屏障,體現了公平公正,個人主體是虛擬社會關係的參與者也是維護者也是受益者。

跨鏈價值等價交換過程

結合上節的跨鏈架構,我們對跨鏈價值交換過程進行說明。這裡僅以物物交換市場為例,主體X是區塊鏈A上的價值生產者,主體Y是區塊鏈B上的價值生產者,主體X如果要獲得區塊鏈B上的價值體,就需要拿區塊鏈A上的價值體通過跨鏈價值交換合約服務同主體Y實現等價的物物交換。

首先主體X需要加入A鏈上的外鏈合約服務,接受合約服務規定的合約規則和法律條款,主體X還需要加入某個跨鏈合約服務,如可以實現A↔B交易匹配的一個跨鏈合約服務,接收跨鏈交易市場的合約規則和法律條款。然後主體X需按照A鏈上的外鏈合約服務的合約規則,把自己擁有的一定數量的A鏈的價值體轉移到外鏈合約服務指定的公鑰地址上,並指定跨鏈交易內容,如希望交換另一個區塊鏈B上設定數量的價值體,並把交換後的價值體轉到自己在另一個區塊鏈上的公鑰地址。後續的交易過程如下:

入①基於LCV的外鏈交易感知

適配子鏈的輕客戶端驗證(LCV)會不斷同步區塊鏈A的區塊頭,其對於區塊鏈A上的外鏈合約服務公開的公鑰地址敏感,一旦發現存在公鑰地址的交易,就認為存在跨鏈交易請求。

入②生成和打包跨鏈交易

由鏈適配代碼將區塊鏈A上主體X指定的跨鏈交易請求內容(用鏈A上一定數量的價值體兌換鏈B上一定數量的價值體到指定公鑰地址上)生成一個子鏈交易,並且打包進子鏈區塊。

入③提供子鏈存在跨鏈交易證明,發起主鏈跨鏈服務調用

鏈適配代碼基於Merkle樹給出一個跨鏈交易請求在子鏈上的存在性證明,並按照跨鏈協議,封裝出發往主鏈的跨鏈服務調用。

入④執行主鏈跨鏈交易代碼

主鏈的跨鏈服務總線,驗證交易在子鏈上的存在性證明,分析主體X的跨鏈交易請求內容,將跨鏈服務調用路由給具體的跨鏈價值交換合約。同樣過程,主體Y的跨鏈交易請求(用鏈B上一定數量的價值體兌換鏈A上一定數量的價值體到指定公鑰地址上)也被髮往相同的跨鏈價值交換合約。

入⑤產生交易日誌,更新賬本狀態

跨鏈價值交換合約的代碼實現,會進行所有的A↔B交易匹配,形成一個A鏈價值體同B鏈價值體的買賣市場深度,一旦可以匹配上主體X和主體Y的交易請求,就形成一個匹配交易,用以封裝A鏈和B鏈價值體在主體X和Y之間達成交換的結果。跨鏈價值交換合約本質上就是一個場內交易所。

出①子鏈路由,提供主鏈存在跨鏈交易證明,向適配子鏈發起外鏈合約服務調用跨鏈價值交換合約實現代碼,會提供一個交易主體X和Y的跨鏈匹配交易在主鏈上的存在性證明,分別向鏈A和鏈B的適配器子鏈發送轉賬指令交易,一個指示往A鏈Y主體指定的公鑰地址轉移一定數量的價值體,一個指示往B鏈的X主體指定的公鑰地址轉移一定數量的價值體。

出②生成和打包跨鏈交易

這兩個適配子鏈分別將各自的轉賬指令交易記錄日誌,並打包進各自的子鏈區塊。

出③發起外鏈合約服務調用

鏈適配代碼向各自對應的獨立區塊鏈上的外鏈合約服務發起轉賬指令交易。A鏈的適配子鏈會向A鏈的外鏈合約服務發送一個轉賬交易,指示從合約的公開地址上往Y主體指定的公鑰地址轉移一定數量的價值體。B鏈的適配子鏈也會向B鏈的外鏈合約服務發送一個轉賬交易,指示從合約的公開地址上往X主體指定的公鑰地址轉移一定數量的價值體。

出④執行外鏈合約代碼

A鏈的外鏈合約服務會執行合約代碼,生成交易,把由合約控制的,轉賬指令要求的一定數量的價值體轉移給Y主體指定的公鑰地址。B鏈的外鏈合約服務會執行合約代碼,生成交易,把由合約控制的轉賬指令要求的一定數量的價值體轉移給X主體指定的公鑰地址。

出⑤生成交易日誌,更新賬本狀態

一旦交易被打包進區塊,按照鏈的交易確認特性,最終主體X獲得了B鏈的價值體控制權,主體Y獲得了A鏈的價值體控制權。

跨鏈區塊鏈也會提供用戶UI界面和API接口,用戶所有在跨鏈區塊鏈合約服務上執行的交易都可以通過跨鏈用戶界面和API接口獲得當前的執行狀態,即查看用戶在交易所掛單狀態和交易市場的買賣深度,甚至可以讓用戶基於私鑰按照市場供求關係重新掛單。

跨鏈區塊鏈可以提供基於獨立區塊鏈上的外鏈合約服務的抵押機制,在對應的適配子鏈上,以換取相同數量的抵押區塊鏈的價值體幻象或籌碼,業務主體拿抵押的子鏈上的價值體幻象參與主鏈的業務合約流程,這種跨鏈的生產關係,基於各個主體抵押的各自區塊鏈上的價值體(也可以是現實世界價值錨定),配置生產資料,開展合約生產,最後分配生產產品價值。跨鏈區塊鏈如果有自己內生的代幣,也可以基於交易市場(合約)完成到內生代幣的價值兌換,主體拿著跨鏈代幣加入跨鏈合約流程或跨鏈合約服務的虛擬生產關係進行生產和價值交換。

區塊鏈的劃分和發展趨勢

為什麼在區塊鏈技術上,首先出現的是比特幣這種加密貨幣,而不是以太坊,也不是跨鏈Cosmos?因為加密貨幣從業務上更純粹(數字 vs 合約 vs 市場),從技術上更嚴密和容易實現(腳本棧 vs 以太坊虛擬機 vs 通用沙箱)。

以比特幣為代表的加密貨幣稱為可編程貨幣,以太坊可以建模各種代幣和基於代幣的合約動作,稱為可編程金融,實用化的區塊鏈系統會吸取現有區塊鏈的實踐教訓,從實際可用的目的出發重新設計區塊鏈架構,真正可用於實際社會的區塊鏈建模的不僅僅是虛擬的價值,還擔負著社會生產關係虛擬化的重任,在實現現實世界的價值在虛擬世界的錨定基礎上,實現現實世界不同契約,不同業務流程在虛擬世界的共識建模,甚至會創造出統一現實世界和虛擬世界的新型生產關係合約服務或合約流程,這可以稱之為可編程社會。

可以看出,區塊鏈的劃分不是為了嚴格區分各種區塊鏈的優劣高下,而是通過劃分,區分出不同區塊鏈類型在建模對象和業務處理能力上的不同,以及所要關注解決問題的不同。更重要的是,就如同現實社會,貨幣是金融的基礎,貨幣和金融是這個社會運行的核心一樣,可編程貨幣是可編程金融和可編程社會的核心和價值交換基礎,可編程金融又會是可編程社會圍繞的中心。

深度解析區塊鏈架構、跨鏈和演進

圖3 區塊鏈劃分和功能性要求

上圖主要是想從技術複雜度和業務自由度,兩個維度大概說明可編程貨幣、金融、社會三個代際劃分的包含關係。圖上列出的幾個區塊鏈平臺或者未來可能出現的鏈平臺所擺放位置只是示意,不盡準確僅供參考。上圖還列出了區塊鏈各代際劃分的主要功能需求,這包括可編程貨幣的貨幣金額建模能力,可編程社會的狀態資產建模,合約建模,合約條款建模,可編程社會的交易內流程建模,治理流程建模,法律法規建模,跨交易鏈內流程建模,跨交易跨鏈流程建模。狀態、業務、流程、法規、治理是幾個區塊鏈功能性能力的考察維度,可能某些能力也是其他代際平臺一定程度具有的能力,只是在建模能力的強弱上有所不同。

基於現有區塊鏈存在的問題,結合區塊鏈社會應有的能力,筆者認為未來的區塊鏈會有如下幾個發展趨勢:

建模業務合約流程

目前的區塊鏈在建模對象上只是狀態,而不能建模業務流程狀態機,相信由機器驅動的自動化流程,結合IoT和價值錨定,將虛擬社會和現實社會融為一體的生產關係,才能順應解放生產力的根本要求,所以能夠建模業務合約流程的區塊鏈平臺將會是演進趨勢。

跨鏈交易市場形成

獨立區塊鏈完成相關性較高的業務領域的價值生產,要實現社會化商品和價值大流通,就需要跨鏈交易市場,通過跨鏈提供的跨鏈價值交換市場滿足價值在不同主體自由等價流通。

架構的高可擴展性設計

區塊鏈社會對系統計算能力的要求是巨大的,區塊鏈平臺需要有很好的橫向可擴展能力,以滿足不斷擴大的業務合約交易要求。一個沒有擴展性的區塊鏈平臺是沒有實用價值的。隨著區塊鏈實驗技術的不斷經驗積累和實用化推進,可擴展的區塊鏈架構平臺必然是設計趨勢。

同現實世界的價值錨定

要實現將現實生產統一到虛擬化的生產關係中,以實現機器按照合約驅動生產的自動化目的,就必須有一套切實可行的方案將虛擬世界的價值錨定標籤,植入到現實世界的產品和服務中去。將現實世界的價值同虛擬世界的價值統一起來的價值錨定機制是急需解決的難題。

同現實世界的法律接駁

區塊鏈最終會將虛擬社會和現實社會融為一體,形成統一的虛擬生產關係,一個實際的區塊鏈平臺能夠同現實社會經濟並行運行的前提條件就是要有同現實社會一致的合法合規性。符合現實世界法律精神和條款要求是虛擬法律條款合法合規的根本。

仿現實世界治理機制和體系

能夠建模社會生產關係的區塊鏈就是一個小型的經濟社會,不同主體參與,就需要同現實世界類似,設立治理機制和體系,以維護區塊鏈的健康穩定持續發展,以維護區塊鏈社會的公平正義。

區塊鏈部署架構模型

從區塊鏈實現虛擬化自動化社會化協作生產的目標出發,基於關注點分離的架構原則和層次化的架構模式給出的區塊鏈架構模型,從設計時就考慮了平臺的可用性。以當前的計算架構,採用多臺大型主機的銀行服務或者採用分佈式架構的互聯網服務才能支撐得起整個社會範圍的交易併發,這還是若干銀行、互聯網公司共同提供的集中式交易。

區塊鏈共識就意味著冗餘計算,區塊鏈又是建立在密碼學上的計算,本身就需要耗費大量的計算能力,要能夠提供滿足目前銀行和互聯網服務性能的區塊鏈虛擬計算,就需要目前所有銀行主機和分佈式服務計算能力的若干倍才可以,如果要實現連接現實社會的自動化流程驅動的生產,整個社會的計算能力還需要有極大的提高。區塊鏈架構要想實現在整個社會範圍內的實用化就必須實現功能模塊的松耦合,需要能夠支持分佈式並行計算,支持密碼學專用硬件加速,甚至支持連接高性能計算中心的第三方計算。

深度解析區塊鏈架構、跨鏈和演進

圖4 區塊鏈部署架構模型

目前區塊鏈架構模型設計成驗證服務和平臺共識服務分離,業務驗證服務的合約流程和合約服務以及實現代碼分層服務化解耦,業務合約服務同公用的合規合法檢查服務,技術服務以服務化的方式解耦,區塊鏈交易日誌、狀態的規範化邏輯同平臺共識服務邏輯分離解耦,所有這些功能邏輯的服務化,無狀態化,目的就是為了確保服務的橫向分佈式部署擴展能力,實現服務容器化按需動態擴展,充分利用當今雲計算的發展成果。

另外,按照參與業務主體緊密程度,業務相關性,業務性能要求,隱私要求的不同,形成多個子鏈,從鏈的高度實現分離以提高整個區塊鏈的並行處理能力,也是區塊鏈並行處理交易的方式。

真正實用的區塊鏈共識節點上要運行大量的應用,需要滿足巨量吞吐量要求,並且響應時間也需在實用可接受的範圍,共識節點所需要的計算能力不是個人能夠承受的,所以未來一個實用的區塊鏈平臺一定是運行在多個數據中心上的,個人通過各種分佈式App應用參與到鏈上合約業務。

數據中心會提供大量容器資源,以動態可擴展的方式為區塊鏈各個功能模塊提供服務運行所需的計算資源和存儲資源,從前端的分佈式APP,到後端的微服務,再到區塊鏈共識服務,賬本服務,各種業務合約(合約流程,合約服務)實現的沙盒驗證節點,以及各種公共的鏈上服務節點,如技術服務,合約合法檢查服務,規則服務,Oracle服務,分佈式存儲服務,合約服務路由服務等。

一個數據中心可能是由一箇中心化組織(如公司)運營,也可以是由一個分佈式自治組織(DAO或DAC)依據自治合約運行。每一個數據中心對於同一個語義層面規格化的合約服務可能會有自己的代碼實現,可能會採用不同的合約編程語言,可能運行在不同的沙盒中驗證和執行。每個數據中心都會並行運行多個賬本副本和共識節點副本,以保證驗證結果的一致性,提高系統可用性,提高出塊速度,避免遭受經濟懲罰。

篇後語

筆者希望通過整體的區塊鏈架構描述,讀者能夠讀懂區塊鏈,認識到區塊鏈的本質是共識,以及基於共識形成的公認價值,認識到區塊鏈跨鏈的本質是價值的等價交換和交易市場;能夠讀會區塊鏈,知道區塊鏈的高階架構模型,區塊鏈不同類型劃分和功能性要求,以及發展趨勢和實用的部署架構模型,讀者可以以高階架構為藍本,實際設計和開發實用區塊鏈;相信憑藉中國互聯網發展在技術和受眾上的積累,我們可以更早感受到區塊鏈帶給整個社會生產關係和生產力變革的力量。

作者簡介:莊鵬,IBM GBS金融服務部高級諮詢顧問、資深架構師,近幾年主要關注區塊鏈架構和區塊鏈平臺的發展,以及同傳統IT系統集成。

來源:CSDN


分享到:


相關文章: