謝家貴,李志平,金 鍵,張 波,郭 健,聶凡杰
(中國信息通信研究院 工業(yè)互聯(lián)網(wǎng)與物聯(lián)網(wǎng)研究所,北京 100191)
區(qū)塊鏈技術(shù)是一種多方共同維護的賬本技術(shù),由共識機制、密碼算法、分布式網(wǎng)絡(luò)、合約腳本等多種技術(shù)融合組成[1],具有分布式可信、難以篡改、多方維護等特點[2]。區(qū)塊鏈憑借其特有的低成本信任建立機制,成為繼云計算、物聯(lián)網(wǎng)、大數(shù)據(jù)之后的又一項重大技術(shù)創(chuàng)新,正在被越來越多的行業(yè)接納和認(rèn)可,逐漸應(yīng)用起來,是未來構(gòu)建新型信任體系不可或缺的技術(shù)之一[3]。
區(qū)塊鏈的發(fā)展經(jīng)歷了三個階段。在區(qū)塊鏈1.0 中,出現(xiàn)了以比特幣為代表的加密貨幣。2008 年11 月1 日,Nakamoto[4]發(fā)表了《比特幣:一種點對點的電子現(xiàn)金系統(tǒng)》論文,論文中詳細(xì)描述了如何使用對等網(wǎng)絡(luò)來創(chuàng)造一種“不需依賴信任的電子交易系統(tǒng)”,由于比特幣的代碼是開源的,任何人都可以基于現(xiàn)有代碼構(gòu)建新的體系。因此隨后出現(xiàn)了許多所謂的比特幣的替代品,旨在改善比特幣加密貨幣的缺陷和不足[5]。
區(qū)塊鏈2.0 中,主要以智能合約為特點。智能合約[6]作為一種在區(qū)塊鏈中實時存在的自動化的小型計算機程序,可以在預(yù)先定義的條件下自動執(zhí)行,區(qū)塊鏈為智能合約提供了安全的存儲與運行環(huán)境。以以太坊[7]為代表的智能合約將區(qū)塊鏈應(yīng)用擴展到加密貨幣之外的眾多領(lǐng)域[8]。
區(qū)塊鏈3.0,以去中心化應(yīng)用程序(decentralized Application,dApp)為主要特點,避免了集中式基礎(chǔ)結(jié)構(gòu),使用去中心化存儲和通信機制,后端代碼部署在去區(qū)塊鏈上運行,dApp 由前端、在區(qū)塊鏈上運行的合約構(gòu)成[9],進一步加速了區(qū)塊鏈相關(guān)技術(shù)的發(fā)展。
區(qū)塊鏈產(chǎn)業(yè)格局初現(xiàn),以芯片、網(wǎng)絡(luò)等基礎(chǔ)資源為主的上游產(chǎn)業(yè)競爭格局基本形成,以底層基礎(chǔ)平臺架構(gòu)和技術(shù)服務(wù)等為主的中游產(chǎn)業(yè)競爭激烈,圍繞行業(yè)應(yīng)用展開的下游產(chǎn)業(yè)逐漸鋪開,產(chǎn)品應(yīng)用不斷深入和多元化。但是由于不同業(yè)務(wù)、不同技術(shù)底層的區(qū)塊鏈之間缺乏統(tǒng)一的互聯(lián)互通的標(biāo)準(zhǔn),導(dǎo)致區(qū)塊鏈只是在小范圍內(nèi)應(yīng)用,形成了一個個的鏈島,限制了區(qū)塊鏈技術(shù)規(guī)模應(yīng)用帶來的產(chǎn)業(yè)協(xié)同效應(yīng),因此跨鏈互通是未來的演進方向[10]。如何實現(xiàn)不同區(qū)塊鏈之間的互聯(lián)互通成為當(dāng)前的一大研究熱點,本文提出一種基于主子鏈架構(gòu)的新型許可公有鏈系統(tǒng),既可以解決區(qū)塊鏈間互聯(lián)互通的問題,又能解決區(qū)塊鏈的安全、監(jiān)管等問題。
公有區(qū)塊鏈簡稱公有鏈,是完全開放的區(qū)塊鏈[11],任何人都可以隨時加入并參與到公有區(qū)塊鏈的網(wǎng)絡(luò)治理中來。公有區(qū)塊鏈的賬本是透明的,節(jié)點是分散的,沒有中央實體控制,完全去中心化。但有些公有鏈維護分布式賬本需要大量的算力,由于公有鏈網(wǎng)絡(luò)中有非常多的節(jié)點和交易,這種規(guī)模的擴展需要大量的努力才能達(dá)成共識[12]。而許可鏈則不是完全公開的,是需要邀請或者授權(quán)的,參與到區(qū)塊鏈系統(tǒng)中的節(jié)點都需要經(jīng)過許可,區(qū)塊鏈位于封閉網(wǎng)絡(luò)中,實體可以查看或驗證交易的程度取決于網(wǎng)絡(luò)啟動者。常見的聯(lián)盟鏈、私有鏈都是一種許可鏈,由于成員較少,共識機制經(jīng)過優(yōu)化等原因,許可鏈通??梢愿臁⒏咝?、更容易達(dá)成共識[13]。
將“許可”和“公有”結(jié)合在一起,構(gòu)成許可公有鏈,使其兼具許可和公有的特性,可既兼容公有區(qū)塊鏈開放靈活、可擴展性,又有機結(jié)合了許可區(qū)塊鏈的易于監(jiān)管、高性能、安全可控的特性;既可支持開放接入,發(fā)揮公有區(qū)塊鏈的優(yōu)勢,又可支持監(jiān)管要求,發(fā)揮許可區(qū)塊鏈的優(yōu)勢[14]。
主子鏈?zhǔn)且粋€主鏈+多個子鏈的一種區(qū)塊鏈技術(shù)架構(gòu),如圖1 所示。主鏈支持節(jié)點自由接入,所有節(jié)點可獲得開放數(shù)據(jù)同步與開放數(shù)據(jù)查詢權(quán)限,未開放的數(shù)據(jù)需要申請權(quán)限;節(jié)點權(quán)限根據(jù)提供的服務(wù)不同需申請相應(yīng)許可。而子鏈側(cè)重于具體的個性化業(yè)務(wù)活動,并且可以獨立執(zhí)行共識。子鏈接入方式一般分為兩種,一種是基于主鏈創(chuàng)建同構(gòu)子鏈,另一種是現(xiàn)有異構(gòu)區(qū)塊鏈根據(jù)主鏈接口規(guī)范開發(fā)接口接入主鏈。子鏈接入需要向主鏈申請注冊,通過授權(quán)與主鏈對接;子鏈也可以根據(jù)需求部署個性化應(yīng)用或智能合約。
圖1 主子鏈?zhǔn)疽鈭DFig.1 Schematic diagram of main-sub chain
主子鏈的模式本質(zhì)上是一種跨鏈模式,區(qū)塊鏈的跨鏈技術(shù)可以實現(xiàn)不同鏈間信息傳輸和價值流通,有助于提高交易吞吐量,提升擴展性。同構(gòu)鏈之間的共識機制、網(wǎng)絡(luò)、存儲、塊生成驗證邏輯一致,它們之間的跨鏈交互相對簡單;異構(gòu)鏈的跨鏈交互相對復(fù)雜[15],通常需要第三方服務(wù)的協(xié)助來完成跨鏈交互。
跨鏈的首要問題是將鏈之間建立一套信任機制,一條鏈能夠驗證并信任另一條鏈的數(shù)據(jù)[16]。目前主流的區(qū)塊鏈跨鏈技術(shù)方案[17]根據(jù)其具體實現(xiàn)方法主要分為公證人機制、中繼機制、哈希鎖定等三類[18]。
本文提出一種基于主子鏈架構(gòu)的許可公有鏈跨鏈方案,該方案借鑒公證人機制和中繼鏈技術(shù)的核心思想并加以改進,有效避免了公證人機制帶來的中心化嚴(yán)重以及中繼鏈適配性差難以接入等問題。面對不同場景提供不同的跨鏈技術(shù)接入方案,滿足在不同場景中對隱私性、有效性的不同要求[19]。
本文設(shè)計的主子鏈架構(gòu)中,從功能上將區(qū)塊鏈的節(jié)點分為普通節(jié)點和共識節(jié)點兩大類。普通節(jié)點主要是負(fù)責(zé)同步數(shù)據(jù)、廣播消息、對外提供區(qū)塊鏈服務(wù)等,共識節(jié)點主要負(fù)責(zé)區(qū)塊的打包驗證,維護整個區(qū)塊鏈安全穩(wěn)定的運行。其中共識節(jié)點是由用戶投票從候選節(jié)點選取產(chǎn)生的,后文會詳述。
整個架構(gòu)的組成如圖2 所示,主要包括主鏈、子鏈,以及連接主子鏈的可插拔網(wǎng)關(guān)組件。主鏈由多個共識節(jié)點組成,使用較高的每秒處理事務(wù)數(shù)(Transactions Per Second,TPS)的共識算法有效提高跨鏈的效率,滿足子鏈跨鏈對性能的不同要求。子鏈?zhǔn)撬袇⑴c接入跨鏈生態(tài)的同構(gòu)/異構(gòu)區(qū)塊鏈,可以是各種公鏈、聯(lián)盟鏈等??刹灏尉W(wǎng)關(guān)組件是主鏈和子鏈的橋梁,實現(xiàn)主子鏈之間的通信。許可公有鏈跨鏈技術(shù)是以高性能共識的主鏈為核心的跨鏈網(wǎng)絡(luò)結(jié)構(gòu)以及子鏈動態(tài)接入機制,使用可插拔網(wǎng)關(guān)組件作為跨鏈的橋接器,保證跨鏈技術(shù)的高效性、擴展性和安全性。
圖2 基于主子鏈的許可公有鏈架構(gòu)Fig.2 Framework of permissioned public blockchain based on main-sub chain
許可公有鏈兼具許可和公有的特性,首先只有經(jīng)過許可授權(quán)的節(jié)點才可以加入該區(qū)塊鏈網(wǎng)絡(luò),讀取數(shù)據(jù)、發(fā)送交易、打包記賬等,未經(jīng)許可的節(jié)點是不可接入?yún)^(qū)塊鏈系統(tǒng)的,無權(quán)讀取區(qū)塊鏈數(shù)據(jù)信息。其次該區(qū)塊鏈對任何人都是開放的,任何人都可以申請加入,參與共識節(jié)點的選取,同時對外提供公共服務(wù),是開放公有的。另外許可公有鏈也是去中心化的,任何人或機構(gòu)都不可以控制或篡改其中數(shù)據(jù)。本節(jié)通過共識機制和可信許可機制,實現(xiàn)區(qū)塊鏈的公有許可。
2.2.1 共識機制
許可公有鏈共識算法支持模塊化設(shè)計和可插拔架構(gòu),主鏈共識采用混合類算法,在委托權(quán)益證明(Delegated Proof Of Stake,DPOS)、可驗證隨機函數(shù)(Verifiable Random Function,VRF)、實用拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT)等基礎(chǔ)上進行算法創(chuàng)新,設(shè)計出的一種創(chuàng)新雙層共識算法,實現(xiàn)區(qū)塊鏈的公有屬性。
算法整體架構(gòu)如圖3 所示。許可公有鏈共識算法分為基于DPOS 的驗證池選取、融合VRF 的PBFT 算法兩部分,用戶通過驗證池選取協(xié)議投票產(chǎn)生共識節(jié)點集合,隨后再由被選出來的共識節(jié)點通過融合VRF 的PBFT 算法產(chǎn)生區(qū)塊,這樣既能夠保證出塊的節(jié)點隨機性和不可預(yù)測性,同時兼顧了區(qū)塊鏈的去中心化、高性能及安全性。
圖3 共識算法架構(gòu)Fig.3 Consensus algorithm architecture
1)基于DPOS的驗證池選取。
拜占庭容錯算法需要進行多輪的投票,并且信息是以廣播的方式在網(wǎng)絡(luò)中傳播,所以隨著參與者的數(shù)量增加,網(wǎng)絡(luò)帶寬和時延將成為性能瓶頸;同時參與者的節(jié)點性能如果差異太大,將造成整體性能不理想。達(dá)到最優(yōu)性能的方式是限制參與者的數(shù)量,給系統(tǒng)添加準(zhǔn)入門檻,避免低性能的節(jié)點參與到系統(tǒng)中造成整體性能下降。這種方法雖然能確保拜占庭容錯算法性能達(dá)到最優(yōu),但同時意味著系統(tǒng)中共識節(jié)點參與者的數(shù)量是受限的,不具備去中心化的特性。這里設(shè)計了一種動態(tài)隨機的驗證池選取算法,在提供公平性的基礎(chǔ)上,確保系統(tǒng)運行可靠。
圖4 基于DPOS的驗證池選取Fig.4 Verification pool selection based on DPOS
動態(tài)的驗證池的選取主要包含:角色劃分,準(zhǔn)入和退出機制,選取機制。
(1)角色劃分。
要選取出拜占庭容錯算法中的節(jié)點,應(yīng)該有用戶、候選節(jié)點和共識節(jié)點角色,普通節(jié)點參與節(jié)點競選,由原有的共識節(jié)點集合審核通過后,進入驗證池,成為候選節(jié)點,用戶通過投票選擇候選節(jié)點,區(qū)塊鏈系統(tǒng)根據(jù)預(yù)設(shè)共識節(jié)點數(shù)量選擇投票數(shù)靠前的候選節(jié)點成為共識節(jié)點。各參與者如下。
用戶 區(qū)塊鏈服務(wù)的使用者,在區(qū)塊鏈上擁有賬戶,擁有選舉權(quán)。
候選節(jié)點 由共識節(jié)點審核通過后進入驗證池的節(jié)點。不參與共識,只同步區(qū)塊鏈中的數(shù)據(jù),并對外提供服務(wù)。
共識節(jié)點 許可公有鏈共識算法中參與共識、打包區(qū)塊的節(jié)點,需要獨立的服務(wù)器參與記賬。
(2)準(zhǔn)入機制。
選取機制運行在拜占庭系統(tǒng)模型下,意味著參與者的行為是任意的,所以必須設(shè)定準(zhǔn)入門檻。共識節(jié)點的選取可以使用質(zhì)押金保證方式,從而提高節(jié)點作惡的代價。
①普通節(jié)點申請成為候選節(jié)點。
②共識節(jié)點審核節(jié)點的服務(wù)能力、資質(zhì)條件、質(zhì)押金繳納情況等,服務(wù)能力包括節(jié)點的服務(wù)器性能、網(wǎng)絡(luò)帶寬、計算能力等;資質(zhì)條件包括企業(yè)的信用記錄等,可以通過調(diào)用國家企業(yè)信用信息公示系統(tǒng)獲??;另外通過調(diào)用賬戶余額的相關(guān)接口驗證質(zhì)押金繳納情況。
③共識節(jié)點根據(jù)審核結(jié)果各自投票,2/3 以上同意則審核通過。這里的投票會調(diào)用相關(guān)的智能合約,滿足條件將自動執(zhí)行。
(3)退出機制。
①候選節(jié)點申請退出。
②所有候選節(jié)點查看該節(jié)點近期是否有作惡,如有作惡則提出廢止申請,共識節(jié)點對廢止申請進行審核并投票,如有2/3 以上同意則廢止該節(jié)點,并扣除全部質(zhì)押金;如果在一定時間內(nèi)廢止申請未通過或者沒有人提出惡意節(jié)點廢止申請,則自動返還質(zhì)押金。
(4)選取機制
動態(tài)驗證池選取離不開一個公平可靠的選取機制,這個機制是整個動態(tài)驗證池選取的核心。共識算法使用智能合約實現(xiàn)了在線動態(tài)選取的機制,分離了選取邏輯部分和數(shù)據(jù)部分,使得選取邏輯可以動態(tài)更新。這里選用DPOS 投票選舉出共識節(jié)點,投票選舉的整個流程分為質(zhì)押申請、共識節(jié)點審核、用戶投票、打包區(qū)塊。選取流程大致包含以下步驟:
①節(jié)點通過質(zhì)押申請成為候選節(jié)點;
②共識節(jié)點審核候選申請是否符合準(zhǔn)入條件,2/3 的共識節(jié)點成員同意表示通過;
③用戶對候選節(jié)點進行投票;
④投票排名靠前的候選節(jié)點成為新共識節(jié)點;
⑤新共識節(jié)點參與打包區(qū)塊。
投票選取機制是實時動態(tài)的,某一個節(jié)點可能當(dāng)前是共識節(jié)點,下一個區(qū)塊打包時可能因為票數(shù)落后而退出共識節(jié)點集合。質(zhì)押申請、審核、用戶投票三者保證了選取機制公平性和可靠性。然而投票選取需要足夠多的參與者才能確保共識節(jié)點的選取代表大多數(shù)人的意志,才能確保整個機制的去中心化。
2)融合VRF的PBFT算法。
區(qū)塊鏈系統(tǒng)是一種分布式系統(tǒng),共識算法運行的環(huán)境類似于分布式系統(tǒng)的執(zhí)行環(huán)境,要保證共識算法的安全性和可靠性,不可避免地要解決拜占庭將軍問題。在PBFT 共識中,所有的節(jié)點稱為副本,這些副本有兩個角色,分別為主節(jié)點和備份節(jié)點。其中在每一輪選舉中,都會從共識節(jié)點中選出一個主節(jié)點,稱為Leader,來負(fù)責(zé)新區(qū)塊的生成。除主節(jié)點之外所有的節(jié)點都為備份節(jié)點。
PBFT 共識過程包括提案階段、確認(rèn)階段、提交階段。節(jié)點之間通過協(xié)議傳播自己獲得的信息,并根據(jù)自己收集的信息判斷是否發(fā)送確認(rèn)或者提交信息。系統(tǒng)狀態(tài)將在3 個階段遷移,節(jié)點只需判斷收到的消息是否足夠就可以自動進入下一個階段,3 個階段完成代表著共識成功。
用戶提交交易后,這些節(jié)點通過三個階段對交易集合達(dá)成一致,如果在共識過程中,Leader 不作為或作惡,則變更流程選舉下一個Leader,當(dāng)有大多數(shù)節(jié)點投票選舉了下一個Leader,則變更成功。假設(shè)區(qū)塊鏈系統(tǒng)中節(jié)點總數(shù)為N,那么該共識能容忍的錯誤節(jié)點個數(shù)為f=(N-1)/3,大多數(shù)節(jié)點的個數(shù)為N-f=2f+1[20]。
每個區(qū)塊打包完成后,即主節(jié)點會按預(yù)設(shè)規(guī)則變更一次,確保不會有某一個節(jié)點長期擔(dān)任Leader,同時為提高可用性,并且在正常共識流程中加入了超時重發(fā)機制,提高網(wǎng)絡(luò)層面的消息傳達(dá)率。傳統(tǒng)方式下,共識節(jié)點按照固定的順序輪流成為Leader 節(jié)點發(fā)起共識投票,但是這種方式存在一定風(fēng)險。Leader 節(jié)點可被預(yù)測,攻擊者可以針對性地提前做好攻擊策略,極大地提高了作惡的成功率。這里采用公平的VRF 算法實現(xiàn)Leader 節(jié)點的隨機輪換,任一共識節(jié)點在共識開始之前并不知曉自己是否是Leader,以達(dá)到其不可預(yù)測性,使得共識更加安全可靠。
VRF 是一個可驗證隨機函數(shù),由Micali 等[21]提出。對于特定的密鑰對和輸入x,VRF 產(chǎn)生唯一的隨機輸出v,同時該輸入可以驗證??沈炞C隨機函數(shù)主要由3 個多項式時間算法組成:函數(shù)生成器G、函數(shù)評估器F、函數(shù)驗證器V。G 是概率性的算法,接收一個安全參數(shù)k字符串作為輸入,輸出為兩個二進制字符串,公鑰PK和私鑰SK;F 是確定性算法,F(xiàn)=(F1,F(xiàn)2),接收SK和x兩個字符串作為輸入,輸出兩個二進制字符串value 和proof,其中value=F1(x,SK),是輸出的隨機值,proof=F2(x,SK),是對隨機值的證明;V 也是概率性的,接收(PK,x,v,proof)4 個二進制字符串輸入,輸出YES 或NO。VRF 是一種低能耗,高效率的隨機數(shù)算法,目前已在多個區(qū)塊鏈項目共識機制中采用。
VRF 算法在這里主要應(yīng)用在提案階段,分為3 個步驟:
(1)共識節(jié)點使用上一個區(qū)塊的哈希、當(dāng)前共識的視圖號以及臨時生成的一個私鑰作為種子,生成一個32 字節(jié)的哈希值作為隨機數(shù)以及針對這個隨機數(shù)的零知識證明。
(2)共識節(jié)點生成新區(qū)塊,通過消息廣播區(qū)塊、第1)步中生成的隨機數(shù)以及零知識證明。
(3)共識節(jié)點收集并驗證其他節(jié)點的消息,選擇其中隨機數(shù)最小的區(qū)塊作為本輪共識的提案,廣播確認(rèn)消息并進入確認(rèn)階段。
該共識機制創(chuàng)造性地將DPOS、VRF、PBFT 算法融合在一起,優(yōu)化了驗證池的選取和拜占庭算法,設(shè)計出適用于許可公有鏈的共識算法,既兼顧了區(qū)塊鏈的去中心化的需求,又保證了區(qū)塊鏈的高性能和安全性。
2.2.2 可信許可機制
作為許可公有鏈,要充分發(fā)揮“許可”的作用。該許可公有鏈在區(qū)塊鏈的底層實現(xiàn)了身份的可信認(rèn)證,主要包括普通節(jié)點的可信許可和用戶的可信許可。
1)節(jié)點的可信許可。
作為許可公有鏈,只有經(jīng)過認(rèn)證的節(jié)點才可以接收用戶交易并將交易廣播給其他節(jié)點,未經(jīng)過認(rèn)證的節(jié)點發(fā)起的交易將不被其他節(jié)點承認(rèn)。
當(dāng)節(jié)點接收到普通賬戶發(fā)來的交易時,會到鏈的系統(tǒng)合約中查詢自己的節(jié)點是否有資質(zhì)接收交易,如果沒有資質(zhì),則拒絕接收交易;如果有資質(zhì),則存入本地交易池,然后使用節(jié)點私鑰對交易進行簽名并把簽名后的消息進行廣播。其他節(jié)點接收到廣播過來的消息,會驗證該消息,驗證方法是:通過消息來計算公鑰,然后通過查詢系統(tǒng)合約是否存在該公鑰,從而確定該消息是否從可信的節(jié)點發(fā)來的,如果不是,則直接丟棄;如果是,則把交易本身存入交易池,然后把交易的原始消息廣播出去。
其他節(jié)點收到消息后,先對交易驗證(驗證方法:通過簽名計算公鑰,查看公鑰是否在前一節(jié)的系統(tǒng)合約中),如果驗證通過就接收交易,并把原始消息廣播出去,如果驗證不通過,就直接丟棄。具體流程如圖5 所示。
圖5 節(jié)點可信許可流程Fig.5 Node trusted permission flow
2)用戶的可信許可。
為防止有人部署惡意合約,造成無法挽回的損失,需要對部署合約的用戶做出限制,只有經(jīng)過鏈上身份認(rèn)證機構(gòu)認(rèn)證過的用戶才能部署合約,這樣如果有人部署惡意合約,也可以快速定位到對應(yīng)的部署合約的人,盡量挽回?fù)p失。未經(jīng)過鏈上身份認(rèn)證機構(gòu)認(rèn)證的普通賬戶沒有部署合約和發(fā)送大額基本交易權(quán)限。
圖6 用戶可信許可流程Fig.6 User trusted permission flow
跨鏈系統(tǒng)中包括主鏈和子鏈,主子鏈共同構(gòu)成了跨鏈生態(tài)系統(tǒng)。主鏈作為鏈跨鏈技術(shù)的核心,使用了滿足跨鏈在性能和安全性上高要求的許可公有鏈;子鏈則由其他區(qū)塊鏈構(gòu)建而成,具有較強的獨立性,即使出現(xiàn)異常也不會影響其他子鏈正常的跨鏈過程。
2.3.1 主鏈構(gòu)建
跨鏈方案設(shè)計使用安全性高、性能穩(wěn)定的許可公有區(qū)塊鏈來承擔(dān)主鏈。主鏈維護了各個子鏈的注冊申請和信息維護,鏈接各個區(qū)塊鏈的跨鏈交易和交易驗證過程,很好地保證了數(shù)據(jù)的一致性與安全性。
主鏈作為許可公有鏈跨鏈技術(shù)的核心,必須使用滿足跨鏈在性能和安全性上高要求的區(qū)塊鏈。子鏈則由其他區(qū)塊鏈構(gòu)建而成,具有較強的獨立性,即使出現(xiàn)異常也不會影響其他子鏈正常的跨鏈過程。本文設(shè)計使用安全性高、性能穩(wěn)定的區(qū)塊鏈來承擔(dān)主鏈。主鏈需要維護各個子鏈的注冊申請和信息維護,鏈接各個區(qū)塊鏈的跨鏈交易和交易驗證過程。
主鏈跨鏈平臺設(shè)計了安全的注冊機制,保證注冊到其上的子鏈?zhǔn)强煽赜行У摹H我粭l想加入跨鏈平臺接入主鏈的子鏈,都需要通過抵押的方式在主鏈的注冊合約中發(fā)起注冊提案,共識完成后會給該子鏈分配唯一的ID。主鏈也可以通過多個節(jié)點投票的方式注銷惡意注冊的信息,拒絕所有該惡意子鏈信息的跨鏈請求。
主鏈中設(shè)計了可插拔網(wǎng)關(guān)組件,保證與注冊到其上的子鏈進行有效的通信。以往中繼跨鏈方式中,子鏈要加入到跨鏈體系中都需要為子鏈的加入進行大量的適配工作,復(fù)雜度和工作量都將嚴(yán)重影響了跨鏈體系多種子鏈的動態(tài)進入過程。作為子鏈和主鏈的鏈接通道,通道必須盡量在子鏈端簡化使其易加入而又不影響安全性和獨立性。許可公有鏈跨鏈技術(shù)通過使用可插拔網(wǎng)關(guān)組件鏈接主子鏈,并負(fù)責(zé)將子鏈的區(qū)塊頭、跨鏈交易和簡單支付驗證(Simplified Payment Verification,SPV)信息等提交到主鏈中。
主鏈中設(shè)計了相關(guān)的跨鏈智能合約,保證主子鏈間跨鏈的順利實現(xiàn)。主要通過子鏈注冊管理合約(Register Manager Contract,RMC)、子鏈資產(chǎn)管理合約(Asset Manager Contract,AMC)、SPV 合約。其中:RMC 合約主要負(fù)責(zé)子鏈的注冊服務(wù),包括管理子鏈的名字、子鏈ID、節(jié)點信息等;AMC 合約主要負(fù)責(zé)子鏈中的數(shù)據(jù)、token 等的管理;SPV 合約主要是負(fù)責(zé)子鏈的簡單支付驗證,來支撐跨鏈業(yè)務(wù)的核心邏輯,保證跨鏈交易的有效性與安全性。
2.3.2 子鏈注冊
子鏈需要跨鏈,首先必須在主鏈里注冊登記,分配跨鏈ID??珂湹淖孕枰渔溨С种悄芎霞s或接口調(diào)用,以此滿足可信的跨鏈計算。
新注冊的子鏈可以向注冊合約輸入計劃跨鏈的子鏈ID,申請和對方子鏈進行跨鏈映射,即將該鏈上的資產(chǎn)或數(shù)據(jù)在另一條鏈上進行映射,允許雙方進行跨鏈互操作。子鏈的注冊管理賬戶查詢到新子鏈的映射請求后,可以通過向注冊合約提交映射請求的反饋。如若同意映射請求,則反饋成功映射信息,之后跨鏈組件就可以轉(zhuǎn)發(fā)跨鏈交易信息和事件。
圖7 子鏈注冊Fig.7 Sub chain registration
這種注冊機制是安全的。其安全性主要表現(xiàn)如下。一是子鏈在注冊前必須進行資金抵押,如出現(xiàn)子鏈惡意注冊行為,前期抵押的資金將會被沒收,提高了子鏈的作惡成本;二是子鏈注冊調(diào)用合約過程中,由用戶投票選出的共識節(jié)點會對子鏈的注冊進行背書,可以投票對惡意注冊的信息進行注銷,可以對所有該惡意子鏈信息的跨鏈請求進行拒絕處理。三是注冊相關(guān)的智能合約如RMC 合約、AMC 合約、SPV 合約等邏輯簡單,對代碼進行模塊化使合約函數(shù)保持較小,在部署前進行全面充分的測試,一旦部署,即具有不可篡改性,防止黑客利用合約漏洞進行攻擊。
2.3.3 跨鏈過程
該系統(tǒng)中跨鏈過程需要使用跨鏈交易合法性證明,即Proof,主要用來證明某條跨鏈交易的合法性與有效性。包括兩個方面:一個是形成子鏈區(qū)塊頭部列表鏈,一個是SPV 數(shù)據(jù)驗證。
跨鏈操作時會通過可插拔網(wǎng)關(guān)組件鏈接兩條子鏈,同時監(jiān)聽鏈的出塊信息并傳遞區(qū)塊頭信息等到主鏈上形成子鏈的區(qū)塊頭連接信息。網(wǎng)關(guān)組件會實時獲取子鏈的區(qū)塊數(shù)據(jù),同時提交區(qū)塊頭部數(shù)據(jù)到Proof 合約(用于跨鏈交易合法性證明的智能合約)當(dāng)中形成一個簡化的子鏈,供主鏈進行校驗和SPV 運算驗證。SPV 能夠以最小的代價來計算判斷某條交易是否已經(jīng)被驗證過。主鏈承擔(dān)子鏈交易數(shù)據(jù)校驗的責(zé)任,因此在Proof 合約中需要校驗并保存提交上來的子鏈區(qū)塊頭和相關(guān)交易的SPV 數(shù)據(jù),以此來證明子鏈數(shù)據(jù)的有效性。方便確認(rèn)另一條鏈的交易,保證了兩條鏈的資產(chǎn)總量不變。
跨鏈操作由用戶在子鏈發(fā)起一筆跨鏈交易開始,至主鏈向子鏈提交跨鏈交易反饋,子鏈確認(rèn)跨鏈交易的完成終止。整個過程由跨鏈網(wǎng)關(guān)參與主鏈和子鏈的跨鏈操作,跨鏈網(wǎng)關(guān)主要負(fù)責(zé)監(jiān)聽子鏈和主鏈的跨鏈交易數(shù)據(jù),解析不同鏈的數(shù)據(jù),檢查和校驗數(shù)據(jù)的正確性,補充跨鏈通信協(xié)議完整數(shù)據(jù),轉(zhuǎn)發(fā)子鏈到主鏈、主鏈到子鏈的跨鏈交易數(shù)據(jù),以及監(jiān)控子鏈的正常出塊。這種模式能夠簡單方便實現(xiàn)跨鏈的過程,具備更大的同構(gòu)/異構(gòu)鏈之間的兼容性,也更容易部署和使用,同時保持整個跨鏈過程的隱私性和安全性。
跨鏈系統(tǒng)中主子鏈之間的交易,以子鏈A 中的Alice 用戶和子鏈B 中的Bob 用戶進行跨鏈交易為例說明其交互過程,具體主子鏈間跨鏈交易流程如圖9 所示。
圖8 跨鏈過程Fig.8 Cross-chain process
圖9 主子鏈跨鏈過程示意圖Fig.9 Schematic diagram of cross-chain processes between main chain and sub chains
主子鏈之間跨鏈正常過程處理流程如下。
1)用戶Alice 向子鏈A 的節(jié)點發(fā)起跨鏈數(shù)據(jù)交易。
2)多個跨鏈網(wǎng)關(guān)監(jiān)聽子鏈A 的符合跨鏈通信協(xié)議的跨鏈提案,提交到主鏈的跨鏈合約上。
3)主鏈跨鏈合約對跨鏈網(wǎng)關(guān)提交的交易進行校驗,并進行投票統(tǒng)計達(dá)到拜占庭算法要求的共識個數(shù)達(dá)成提案成功的共識,標(biāo)示提案成功;否則繼續(xù)等待或標(biāo)示失敗。
4)子鏈B 的多個跨鏈網(wǎng)關(guān)監(jiān)聽需要轉(zhuǎn)發(fā)到子鏈B 的跨鏈交易,把交易提交到子鏈B 的跨鏈合約中。
5)子鏈B 的跨鏈合約對跨鏈網(wǎng)關(guān)提交的交易進行校驗,并進行投票統(tǒng)計。達(dá)到拜占庭算法要求的共識個數(shù)后標(biāo)示接收到跨鏈交易。
6)多個跨鏈網(wǎng)關(guān)監(jiān)聽子鏈B 的已接收跨鏈交易數(shù)據(jù),把反饋數(shù)據(jù)提交到主鏈的跨鏈合約中更新跨鏈交易狀態(tài),表示子鏈B 已收到跨鏈交易。
7)子鏈B 的多個跨鏈網(wǎng)關(guān)監(jiān)聽到主鏈已確認(rèn)子鏈B 收到跨鏈交易,把最終確認(rèn)跨鏈交易提交到子鏈B 的跨鏈合約中。
8)子鏈B 的跨鏈合約對跨鏈網(wǎng)關(guān)提交的確認(rèn)接收跨鏈交易進行校驗和投票統(tǒng)計。至此就能確定子鏈B 已經(jīng)收到跨鏈交易數(shù)據(jù)了。
9)子鏈A 的多個跨鏈網(wǎng)關(guān)監(jiān)聽到主鏈已確認(rèn)子鏈B 收到跨鏈交易,把最終確認(rèn)跨鏈交易提交到子鏈A 的跨鏈合約中。
10)子鏈A 的跨鏈合約對跨鏈網(wǎng)關(guān)提交的確認(rèn)接收跨鏈交易進行校驗和投票統(tǒng)計。標(biāo)示此次跨鏈交易過程正常結(jié)束。
基于上述關(guān)于主子鏈架構(gòu)的許可公有鏈的研究,構(gòu)建實驗環(huán)境,并對該許可公有鏈的性能進行測試,以驗證許可公有鏈設(shè)計的可行性、共識機制的先進性和運行的高效性。
本次實驗選用18 臺服務(wù)器,每臺服務(wù)器配置為32 GB 內(nèi)存、16 核CPU、1T 存儲硬盤,服務(wù)器之間通過千兆網(wǎng)絡(luò)進行通信。由于PBFT 共識容忍的錯誤節(jié)點個數(shù)f=(N-1)/3,為保證每個鏈具備足夠的健康共識節(jié)點數(shù)量,實驗搭建1 條主鏈和2 條子鏈,主鏈部署10 個節(jié)點,2 條子鏈各部署4 個節(jié)點。節(jié)點以Docker 容器的形式部署在相應(yīng)的服務(wù)器上,保證共識機制的正常工作。實驗利用自定義腳本對主鏈進行測試,待系統(tǒng)穩(wěn)定后開始計時,共監(jiān)測24 h,每6 min 記錄一次數(shù)據(jù),從交易吞吐量、交易延遲、區(qū)塊大小、資源消耗等幾方面處理能力進行評估,為確定該系統(tǒng)是否滿足業(yè)務(wù)需求提供參考數(shù)據(jù)。
自定義腳本的偽代碼如下:
同時,實驗中還與超級賬本Fabric、企業(yè)以太坊聯(lián)盟Quorum 在交易吞吐量、交易延遲等方面做了對比。綜合來看,該基于主子鏈的許可公有鏈比Fabric、Quorum 具有更高的交易吞吐量、更低的交易延遲。
1)交易吞吐量。
區(qū)塊鏈的交易吞吐量一般用TPS 來表示,指系統(tǒng)每秒處理并寫入?yún)^(qū)塊鏈的交易數(shù)目。主要用來衡量區(qū)塊鏈單位時間內(nèi)處理交易的能力,是區(qū)塊鏈系統(tǒng)性能的重要指標(biāo)。如果TPS 值太低,很容易造成區(qū)塊鏈網(wǎng)絡(luò)的堵塞擁擠,大量交易排隊等待打包的場景。比如以太坊區(qū)塊鏈在高峰期就會很擁堵,導(dǎo)致用戶需要花費很高的gas 費用才能實現(xiàn)區(qū)塊的打包。由此可見,每秒幾十或者上百的吞吐量在日益增長的用戶需求面前顯得捉襟見肘。實驗中通過發(fā)送大量的交易請求,統(tǒng)計服務(wù)端處理過的交易的數(shù)量。圖10 是交易吞吐量實驗圖。
圖10 交易吞吐量Fig.10 Transaction throughput
經(jīng)測試,該基于主子鏈的許可公有鏈吞吐量最高可達(dá)到25 000 TPS,遠(yuǎn)遠(yuǎn)高于Fabric、Quorum 的1 000 TPS 左右的數(shù)值,極大地提高了交易的并發(fā)處理能力,基本滿足了用戶的使用需求。
2)交易延遲。
區(qū)塊鏈的交易延遲是指一筆交易從提交到共識確認(rèn)完成花費的時間[22],具體包括從客戶端發(fā)起請求、經(jīng)過共識節(jié)點驗證、最終被打包到區(qū)塊鏈賬本整個過程。理論最小時延為共識所需時間加上網(wǎng)絡(luò)消息往返時間。理論最大時延(交易不排隊的情況下)為一筆交易提交時,剛好有一個新的區(qū)塊正準(zhǔn)備生成,則該筆交易會放到下一個區(qū)塊。實驗通過在發(fā)送交易的瞬間記錄時間,當(dāng)收到交易已經(jīng)處理的通知時再次記錄時間,最后求出求兩次時間差,結(jié)果如圖11 所示。經(jīng)過測試,該基于主子鏈的許可公有鏈的交易延遲都很短,平均延遲時間在8 s,F(xiàn)abric、Quorum 的延遲大多集中的12 s 左右。相比于其他區(qū)塊鏈,該許可公有鏈交易更高效。
圖11 交易延遲時間Fig.11 Transaction delay time
后期又通過改變節(jié)點數(shù)量,對節(jié)點數(shù)量加倍,觀察測試不同的節(jié)點數(shù)量對時延數(shù)據(jù)的影響,實驗發(fā)現(xiàn),該基于主子鏈的許可公有鏈的交易延遲隨著節(jié)點數(shù)量的增加并未出現(xiàn)明顯變化,平均延遲時間在8~9 s,而Fabric、Quorum 的延遲大約有10%的增長。
圖12 不同節(jié)點數(shù)量下的交易延遲時間對比Fig.12 Comparison of transaction delay time under different node numbers
3)區(qū)塊數(shù)據(jù)大小。
區(qū)塊的大小一定程度上也影響著區(qū)塊的性能:區(qū)塊太大,傳輸?shù)乃俣认嗑蜁p慢,意味著需要更長的時間來驗證和傳播;但如果區(qū)塊太小,每個區(qū)塊打包的交易就會相應(yīng)減少,也會影響交易速度。結(jié)合選用的DPOS+PBFT 雙層共識機制,綜合考慮當(dāng)前網(wǎng)絡(luò)狀況和交易排隊情況,該基于主子鏈的許可公有鏈可自主對區(qū)塊的大小進行配置,兼顧速度和效率的平衡。實驗中測得的區(qū)塊鏈大小數(shù)據(jù)在1~1.5 MB。
圖13 區(qū)塊數(shù)據(jù)大小Fig.13 Block data size
4)交易資源消耗。
服務(wù)器CPU 指標(biāo)表示的CPU 的負(fù)載情況,測試中取一段時間的平均值進行記錄并繪制圖形,如圖14 所示。實驗發(fā)現(xiàn)在服務(wù)器配置相同的條件下,該基于主子鏈的許可公有鏈的CPU 負(fù)載明顯低于Fabric、Quorum 區(qū)塊鏈,處理速度更快,效率更高。
圖14 CPU負(fù)載Fig.14 CPU load
實驗結(jié)果表明,通過對本文改進的新型許可公有鏈、Fabric 以及Quorum 這3 條區(qū)塊鏈在交易吞吐量、交易延遲、資源消耗等方面的對比,本文改進的新型許可公有鏈無論是設(shè)計的可行性,還是共識的先進性和運行的高效性,都具有較顯著的優(yōu)勢。共識時延是算法性能的直接體現(xiàn),由于Fabric、Quorum 采用的傳統(tǒng)PBFT 共識,沒有針對具體的業(yè)務(wù)場景進行改進,其交易延遲、資源消耗等相對較高。本文設(shè)計的新型許可公有鏈采用混合共識機制,通過使用DPOS 的驗證池選取,既限制了參與者數(shù)量,又保證了動態(tài)隨機的選取,確保了拜占庭容錯算法性能達(dá)到最優(yōu);通過融合VRF 的PBFT 算法兩種方式,使得節(jié)點區(qū)塊打包的不可預(yù)測,確保了共識機制的安全可靠。這些都表明本文改進的新型許可公有鏈共識算法更具先進性,系統(tǒng)運行更高效、更安全。
主子跨鏈技術(shù)是區(qū)塊鏈領(lǐng)域發(fā)展的里程碑,是一種實現(xiàn)鏈間融合的核心技術(shù)。本文基于區(qū)塊鏈技術(shù),采用“主鏈+子鏈”鏈群架構(gòu),既具有公有區(qū)塊鏈開放、靈活、可擴展性等特性,又具有聯(lián)盟區(qū)塊鏈易于監(jiān)管、高性能、安全可控等特性。融合中繼、公證人跨鏈模式的優(yōu)點,通過安全注冊服務(wù)、可插拔網(wǎng)關(guān)組件、強兼容的跨鏈通信協(xié)議等保證了跨鏈交易的安全、高效性。
本文提出的這種新型的許可公有鏈架構(gòu),是對區(qū)塊鏈跨鏈技術(shù)、鏈群可擴展性的一次重要嘗試,豐富了區(qū)塊鏈生態(tài)。為進一步研究不同異構(gòu)類型區(qū)塊鏈跨鏈互通、數(shù)據(jù)互聯(lián)提供了技術(shù)支撐,下一步會結(jié)合具體場景對許可公有鏈進行優(yōu)化,在智能合約、共識算法的靈活接入方便做一些研究,推動區(qū)塊鏈行業(yè)的發(fā)展。