劉孝保,孫海彬,陰艷超,姚廷強,楊 林
(昆明理工大學 機電工程學院,云南 昆明 650500)
由于區(qū)塊鏈技術(shù)的去中心化、自信任、防篡改、可溯源、分布式賬本信息協(xié)同一致等特點,引起了全球各國的重視[1]。對于國內(nèi)區(qū)塊鏈的發(fā)展,由國務(wù)院印發(fā)的《“十三五”國家信息化規(guī)劃》文件,其中區(qū)塊鏈技術(shù)已成為國家布局的重點領(lǐng)域[2]。2019年10月24日,習近平同志在主持中共中央政治局第十八次集體學習時強調(diào),要加快推動區(qū)塊鏈技術(shù)和產(chǎn)業(yè)創(chuàng)新發(fā)展,積極推進區(qū)塊鏈和經(jīng)濟社會融合發(fā)展[3]。工業(yè)和信息化部發(fā)布的《中國區(qū)塊鏈技術(shù)和應(yīng)用發(fā)展白皮書》[4]和工業(yè)互聯(lián)網(wǎng)產(chǎn)業(yè)聯(lián)盟與可信區(qū)塊鏈推進計劃(TBI)發(fā)布的《工業(yè)區(qū)塊鏈白皮書》著重分析了國家工業(yè)領(lǐng)域所面臨的挑戰(zhàn),融合區(qū)塊鏈技術(shù)將給工業(yè)領(lǐng)域的發(fā)展注入新的動力。制造業(yè)產(chǎn)業(yè)鏈作為工業(yè)領(lǐng)域的核心部分,對國家的經(jīng)濟、國防建設(shè)等方面起著至關(guān)重要的作用,引入?yún)^(qū)塊鏈技術(shù)將助力整個制造業(yè)轉(zhuǎn)型與升級。
目前,國內(nèi)外許多學者投入到了區(qū)塊鏈領(lǐng)域的研究,且主要集中于金融、物聯(lián)網(wǎng)、醫(yī)療領(lǐng)域的應(yīng)用研究,以及區(qū)塊鏈底層技術(shù)的研究。金融領(lǐng)域主要是針對跨境支付[5]、數(shù)字貨幣[6-8]的研究,物聯(lián)網(wǎng)領(lǐng)域多集中于電力[9]、數(shù)據(jù)共享與管理[10-12]、訪問控制[13-14]的研究,以及醫(yī)療領(lǐng)域的電子病歷[15-16]、醫(yī)療數(shù)據(jù)共享[17-18]研究。區(qū)塊鏈底層技術(shù)的研究主要圍繞解決區(qū)塊鏈存儲容量[19-20]、能耗高與擴展性問題[21-23]等方面。然而,對于區(qū)塊鏈在制造業(yè)產(chǎn)業(yè)鏈方面鮮有研究,并且基于鏈式結(jié)構(gòu)的區(qū)塊鏈構(gòu)建具有復(fù)雜業(yè)務(wù)關(guān)系的制造業(yè)產(chǎn)業(yè)鏈的區(qū)塊鏈模型還存在一定的困難,現(xiàn)階段的制造業(yè)均是多種業(yè)務(wù)相關(guān)的產(chǎn)業(yè)鏈而形成制造業(yè)產(chǎn)業(yè)鏈,并非是傳統(tǒng)的單產(chǎn)業(yè)鏈模式。
為此,基于制造業(yè)產(chǎn)業(yè)鏈動態(tài)式的擴展性、業(yè)務(wù)關(guān)系的復(fù)雜性、分布式結(jié)構(gòu)的業(yè)務(wù)協(xié)同特點,本文提出了面向制造業(yè)產(chǎn)業(yè)鏈的圖狀區(qū)塊鏈(簡稱區(qū)塊圖)模型。該模型將傳統(tǒng)區(qū)塊中存儲的信息分解為關(guān)系數(shù)據(jù)與業(yè)務(wù)數(shù)據(jù),分別構(gòu)建物理區(qū)塊賬本與關(guān)系集群;物理區(qū)塊通過映射機制生成映射節(jié)點,由關(guān)系集群構(gòu)建基于物理節(jié)點的關(guān)系模型;依據(jù)制造業(yè)產(chǎn)業(yè)鏈業(yè)務(wù)邏輯關(guān)系,建立制造業(yè)產(chǎn)業(yè)鏈聯(lián)盟圖的運行機制,并構(gòu)建滿足業(yè)務(wù)需求的智能合約與制造業(yè)產(chǎn)業(yè)鏈分布式業(yè)務(wù)協(xié)同的共識機制;最后,搭建了制造業(yè)聯(lián)盟圖架構(gòu),為區(qū)塊鏈在制造業(yè)產(chǎn)業(yè)鏈的研究提供了新的思路與理論研究模型。
制造業(yè)產(chǎn)業(yè)鏈是由業(yè)務(wù)關(guān)聯(lián)的多產(chǎn)業(yè)鏈集成[24],每條產(chǎn)業(yè)鏈均包含原材料、零部件制造、銷售、售后服務(wù)等多個企業(yè)及企業(yè)之間的業(yè)務(wù)關(guān)系,由此構(gòu)成了制造業(yè)產(chǎn)業(yè)鏈,如圖1所示。
制造業(yè)產(chǎn)業(yè)鏈業(yè)務(wù)邏輯模型包含制造業(yè)企業(yè)內(nèi)部業(yè)務(wù)、制造業(yè)企業(yè)群內(nèi)部業(yè)務(wù)、制造業(yè)企業(yè)群之間的業(yè)務(wù),形成具有新舊交替的動態(tài)擴展、業(yè)務(wù)信息復(fù)雜、分布式網(wǎng)狀結(jié)構(gòu)業(yè)務(wù)特點的制造業(yè)產(chǎn)業(yè)鏈聯(lián)盟。目前,因為鏈式結(jié)構(gòu)區(qū)塊鏈出現(xiàn)最早,并且現(xiàn)有的平臺應(yīng)用也相對較多,所以較多的區(qū)塊鏈技術(shù)應(yīng)用是采用鏈式結(jié)構(gòu)區(qū)塊鏈,如圖2所示。
針對制造業(yè)產(chǎn)業(yè)鏈包含著復(fù)雜的業(yè)務(wù)關(guān)系,然而基于鏈式結(jié)構(gòu)的區(qū)塊鏈構(gòu)建制造業(yè)產(chǎn)業(yè)鏈區(qū)塊鏈主要存在以下問題:
(1)難以處理復(fù)雜的業(yè)務(wù) 鏈式存儲結(jié)構(gòu)的區(qū)塊鏈,僅是將業(yè)務(wù)信息簡單的存儲到區(qū)塊中,不存在專門的業(yè)務(wù)關(guān)系處理,然而對于分布式制造業(yè)產(chǎn)業(yè)鏈包含一對多、多對多等復(fù)雜關(guān)系,鏈式結(jié)構(gòu)的區(qū)塊鏈是無法處理的。雖然,企業(yè)級的區(qū)塊鏈支持跨鏈業(yè)務(wù),但僅能夠訪問其數(shù)據(jù),無法對其進行修改或新增的操作,還不能滿足制造業(yè)產(chǎn)業(yè)鏈的業(yè)務(wù)需求。
(2)動態(tài)可擴展性差 鏈式結(jié)構(gòu)區(qū)塊鏈只能沿著一條主鏈單向往后延伸,而不能根據(jù)需求對已經(jīng)生成的區(qū)塊進行替換或分叉。針對制造業(yè)產(chǎn)業(yè)鏈上的業(yè)務(wù)協(xié)作,存在舊企業(yè)的淘汰與新企業(yè)的產(chǎn)生,并伴隨著關(guān)系的新舊交替而重新建立,由于鏈式結(jié)構(gòu)的限制,動態(tài)擴展性差的鏈式區(qū)塊鏈難以滿足跨企業(yè)群之間業(yè)務(wù)交互以及新舊關(guān)系替換的動態(tài)性變化。
常用的區(qū)塊鏈模型是一種典型的鏈式結(jié)構(gòu),多用于諸如金融交易等鏈式業(yè)務(wù)模型。而制造業(yè)產(chǎn)業(yè)鏈是由多條業(yè)務(wù)相關(guān)的產(chǎn)業(yè)鏈形成的一種典型的網(wǎng)狀結(jié)構(gòu),業(yè)務(wù)之間存在復(fù)雜的網(wǎng)狀關(guān)系[24],如使用鏈式結(jié)構(gòu)的區(qū)塊鏈則需將復(fù)雜的網(wǎng)狀關(guān)系拆解成眾多的鏈式結(jié)構(gòu),將大幅增加跨鏈業(yè)務(wù)處理,因此處理效率和業(yè)務(wù)的擴展性將受到巨大影響[25]。圖結(jié)構(gòu)是專門用于復(fù)雜網(wǎng)狀關(guān)系模型表征的數(shù)據(jù)結(jié)構(gòu),采用圖結(jié)構(gòu)進行制造業(yè)復(fù)雜關(guān)系網(wǎng)絡(luò)的直接表征,將大大提高系統(tǒng)的擴展性、系統(tǒng)性和運行效率。
因為鏈式結(jié)構(gòu)的區(qū)塊鏈在制造業(yè)產(chǎn)業(yè)鏈區(qū)塊鏈模型構(gòu)建中存在問題,所以摒棄鏈式結(jié)構(gòu)的區(qū)塊鏈,提出面向制造業(yè)產(chǎn)業(yè)鏈的圖狀區(qū)塊鏈。
綜合考慮制造業(yè)產(chǎn)業(yè)鏈特點,以及存儲容量與運行效率之間的關(guān)系:①物理區(qū)塊中存儲的粒度為單筆交易,便于業(yè)務(wù)中的關(guān)系信息表征,旨在滿足動態(tài)變化的產(chǎn)業(yè)鏈關(guān)系模型構(gòu)建;②提升業(yè)務(wù)信息遍歷效率,鏈式結(jié)構(gòu)的區(qū)塊鏈在業(yè)務(wù)查詢時,不僅要尋找到對應(yīng)的區(qū)塊,還需要從區(qū)塊中多筆業(yè)務(wù)信息找到所需的業(yè)務(wù)內(nèi)容,而區(qū)塊圖中查詢到既定的區(qū)塊,業(yè)務(wù)信息即已確定,故而采用單筆業(yè)務(wù)形成單個區(qū)塊的方式構(gòu)建物理區(qū)塊模型。
物理區(qū)塊是由業(yè)務(wù)信息經(jīng)解析的業(yè)務(wù)數(shù)據(jù)排序打包產(chǎn)生,其分為3部分:第①部分由區(qū)塊序號(或區(qū)塊高度)Block Num、業(yè)務(wù)數(shù)據(jù)哈希Data Hash、區(qū)塊哈希Block Hash與標識制造企業(yè)集群Title組成。Block Hash=Hash(Block Num+Data Hash+Title),一旦區(qū)塊中的任何部分發(fā)生微小的改變,都會引發(fā)Block Hash的巨大變化:第②部分不同于將多筆交易打包成單個區(qū)塊的傳統(tǒng)區(qū)塊鏈,其打包的粒度是單筆業(yè)務(wù)交易,即每個區(qū)塊中僅包含一條業(yè)務(wù)交易的數(shù)據(jù)。業(yè)務(wù)數(shù)據(jù)Data經(jīng)過哈希加密得到Hash值,并作為第①部分的Data Hash值,任何業(yè)務(wù)數(shù)據(jù)被篡改,Data Hash均會產(chǎn)生相應(yīng)的變化,并通過此方式防止數(shù)據(jù)被篡改;第③部分存儲的是相應(yīng)制造業(yè)聯(lián)盟的身份證書和簽名,用于標識區(qū)塊中業(yè)務(wù)的合法性,如圖3所示。
2.2.1 物理區(qū)塊映射
通過雙映射機制建立物理區(qū)塊與區(qū)塊圖頂點數(shù)據(jù)之間的聯(lián)系,映射相關(guān)定義如下:
(1)相關(guān)定義
定義1區(qū)塊元數(shù)據(jù)。唯一標識區(qū)塊的Block Num(Bn)、Data Hash(Dh)、Block Hash(Bh)與標識企業(yè)集群的Title(Ti)組成元數(shù)據(jù),構(gòu)成的四元組(Bn,Dh,Bh,Ti)集合記為X,X表示區(qū)塊元數(shù)據(jù);某一區(qū)塊對應(yīng)的四元組(bn,dh,bh,ti)記為x,x∈X。
定義2映射節(jié)點。在區(qū)塊元數(shù)據(jù)中作為核心索引依據(jù)的數(shù)據(jù)項Block Hash(Bh)與TitleHash(Th)構(gòu)成映射節(jié)點數(shù)據(jù),組成的二元組(Th,Bh)集合記為Y,Y表示映射節(jié)點;某一映射節(jié)點對應(yīng)的(th,bh)記為y,y∈Y。
定義3關(guān)系節(jié)點標識。由Block ID(Bd)組成,Bd的集合記為Z,Z表示關(guān)系節(jié)點標識;某一關(guān)系節(jié)點標識記為z,z∈Z。
定義4區(qū)塊元映射。區(qū)塊元數(shù)據(jù)與映射節(jié)點的對應(yīng)關(guān)系,表示為:f1:X→Y。
定義5索引映射。映射節(jié)點與關(guān)系節(jié)點標識的轉(zhuǎn)換關(guān)系,表示為:f2:Y→Z。
(2)雙映射機制
步驟1物理區(qū)塊信息抽取。BlockInfo為物理區(qū)塊信息,BlockMeta為區(qū)塊元數(shù)據(jù),通過抽取物理區(qū)塊信息BlockInfo中的區(qū)塊序號Bn,數(shù)據(jù)哈希Dh,區(qū)塊哈希Bh,企業(yè)集群標識Ti組成區(qū)塊元數(shù)據(jù)BlockMeta。
步驟2區(qū)塊元映射。MPInfo是映射節(jié)點信息,TDInfo是中間信息,區(qū)塊元數(shù)據(jù)BlockMeta經(jīng)過雙映射機制中的區(qū)塊元映射形成映射節(jié)點信息MPInfo。
步驟3索引映射。其中:BlockID為關(guān)系節(jié)點標識;Bt為中間信息;BlockInfo(Bb)構(gòu)建基于Bn(區(qū)塊序號或高度)的檢索方式,并集成于Bd的鍵值對中;由映射節(jié)點信息MPInfo通過雙映射機制中的索引映射得到關(guān)系節(jié)點標識BlockID。
步驟4由關(guān)系節(jié)點標識BlockID標識關(guān)系節(jié)點ReNode,映射節(jié)點MPNode構(gòu)建區(qū)塊圖的頂點V。其中:Relation是與BlockID對應(yīng)的業(yè)務(wù)關(guān)系信息,G表示區(qū)塊圖,V={v0,v1,…}表示區(qū)塊圖中的頂點集合,E={e0,e1,…}表示區(qū)塊圖中的邊集合,最終由映射節(jié)點MPNode與ReNode共同構(gòu)成區(qū)塊圖G。
2.2.2 業(yè)務(wù)關(guān)系模型
制造業(yè)產(chǎn)業(yè)鏈上任何一條業(yè)務(wù)均包含著大量的關(guān)系信息,將此種關(guān)系分解為類型(type)與屬性(property),其中類型包含單向(single)、雙向(double)、無向(non),通過不同的組合形式表征產(chǎn)業(yè)鏈上企業(yè)之間的不同的業(yè)務(wù)關(guān)系,結(jié)合業(yè)務(wù)的多個屬性(Property1,Property2,Property3,…)共同描述一條復(fù)雜的業(yè)務(wù)關(guān)系內(nèi)容,以此構(gòu)建業(yè)務(wù)關(guān)系模型。
業(yè)務(wù)關(guān)系模型中的類型是由具體業(yè)務(wù)場景定義,例如制造業(yè)產(chǎn)業(yè)鏈的三種業(yè)務(wù)類型表征產(chǎn)業(yè)鏈上企業(yè)之間的業(yè)務(wù)流向。基本業(yè)務(wù)關(guān)系模型的Type取集合{single,double,non}中的一種,業(yè)務(wù)關(guān)系的屬性是由多個子屬性構(gòu)成的集合,兩端節(jié)點表示與業(yè)務(wù)關(guān)系相關(guān)聯(lián)的企業(yè),三種基本的業(yè)務(wù)關(guān)系表達式如下:
單向(single):企業(yè)A-[single:{Property1,Property2,…,PropertyN}]-企業(yè)B,
雙向(double):企業(yè)C-[double:{Property1,Property2,…,PropertyN}]-企業(yè)D,
無向(non):企業(yè)E-[non:{Property1,Property2,…,PropertyN}]-企業(yè)F。
通過基本業(yè)務(wù)關(guān)系的組合構(gòu)建混合型業(yè)務(wù)關(guān)系模型,并由混合型關(guān)系模型描述復(fù)雜的制造業(yè)產(chǎn)業(yè)鏈關(guān)系?;旌详P(guān)系模型如下:
通過雙映射機制與業(yè)務(wù)關(guān)系的構(gòu)建,最終形成區(qū)塊圖,如圖5所示。
在區(qū)塊圖形成過程中,實際的雙映射機制是區(qū)塊元數(shù)據(jù)、映射集群與關(guān)系集群的物理存儲結(jié)構(gòu)中數(shù)據(jù)之間的映射,如圖6所示。
基于物理區(qū)塊映射機制構(gòu)建了區(qū)塊元數(shù)據(jù)、映射集群與關(guān)系集群存儲的物理結(jié)構(gòu),而最后建立的關(guān)系集群物理結(jié)構(gòu)分為“Header_Map”與“Relation”兩部分:①“Header_Map”中的“Title”與映射節(jié)點中的“Title”一一對應(yīng);“Block_NumMap”與物理區(qū)塊序號一一對應(yīng);“Block_ID”對應(yīng)于映射節(jié)點中的Block_Hash,Block_ID=Hash(Block_Hash)。②關(guān)系是存儲于“Relation”中的“Link_hash”數(shù)組中,由鍵值對組成,鍵分為“out”,“in”,“double”,“non”,分別表征三類業(yè)務(wù)驅(qū)動關(guān)系,其對應(yīng)的值是由關(guān)系雙方的Block_ID組合加密而成。
基于構(gòu)建的面向制造業(yè)產(chǎn)業(yè)鏈區(qū)塊圖,從企業(yè)與用戶的角度設(shè)計構(gòu)建制造業(yè)產(chǎn)業(yè)鏈聯(lián)盟圖模型,解決鏈上企業(yè)內(nèi)部、企業(yè)之間、跨企業(yè)群之間復(fù)雜業(yè)務(wù)的處理、數(shù)據(jù)存儲問題,聯(lián)盟圖架構(gòu)如圖7所示。
制造業(yè)產(chǎn)業(yè)鏈聯(lián)盟圖架構(gòu)包括制造聯(lián)盟網(wǎng)絡(luò)層、排序?qū)?、背書層、業(yè)務(wù)層。
(1)業(yè)務(wù)層 業(yè)務(wù)種類分為制造業(yè)產(chǎn)業(yè)鏈上的制造企業(yè)內(nèi)部業(yè)務(wù)、制造業(yè)企業(yè)群內(nèi)部業(yè)務(wù)、制造業(yè)企業(yè)群之間的業(yè)務(wù),其主要對用戶提交的業(yè)務(wù)信息完整性進行核驗,并對業(yè)務(wù)進行歸類與規(guī)則化。
(2)背書層 ①制造業(yè)產(chǎn)業(yè)鏈上有多家制造企業(yè),形成背書層的背書節(jié)點負責對產(chǎn)業(yè)鏈上的制造企業(yè)進行身份背書,通過了背書核驗的企業(yè)才能進入制造聯(lián)盟,并對動態(tài)增加和脫離的企業(yè)成員的身份證書進行相應(yīng)的頒發(fā)與吊銷;②客戶提交的業(yè)務(wù)也是由背書節(jié)點進行驗證,通過驗證即可背書簽名來標識業(yè)務(wù)提案的有效性。
(3)排序?qū)?由眾多的排序節(jié)點提供排序服務(wù),通過排序節(jié)點解析出客戶的具體需求,并根據(jù)具體需求調(diào)用智能合約執(zhí)行相應(yīng)的方法,最終由形成的關(guān)系集群與映射集群共同構(gòu)成區(qū)塊圖。
(4)制造聯(lián)盟網(wǎng)絡(luò)層 根據(jù)制造業(yè)分布式的特點構(gòu)建制造業(yè)聯(lián)盟網(wǎng)絡(luò),形成的區(qū)塊圖存儲于達成共識的各制造企業(yè)節(jié)點。
所謂共識,通俗講是讓分布式系統(tǒng)中各個節(jié)點對某個值或某種狀態(tài)產(chǎn)生相同的看法[26]。為使得制造聯(lián)盟中的去中心化制造企業(yè)節(jié)點對相同事務(wù)處理達成統(tǒng)一的共識[27],構(gòu)建了制造業(yè)產(chǎn)業(yè)鏈聯(lián)盟圖共識機制,旨在解決分布式制造企業(yè)節(jié)點的一致性問題,其包含背書與排序兩個環(huán)節(jié)。
(1)背書環(huán)節(jié)
背書環(huán)節(jié)包含節(jié)點許可認證、業(yè)務(wù)提案驗證、業(yè)務(wù)提案背書,通過背書簽名的提案包含簽名背書業(yè)務(wù)與頒發(fā)的證書,如圖8所示。具體步驟如下:
步驟1節(jié)點許可認證。CA為聯(lián)盟圖中的身份管理服務(wù)節(jié)點,獲取CA中備案的提案節(jié)點許可證書PerNode_license的數(shù)字摘要PerCer,與提案的證書Cert中的AdminsCert經(jīng)過加密后暗文AdCHash進行比對,若相同則節(jié)點許可驗證通過,否則駁回提案,形成過程如下所示:
PerCer=Digest(PerNode_license),
AdCHash=Hash(AdminsCert)。
步驟2業(yè)務(wù)提案驗證。包含業(yè)務(wù)信息完整度的檢驗與信息是否篡改的驗證。信息完整度的檢驗根據(jù)制定的業(yè)務(wù)信息樣板進行匹配,對于信息篡改的驗證是將業(yè)務(wù)信息BusInfo加密得到暗文BusInfoHash,并與中間憑證Intermediate的暗文IntDHash進行對比,同時對比根憑證Root_certs暗文RootHash與中間憑證的暗文IntDHash,兩方面對比均相同驗證即通過,形成過程如下:
BusInfoHash=Hash(Data,Relation),
IntDHash=Hash(Intermediate),
RootHash=Hash(Root_certs)。
步驟3業(yè)務(wù)提案簽名。通過了前兩步的驗證后,即可背書簽名。業(yè)務(wù)提案Proposal
(2)排序環(huán)節(jié)
業(yè)務(wù)新增時才會啟動排序,主要對不同提案的業(yè)務(wù)信息排序與同一提案的業(yè)務(wù)信息中的業(yè)務(wù)數(shù)據(jù)與關(guān)系信息排序。不同提案的排序按照提案生成的時間戳與提案數(shù)量的綜合因素排序,同一提案需要分別對業(yè)務(wù)信息BusInfo中的Data與Relation排序,而Data排序的標準是根據(jù)同一企業(yè)節(jié)點的業(yè)務(wù)數(shù)據(jù)進行歸類打包產(chǎn)生物理區(qū)塊,業(yè)務(wù)關(guān)系Relation的排序依據(jù)關(guān)系模型構(gòu)建的方式,建立企業(yè)節(jié)點之間的關(guān)系模型,并依據(jù)業(yè)務(wù)關(guān)系的數(shù)量封裝為單個的基本業(yè)務(wù)關(guān)系
目前,定義智能合約為一種無需中介、自我驗證、自動執(zhí)行合約條款的計算機協(xié)議[28],為去中心化的制造業(yè)產(chǎn)業(yè)鏈上企業(yè)之間構(gòu)造自信任的交易環(huán)境,故而需要智能合約將傳統(tǒng)的產(chǎn)業(yè)鏈上通過人的信任主導(dǎo)業(yè)務(wù)的往來,轉(zhuǎn)換為以機器信任的業(yè)務(wù)模式[29]。
制造業(yè)產(chǎn)業(yè)鏈聯(lián)盟圖智能合約的設(shè)計需要考慮3個方面的自動執(zhí)行:①提交的業(yè)務(wù)信息需要自動快速的分解,以處理短時間內(nèi)大量的業(yè)務(wù)提案;②關(guān)系模型的構(gòu)建包含雙映射機制與業(yè)務(wù)模型的構(gòu)建,需要自動完成復(fù)雜的映射與模型構(gòu)建,以提高區(qū)塊圖的構(gòu)建效率;③根據(jù)用戶提交的業(yè)務(wù)需求自動調(diào)用相應(yīng)的功能,滿足用戶的使用需求。根據(jù)以上需求,設(shè)計了系統(tǒng)級的業(yè)務(wù)分解、關(guān)系構(gòu)建鏈碼與用戶級的用戶功能鏈碼,如圖9所示。
通過業(yè)務(wù)信息分解鏈碼對用戶提交的業(yè)務(wù)信息進行分解,分解得到的業(yè)務(wù)關(guān)系集由關(guān)系構(gòu)建鏈碼建立區(qū)塊圖中關(guān)系,并與映射集群共同形成區(qū)塊圖,用戶通過調(diào)用用戶功能鏈碼對制造業(yè)聯(lián)盟網(wǎng)絡(luò)中的區(qū)塊圖進行所需的業(yè)務(wù)操作。
制造業(yè)聯(lián)盟圖運轉(zhuǎn)時的結(jié)構(gòu)由三部分組成:①提供給用戶使用的客戶端;②用戶登記注冊與數(shù)字證書管理的身份管理服務(wù);③區(qū)塊圖網(wǎng)絡(luò)。如圖10所示。
依據(jù)制造業(yè)產(chǎn)業(yè)鏈上業(yè)務(wù)運行方式,設(shè)計構(gòu)建了制造業(yè)聯(lián)盟圖業(yè)務(wù)運行機制,如圖11所示。
制造業(yè)聯(lián)盟圖業(yè)務(wù)運行機制包含業(yè)務(wù)查詢機制與業(yè)務(wù)新增機制,通過排序節(jié)點解析出用戶提交的業(yè)務(wù)需求,并執(zhí)行相應(yīng)的業(yè)務(wù)運行機制。
在執(zhí)行業(yè)務(wù)運行機制時,均需對區(qū)塊圖進行遍歷以確定對區(qū)塊圖操作的具體位置。圖結(jié)構(gòu)的遍歷方法通常分為深度優(yōu)先遍歷與廣度優(yōu)先遍歷兩種,兩種遍歷方法具有不同的優(yōu)缺點:深度優(yōu)先遍歷占內(nèi)存少但速度較慢,廣度優(yōu)先遍歷占內(nèi)存多但速度較快,因此需要根據(jù)業(yè)務(wù)模型的實際情況合理的確定采用何種遍歷方法。
(1)業(yè)務(wù)查詢機制
查詢機制中的關(guān)鍵過程包含:①背書節(jié)點對提案的驗證與背書;②排序節(jié)點對業(yè)務(wù)的解析,調(diào)用遍歷節(jié)點,以及由遍歷節(jié)點分別對背書節(jié)點與關(guān)系節(jié)點進行調(diào)用;③通過關(guān)系節(jié)點對關(guān)系信息與物理區(qū)塊信息進行查詢,反饋給用戶。
(2)業(yè)務(wù)新增機制
由圖11可知,業(yè)務(wù)新增機制的結(jié)構(gòu)與業(yè)務(wù)查詢機制的結(jié)構(gòu)相同,在機制運行流程方面,業(yè)務(wù)新增機制相較于業(yè)務(wù)查詢更復(fù)雜,增加了①排序節(jié)點對新增業(yè)務(wù)信息的打包、區(qū)塊的產(chǎn)生;②排序節(jié)點將生成的區(qū)塊與關(guān)系信息分別廣播給物理區(qū)塊賬本、關(guān)系集群,進行存儲。
目前,在數(shù)據(jù)存儲方面使用較多的數(shù)據(jù)庫是關(guān)系型數(shù)據(jù)庫,而區(qū)塊圖是基于圖結(jié)構(gòu)的方式存儲,其檢索效率類比圖數(shù)據(jù)庫,關(guān)系型數(shù)據(jù)庫與圖數(shù)據(jù)庫在執(zhí)行的效率方面有著很大的差距,如表1所示。
表1 關(guān)系型數(shù)據(jù)庫與圖數(shù)據(jù)庫執(zhí)行效率對比[30]
由表1可知,在深度為2時,無論是關(guān)系型數(shù)據(jù)庫還是圖數(shù)據(jù)庫,其執(zhí)行時間表現(xiàn)都比較好。當深度為3時,關(guān)系型數(shù)據(jù)庫執(zhí)行所需的時間明顯已經(jīng)遠超過圖數(shù)據(jù)庫執(zhí)行時間。當深度達到5時,關(guān)系型數(shù)據(jù)庫出現(xiàn)了難以完成所執(zhí)行的任務(wù),而圖數(shù)據(jù)在2秒左右的時間就返回了結(jié)果,并且隨著執(zhí)行的深度增加圖數(shù)據(jù)庫執(zhí)行所需時間增長幅度差別很小,驗證了圖結(jié)構(gòu)的數(shù)據(jù)存儲方式的檢索效率遠高于普通的關(guān)系型數(shù)據(jù)存儲方式。
關(guān)系型數(shù)據(jù)庫經(jīng)過了五十多年的發(fā)展和應(yīng)用,技術(shù)已經(jīng)趨向于穩(wěn)定、成熟,廣泛應(yīng)用于各種商業(yè)場景。而隨著存在復(fù)雜關(guān)系的海量數(shù)據(jù)大量出現(xiàn),傳統(tǒng)的關(guān)系型數(shù)據(jù)庫已經(jīng)開始無法滿足實際業(yè)務(wù)需求。由于圖數(shù)據(jù)庫提供了對關(guān)聯(lián)數(shù)據(jù)最直接的表達,具有高效的關(guān)系信息處理能力、可擴展性強等特點,能夠解決許多關(guān)系型數(shù)據(jù)庫無法處理的問題。為此,近幾年圖數(shù)據(jù)庫得到飛速發(fā)展,諸如亞馬遜、華為等頭部企業(yè)都紛紛投入到圖數(shù)據(jù)庫的研究和應(yīng)用中,世界百強企業(yè)中使用圖數(shù)據(jù)庫的企業(yè)占比已經(jīng)達到76%,圖數(shù)據(jù)庫的廣泛應(yīng)用將是未來的主流趨勢之一。因而,采用圖結(jié)構(gòu)的數(shù)據(jù)存儲方式能夠很好的處理制造業(yè)產(chǎn)業(yè)鏈中復(fù)雜業(yè)務(wù)關(guān)系。
實驗環(huán)境為Intel XeonCPU E7-887010核服務(wù)器,通過VMwareWorkstation16建立虛擬機,安裝內(nèi)存為3.5 G,硬盤為20 G的Ubuntu64系統(tǒng),以及區(qū)塊鏈構(gòu)建的基礎(chǔ)工具cryptogen、configtxgen、configtxlator;實驗數(shù)據(jù)以陜西某有限責任公司曲軸事業(yè)部的原材料采購、設(shè)計、加工制造、銷售環(huán)節(jié)的部分數(shù)據(jù)為例,開展區(qū)塊圖驗證實驗。
(1)區(qū)塊圖生成驗證
通過構(gòu)建曲軸的原材料采購、設(shè)計、加工制造、銷售等產(chǎn)業(yè)鏈環(huán)節(jié)的區(qū)塊圖,驗證提出面向制造業(yè)產(chǎn)業(yè)鏈圖狀區(qū)塊鏈的可行性。曲軸制造過程4個環(huán)節(jié)中存儲的信息如表2所示。
表2 曲軸的四個環(huán)節(jié)相關(guān)信息
依據(jù)表2曲軸各環(huán)節(jié)信息明細,規(guī)范曲軸事業(yè)部提供的各環(huán)節(jié)信息作為物理區(qū)塊形成的基礎(chǔ)數(shù)據(jù),各環(huán)節(jié)涉及到的企業(yè)通過證書核驗后,直接將企業(yè)相關(guān)信息寫入?yún)^(qū)塊圖,形成區(qū)塊圖中的節(jié)點,由物理區(qū)塊雙映射機制得到映射節(jié)點圍繞在代表企業(yè)的節(jié)點周圍,通過企業(yè)之間的業(yè)務(wù)關(guān)系按照業(yè)務(wù)關(guān)系模型構(gòu)建機制形成區(qū)塊圖的邊,并將相應(yīng)的節(jié)點連接形成區(qū)塊圖,如圖12所示。
生成的區(qū)塊圖以加密后的暗文同步存儲于制造聯(lián)盟各節(jié)點,由智能合約中業(yè)務(wù)信息分解鏈碼解析經(jīng)加密的區(qū)塊圖中節(jié)點信息與關(guān)系信息,轉(zhuǎn)化為結(jié)構(gòu)化的JSON文件,并同步繪制如圖12可視化的區(qū)塊圖,使得用戶能夠及時、直觀地了解節(jié)點存儲的區(qū)塊圖信息,以便對產(chǎn)業(yè)鏈上的信息進行管理。
(2)區(qū)塊圖復(fù)雜業(yè)務(wù)處理驗證
在上述生成的曲軸區(qū)塊圖基礎(chǔ)上,通過增加、變更企業(yè)信息與關(guān)系信息模擬實際產(chǎn)業(yè)鏈上企業(yè)與業(yè)務(wù)關(guān)系的交替變化,驗證區(qū)塊圖是否能夠處理類似的復(fù)雜業(yè)務(wù)。實驗測試節(jié)點詳細信息如表3所示。
表3 測試節(jié)點相關(guān)信息
測試實驗通過加入制造聯(lián)盟網(wǎng)絡(luò)的3個節(jié)點(peer1、peer2、peer3)開展,peer1節(jié)點測試上鏈物流運輸部分的企業(yè)與業(yè)務(wù)關(guān)系信息,peer2節(jié)點測試上鏈協(xié)同服務(wù)部分的企業(yè)與業(yè)務(wù)關(guān)系信息,peer3節(jié)點測試將鏈上銷售商信息變更為曲軸供應(yīng)商信息。通過測試節(jié)點終端發(fā)出相應(yīng)測試指令,如圖13所示。
通過3個測試節(jié)點的區(qū)塊圖后端,發(fā)出相應(yīng)測試內(nèi)容指令,各節(jié)點執(zhí)行結(jié)果如圖14所示。由peer1、peer2節(jié)點分別發(fā)出上鏈“物流運輸部分信息”與“協(xié)同服務(wù)部分信息”指令,提交所涉及到的企業(yè)信息,經(jīng)過制造聯(lián)盟背書節(jié)點審核提案與企業(yè)證書;通過審核之后,依據(jù)提交業(yè)務(wù)需求由智能合約將企業(yè)信息寫入?yún)^(qū)塊圖生成相應(yīng)節(jié)點,隨后讀取相關(guān)企業(yè)業(yè)務(wù)信息,由業(yè)務(wù)信息分解鏈碼分解此類信息,通過關(guān)系構(gòu)建鏈碼建立業(yè)務(wù)關(guān)系與之對應(yīng)區(qū)塊圖的邊,按照此方式依次完成鏈上新企業(yè)節(jié)點信息與復(fù)雜關(guān)系同步工作。peer3節(jié)點發(fā)出變更“銷售商信息”為“曲軸供應(yīng)商信息”指令,依舊需要先對變更后的企業(yè)信息進行審核,而審核通過之后,將原有企業(yè)信息予以備份,撤銷其頒發(fā)的制造聯(lián)盟證書,并依次變更關(guān)系信息、節(jié)點信息,最終形成如圖14的新區(qū)塊圖。
通過增加、變更企業(yè)信息與關(guān)系信息等實驗,驗證了區(qū)塊圖具備一定的復(fù)雜業(yè)務(wù)處理能力。綜合上述兩階段實驗,證明所提出的面向制造業(yè)產(chǎn)業(yè)鏈圖狀區(qū)塊鏈模型的有效性,一定程度上拓展了區(qū)塊鏈技術(shù)應(yīng)用領(lǐng)域。但由于數(shù)據(jù)與設(shè)備局限,實驗存在一些不足,尤其是產(chǎn)業(yè)鏈之間的業(yè)務(wù)交互問題,還需后續(xù)結(jié)合龐大的產(chǎn)業(yè)鏈集群進行測試。
針對傳統(tǒng)區(qū)塊鏈構(gòu)建制造業(yè)產(chǎn)業(yè)鏈區(qū)塊鏈模型所面臨的復(fù)雜業(yè)務(wù)關(guān)系難以處理的問題,本文提出了一種面向制造業(yè)產(chǎn)業(yè)鏈區(qū)塊圖模型,進而構(gòu)建具有動態(tài)擴展性、業(yè)務(wù)信息復(fù)雜、分布式網(wǎng)狀結(jié)構(gòu)特點的區(qū)塊圖模型,并面向制造業(yè)產(chǎn)業(yè)鏈搭建了制造業(yè)聯(lián)盟圖架構(gòu)。該聯(lián)盟圖模型基于將復(fù)雜的業(yè)務(wù)分解為簡單的業(yè)務(wù)關(guān)系與業(yè)務(wù)數(shù)據(jù),由分解后的業(yè)務(wù)信息構(gòu)建聯(lián)盟圖中的邊與頂點,并設(shè)計智能合約維護制造業(yè)產(chǎn)業(yè)鏈上企業(yè)之間正常的業(yè)務(wù)協(xié)作。
在基于區(qū)塊圖模型的聯(lián)盟圖實現(xiàn)方面,雖然已經(jīng)得到了階段性的成果,但是還存在許多挑戰(zhàn)。這些挑戰(zhàn)的出現(xiàn)也給區(qū)塊鏈的發(fā)展帶來了機遇,需要更多的人員投入到區(qū)塊鏈的研究中。其中面對的挑戰(zhàn)主要包括:
(1)區(qū)塊圖在共識方面的困難程度遠高于傳統(tǒng)鏈式結(jié)構(gòu)的區(qū)塊鏈。企業(yè)級區(qū)塊鏈的共識包含背書、排序、驗證3個環(huán)節(jié),能夠滿足鏈式存儲結(jié)構(gòu)的業(yè)務(wù)共識需求。然而,區(qū)塊圖共識的要求程度與難度都有所提升,就目前來看區(qū)塊圖共識的研究還需要很長一段路要走。
(2)區(qū)塊鏈技術(shù)已經(jīng)被國家、企業(yè)巨頭,甚至某些民營企業(yè)高度重視起來,但是對于提出的區(qū)塊圖新型區(qū)塊鏈技術(shù),認識度還很低,重視起來還需要一定的時間;并且在基于區(qū)塊圖的共識機制、智能合約等方面仍需要大量研究,尤其是結(jié)合到具體的應(yīng)用場景,發(fā)揮其更多的價值仍需要深入的研究。