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