許繼平 張博洋 張 新 王小藝 李 飛 趙燕東
(1.北京工商大學(xué)北京市食品安全大數(shù)據(jù)技術(shù)重點(diǎn)實(shí)驗(yàn)室,北京 100048;2.北京工商大學(xué)中國輕工業(yè)工業(yè)互聯(lián)網(wǎng)與大數(shù)據(jù)重點(diǎn)實(shí)驗(yàn)室,北京 100048;3.北京林業(yè)大學(xué)工學(xué)院,北京 100083)
糧油質(zhì)量安全關(guān)系到人民群眾的健康和社會的穩(wěn)定,當(dāng)前糧油質(zhì)量安全問題主要集中在真菌毒素污染嚴(yán)重、非法添加有毒有害物、摻假勾兌以及以次充好等[1]。近年來糧油質(zhì)量安全事件引起了政府和社會的廣泛關(guān)注[2-4]。保障糧油質(zhì)量安全對國民生命健康、社會和諧發(fā)展以及人類營養(yǎng)安全具有重要意義[5]。
傳統(tǒng)糧油質(zhì)量安全監(jiān)管體系多為中心化的模式,由供應(yīng)鏈中核心企業(yè)集中采集全環(huán)節(jié)數(shù)據(jù)并存儲到中心化的服務(wù)器進(jìn)行管理,但中心化的管理模式易受篡改等攻擊[6],安全性無法保障。區(qū)塊鏈作為一種去中心化的分布式賬本技術(shù),通過共識機(jī)制、加密算法、時(shí)間戳等底層技術(shù)保證上鏈的數(shù)據(jù)不被偽造和篡改[7],因此適用于多主體業(yè)務(wù)系統(tǒng)進(jìn)行數(shù)據(jù)信息共享管理的場景[8-10]。區(qū)塊鏈的技術(shù)特點(diǎn)決定了將其應(yīng)用于糧油食品質(zhì)量安全保障領(lǐng)域能夠降低交易風(fēng)險(xiǎn)以及監(jiān)管成本,提高數(shù)據(jù)可信度以及信息安全性等,為解決糧油質(zhì)量安全溯源控制問題提供了解決方案[11]。通過區(qū)塊鏈技術(shù)建立糧油供應(yīng)鏈參與主體間的互信機(jī)制,解決信息不透明、不對稱等問題,對于快速追蹤、精準(zhǔn)定位糧油質(zhì)量安全風(fēng)險(xiǎn)源頭有重要意義[12-14]。
目前糧油領(lǐng)域區(qū)塊鏈技術(shù)的研究側(cè)重于溯源監(jiān)管等應(yīng)用層面,包括基于區(qū)塊鏈的信息溯源監(jiān)管模型的研究以及結(jié)合區(qū)塊鏈和物聯(lián)網(wǎng)等技術(shù)的溯源監(jiān)管應(yīng)用研究等[15-16]。此類研究雖在一定程度上解決了傳統(tǒng)溯源監(jiān)管技術(shù)存在的數(shù)據(jù)信任等問題,但由于糧油供應(yīng)鏈具有主體復(fù)雜、風(fēng)險(xiǎn)多、供應(yīng)網(wǎng)絡(luò)跨域、信息鏈難以打通等特點(diǎn),區(qū)塊鏈技術(shù)應(yīng)用于糧油質(zhì)量安全保障和追溯場景下也引入了新的系統(tǒng)性風(fēng)險(xiǎn)和挑戰(zhàn)?;趥鹘y(tǒng)公鏈改進(jìn)存儲、共識等的優(yōu)化方案未能較好地解決區(qū)塊鏈擴(kuò)展性、性能、安全方面的局限,針對區(qū)塊鏈技術(shù)的優(yōu)化改進(jìn)尤其是針對糧油領(lǐng)域等特定場景區(qū)塊鏈技術(shù)應(yīng)用的風(fēng)險(xiǎn)分析及優(yōu)化改進(jìn)逐漸興起[17-20]。
本文在綜合國內(nèi)外區(qū)塊鏈技術(shù)應(yīng)用研究現(xiàn)狀及發(fā)展趨勢的基礎(chǔ)上,基于集成決策實(shí)驗(yàn)室法(Decision making trial and evaluation laboratory,DEMATEL)-解釋結(jié)構(gòu)模型(Interpretative structural modelling method, ISM)可解釋性算法模型解析糧油質(zhì)量安全區(qū)塊鏈風(fēng)險(xiǎn)特征,在此基礎(chǔ)上改進(jìn)并優(yōu)化現(xiàn)有完全非可信執(zhí)行場景中通用型區(qū)塊鏈結(jié)構(gòu),包括在網(wǎng)絡(luò)層研究適用于非完全可信執(zhí)行場景中糧油質(zhì)量安全專用型區(qū)塊鏈網(wǎng)絡(luò)結(jié)構(gòu),在共識層提出一種基于實(shí)用拜占庭容錯(cuò)(Practical Byzantine fault tolerance,PBFT)來改進(jìn)拜占庭容錯(cuò)能力,符合糧油質(zhì)量安全區(qū)塊鏈特征的Kafka共識優(yōu)化算法P-Kafka(Practical Byzantine fault tolerance-Kafka),使得區(qū)塊鏈在風(fēng)險(xiǎn)可辨識和可控的情形下適用于糧油質(zhì)量安全專用場景。
糧油質(zhì)量安全溯源控制場景下,供應(yīng)鏈參與主體眾多,且從糧油種植到成品售出全供應(yīng)鏈中不同參與節(jié)點(diǎn)之間存在復(fù)雜嵌套、相互交織的關(guān)系,采用傳統(tǒng)“一條鏈”式區(qū)塊鏈及相應(yīng)的共識機(jī)制容易造成區(qū)塊鏈系統(tǒng)網(wǎng)絡(luò)擁塞、計(jì)算成本高以及共識效率低等一系列問題?;诩蒁EMATEL-ISM可解釋性算法構(gòu)造糧油質(zhì)量安全區(qū)塊鏈風(fēng)險(xiǎn)多級遞階有向圖,建立糧油質(zhì)量安全區(qū)塊鏈優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu),并對新型區(qū)塊鏈網(wǎng)絡(luò)中的參與節(jié)點(diǎn)進(jìn)行分層分區(qū)以及子鏈劃分,可在一定程度上節(jié)省區(qū)塊鏈系統(tǒng)運(yùn)行計(jì)算成本,提高節(jié)點(diǎn)隱私信息安全性以及全網(wǎng)節(jié)點(diǎn)共識效率。
糧油質(zhì)量安全溯源場景中參與節(jié)點(diǎn)眾多、風(fēng)險(xiǎn)關(guān)聯(lián)關(guān)系復(fù)雜且溯源數(shù)據(jù)量大,容易導(dǎo)致區(qū)塊鏈網(wǎng)絡(luò)負(fù)載大、延時(shí)較長、廣播資源占用嚴(yán)重且耗能高等。糧油質(zhì)量安全區(qū)塊鏈系統(tǒng)中各風(fēng)險(xiǎn)節(jié)點(diǎn)關(guān)系錯(cuò)雜但處于同一網(wǎng)絡(luò)系統(tǒng),符合DEMATEL和ISM的應(yīng)用條件,故引入DEMATEL和ISM兩種系統(tǒng)分析方法并進(jìn)行集成,根據(jù)糧油質(zhì)量安全區(qū)塊鏈風(fēng)險(xiǎn)間的關(guān)聯(lián)關(guān)系對風(fēng)險(xiǎn)節(jié)點(diǎn)進(jìn)行分層分區(qū)處理,以理清糧油質(zhì)量安全區(qū)塊鏈風(fēng)險(xiǎn)因素節(jié)點(diǎn)間的關(guān)聯(lián)關(guān)系并改進(jìn)傳統(tǒng)糧油質(zhì)量安全區(qū)塊鏈網(wǎng)絡(luò)的結(jié)構(gòu)。
1.1.1DEMATEL和ISM結(jié)合機(jī)理
DEMATEL是一種通過計(jì)算系統(tǒng)各要素的中心度和原因度進(jìn)而分析該要素的系統(tǒng)重要性以及與其它要素間的相互作用關(guān)系的算法[21]。ISM是一種研究復(fù)雜系統(tǒng)內(nèi)部各元素間的影響與被影響的關(guān)系,且能夠清晰反映系統(tǒng)內(nèi)部結(jié)構(gòu)的結(jié)構(gòu)模型化算法[22]。
DEMATEL和ISM兩種算法各有優(yōu)缺點(diǎn),DEMATEL雖能夠通過系統(tǒng)要素的中心度、原因度等識別出復(fù)雜系統(tǒng)的關(guān)鍵要素及其影響程度,但其不能明確影響因素間的層次、結(jié)構(gòu),因此不能有效地對系統(tǒng)進(jìn)行層次結(jié)構(gòu)的劃分,也不能確定系統(tǒng)的基礎(chǔ)性要素和每個(gè)要素的影響范圍。ISM雖能確定系統(tǒng)各要素間的內(nèi)在邏輯結(jié)構(gòu),但卻無法知悉各要素的影響度與被影響度,即不能明確要素在系統(tǒng)中的作用。因此,本文綜合兩種算法的優(yōu)勢,通過DEMATEL簡化ISM中可達(dá)矩陣的計(jì)算過程,構(gòu)造集成DEMATEL-ISM可解釋性算法模型,使得在明確糧油質(zhì)量安全區(qū)塊鏈風(fēng)險(xiǎn)因素影響權(quán)重的同時(shí),形成層次性、結(jié)構(gòu)化的多級遞階解釋結(jié)構(gòu)模型,具備更強(qiáng)的解釋力。集成模型實(shí)施流程如圖1所示。
圖1 DEMATEL-ISM集成模型實(shí)施流程
1.1.2DEMATEL-ISM集成模型實(shí)施步驟
實(shí)施步驟如下:
(1)確定糧油質(zhì)量安全區(qū)塊鏈風(fēng)險(xiǎn)因素。通過分析已有研究成果并結(jié)合業(yè)內(nèi)專家意見進(jìn)行篩選處理,構(gòu)建糧油質(zhì)量安全區(qū)塊鏈風(fēng)險(xiǎn)指標(biāo)體系,如表1所示。
表1 糧油質(zhì)量安全區(qū)塊鏈風(fēng)險(xiǎn)指標(biāo)體系
(2)構(gòu)建直接影響矩陣?;跇?gòu)建的風(fēng)險(xiǎn)指標(biāo)體系,通過專家小組問卷調(diào)研,對風(fēng)險(xiǎn)因素間影響關(guān)系進(jìn)行量化評價(jià),將風(fēng)險(xiǎn)因素間的影響程度定義為[0,9]內(nèi)10個(gè)自然數(shù)等級,“0” 代表影響因素對被影響因素?zé)o影響,依次遞增,“9”代表影響因素對被影響因素影響程度很高,目標(biāo)風(fēng)險(xiǎn)因素對自身無影響。根據(jù)專家打分的平均數(shù)得到一個(gè)25×25的風(fēng)險(xiǎn)因素直接影響關(guān)系矩陣X,矩陣X的行和列元素為二級和一級風(fēng)險(xiǎn)指標(biāo),如表2所示。
表2 風(fēng)險(xiǎn)因素間直接影響矩陣
(3)計(jì)算規(guī)范化直接影響矩陣。將直接影響矩陣X的每一個(gè)元素除以X中各行元素之和的最大值,得到規(guī)范化直接影響矩陣G,公式為
(1)
式中n——矩陣維數(shù)
aij——矩陣第i行第j列的元素
(4)確定綜合影響矩陣。將步驟(3)得到的規(guī)范化直接影響矩陣G自乘n次,并將此n+1個(gè)矩陣相加即可得到綜合影響矩陣T,公式為
G(I-G)-1
(2)
式中I——n階單位陣
tij——矩陣中第i行第j列元素
(5)確定各要素的中心度與原因度。中心度與原因度是由系統(tǒng)要素的影響度與被影響度決定的。影響度fi、被影響度ei、各風(fēng)險(xiǎn)因素的中心度Mi、原因度Ni計(jì)算公式為
(3)
Mi=fi+ei(i=1,2,…,n)
(4)
Ni=fi-ei(i=1,2,…,n)
(5)
(6)確定風(fēng)險(xiǎn)因素整體影響矩陣。由于DEMATEL中默認(rèn)元素不影響自身,ISM則相反,因此將綜合影響矩陣T加上n階單位陣,形成可用于ISM計(jì)算的整體影響矩陣H,即
H=T+I
(6)
(7)
得出標(biāo)準(zhǔn)化可達(dá)矩陣R。
(8)確定可達(dá)集、先行集。根據(jù)標(biāo)準(zhǔn)化可達(dá)矩陣R對各風(fēng)險(xiǎn)因素的可達(dá)集、先行集進(jìn)行劃分。
(9)元素分層處理。滿足
Ri=Ri∩Si(i=1,2,…,N)
(8)
為第1層,然后去除已分層元素并重新篩選第2層元素,依次循環(huán)至各元素分層完畢。其中,Ri代表標(biāo)號為i的風(fēng)險(xiǎn)因素的可達(dá)集,Si代表標(biāo)號為i的風(fēng)險(xiǎn)因素的先行集,N代表總的風(fēng)險(xiǎn)因素?cái)?shù),取值為19。本文風(fēng)險(xiǎn)因素節(jié)點(diǎn)層級劃分結(jié)果如表3所示。
表3 風(fēng)險(xiǎn)因素節(jié)點(diǎn)層級劃分結(jié)果
(10)多級遞階解釋結(jié)構(gòu)繪制及解釋。根據(jù)風(fēng)險(xiǎn)因素分層結(jié)果以及各因素的可達(dá)集、前因集,通過縮邊、縮點(diǎn)輸出最簡的風(fēng)險(xiǎn)因素多級遞階有向圖結(jié)構(gòu)模型,如圖2所示。
圖2 糧油質(zhì)量安全區(qū)塊鏈風(fēng)險(xiǎn)多級遞階有向圖
1.1.3多級遞階網(wǎng)絡(luò)結(jié)構(gòu)模型構(gòu)建
根據(jù)圖2并結(jié)合各風(fēng)險(xiǎn)因素間的二元關(guān)系繪制糧油質(zhì)量安全區(qū)塊鏈多級遞階解釋結(jié)構(gòu)模型圖,引入“糧油質(zhì)量安全區(qū)塊鏈風(fēng)險(xiǎn)”作為第0級因素,通過縮邊、縮點(diǎn)、刪除重復(fù)強(qiáng)連通關(guān)系以及跨層越級關(guān)系轉(zhuǎn)化等處理簡化系統(tǒng)風(fēng)險(xiǎn)傳導(dǎo)過程,并以上文中計(jì)算得到的各風(fēng)險(xiǎn)因素的可達(dá)集、先行集作為參考和檢驗(yàn),最終繪制出糧油質(zhì)量安全區(qū)塊鏈風(fēng)險(xiǎn)多級遞階解釋結(jié)構(gòu)模型圖,如圖3所示。
圖3 糧油質(zhì)量安全區(qū)塊鏈多級遞階解釋結(jié)構(gòu)模型
通過分析,把影響糧油質(zhì)量安全區(qū)塊鏈的風(fēng)險(xiǎn)因素歸結(jié)為直接影響因素、表層影響因素、淺層影響因素、深層影響因素以及底層影響因素5類影響因素(圖3)。各層影響因素相互關(guān)聯(lián),構(gòu)成了一個(gè)復(fù)雜的多層遞階結(jié)構(gòu),反映了各個(gè)風(fēng)險(xiǎn)因素對糧油質(zhì)量安全區(qū)塊鏈的影響機(jī)理及各節(jié)點(diǎn)或風(fēng)險(xiǎn)因素間的傳導(dǎo)關(guān)系。
傳統(tǒng)區(qū)塊鏈結(jié)構(gòu)中所有參與節(jié)點(diǎn)同步共識對區(qū)塊鏈網(wǎng)絡(luò)的性能帶來巨大挑戰(zhàn),不僅容易導(dǎo)致共識效率低下,而且還容易造成網(wǎng)絡(luò)擁塞甚至節(jié)點(diǎn)崩潰的情況發(fā)生。因此,基于集成DEMATEL-ISM可解釋性模型構(gòu)建的糧油質(zhì)量安全區(qū)塊鏈風(fēng)險(xiǎn)多級遞階解釋結(jié)構(gòu),對糧油質(zhì)量安全區(qū)塊鏈網(wǎng)絡(luò)中各節(jié)點(diǎn)進(jìn)行分層分區(qū)劃分處理,實(shí)現(xiàn)區(qū)塊鏈網(wǎng)絡(luò)中各參與節(jié)點(diǎn)帶有交易邏輯關(guān)系的分層分區(qū)?;诖?,建立一種更高效的區(qū)塊鏈生成機(jī)制,區(qū)塊鏈網(wǎng)絡(luò)中的全部參與節(jié)點(diǎn)分層分區(qū)共識可有效降低區(qū)塊鏈系統(tǒng)運(yùn)行的計(jì)算資源成本、減少網(wǎng)絡(luò)擁塞情況、提高節(jié)點(diǎn)共識效率,進(jìn)而實(shí)現(xiàn)對糧油質(zhì)量安全區(qū)塊鏈結(jié)構(gòu)進(jìn)行優(yōu)化。
本文根據(jù)各風(fēng)險(xiǎn)節(jié)點(diǎn)在區(qū)塊鏈網(wǎng)絡(luò)中的地位重要性以及節(jié)點(diǎn)間的交易關(guān)聯(lián)關(guān)系對糧油質(zhì)量安全區(qū)塊鏈網(wǎng)絡(luò)中各風(fēng)險(xiǎn)節(jié)點(diǎn)進(jìn)行分層分區(qū)處理。區(qū)塊鏈網(wǎng)絡(luò)中的共識節(jié)點(diǎn)的分層是實(shí)現(xiàn)節(jié)點(diǎn)分區(qū)的基礎(chǔ),基于DEMATEL-ISM集成模型構(gòu)建的風(fēng)險(xiǎn)節(jié)點(diǎn)多級遞階有向圖,根據(jù)各個(gè)風(fēng)險(xiǎn)節(jié)點(diǎn)對整個(gè)糧油質(zhì)量安全區(qū)塊鏈系統(tǒng)作用的影響程度和地位對其進(jìn)行區(qū)域劃分,建立從底層節(jié)點(diǎn)區(qū)域、中層節(jié)點(diǎn)區(qū)域、上層節(jié)點(diǎn)區(qū)域的“六層三區(qū)”區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)分層分區(qū)體系,其中,多級遞階解釋結(jié)構(gòu)模型表層影響因素又劃分為了層級2和層級3,如圖4所示。
圖4 區(qū)塊鏈節(jié)點(diǎn)分層分區(qū)體系
在糧油質(zhì)量安全區(qū)塊鏈共識節(jié)點(diǎn)分層分區(qū)體系構(gòu)建過程中,各參與節(jié)點(diǎn)在區(qū)塊鏈系統(tǒng)中的交易地位與區(qū)塊鏈節(jié)點(diǎn)分層分區(qū)體系的區(qū)域?qū)蛹壋煞幢龋杉Z油質(zhì)量安全區(qū)塊鏈風(fēng)險(xiǎn)分析結(jié)果可知,圖4中區(qū)域3為底層節(jié)點(diǎn)區(qū)域,其所覆蓋的區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)主要為對整個(gè)糧油質(zhì)量安全區(qū)塊鏈系統(tǒng)影響更為深層和全面的影響因素節(jié)點(diǎn),包括底層因素節(jié)點(diǎn)以及深層因素節(jié)點(diǎn),此類節(jié)點(diǎn)在區(qū)塊鏈網(wǎng)絡(luò)中節(jié)點(diǎn)交易關(guān)系中占據(jù)的地位也較高。區(qū)域2為中層節(jié)點(diǎn)區(qū)域,其中覆蓋的區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)主要為淺層因素節(jié)點(diǎn),此類風(fēng)險(xiǎn)節(jié)點(diǎn)作用機(jī)理復(fù)雜,風(fēng)險(xiǎn)節(jié)點(diǎn)相互之間也呈集聚的態(tài)勢,將其劃分為一個(gè)單獨(dú)的區(qū)域進(jìn)行內(nèi)部共識不僅可顯著提高區(qū)塊鏈全網(wǎng)共識效率,還能在一定程度上提升參與節(jié)點(diǎn)的隱私信息安全。區(qū)域1為上層節(jié)點(diǎn)區(qū)域,覆蓋的區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)主要為威脅糧油質(zhì)量安全區(qū)塊鏈的直接因素節(jié)點(diǎn)以及表層因素節(jié)點(diǎn),此類節(jié)點(diǎn)位于糧油質(zhì)量安全溯源供應(yīng)鏈的末端,對整個(gè)糧油質(zhì)量安全區(qū)塊鏈系統(tǒng)的影響機(jī)理相對簡單,作用范圍也較小,因此在區(qū)塊鏈全網(wǎng)節(jié)點(diǎn)進(jìn)行交易、共識時(shí)的地位也相對較弱。
通過對基于DEMATEL-ISM的糧油質(zhì)量安全區(qū)塊鏈網(wǎng)絡(luò)結(jié)構(gòu)中的共識節(jié)點(diǎn)進(jìn)行分層分區(qū)處理,構(gòu)建了多個(gè)松耦合的區(qū)塊鏈共識節(jié)點(diǎn)集群區(qū)域,各共識節(jié)點(diǎn)區(qū)域之間無相互干擾,可協(xié)同并發(fā)執(zhí)行節(jié)點(diǎn)共識,進(jìn)而提高區(qū)塊鏈全網(wǎng)的共識效率、吞吐量等性能。
基于集成DEMATEL-ISM可解釋性算法模型構(gòu)建的糧油質(zhì)量安全區(qū)塊鏈網(wǎng)絡(luò)結(jié)構(gòu),結(jié)合“六層三區(qū)”的區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)分層分區(qū)體系以及各風(fēng)險(xiǎn)節(jié)點(diǎn)在整個(gè)區(qū)塊鏈系統(tǒng)中的影響程度,對分層分區(qū)體系內(nèi)的區(qū)塊鏈網(wǎng)絡(luò)各節(jié)點(diǎn)進(jìn)行進(jìn)一步的子鏈劃分。在糧油質(zhì)量安全區(qū)塊鏈節(jié)點(diǎn)分層體系中,通過從底層起始節(jié)點(diǎn)逐漸向上層節(jié)點(diǎn)探尋,遇分叉節(jié)點(diǎn)終止,將由起始節(jié)點(diǎn)至分叉節(jié)點(diǎn)之間的所有節(jié)點(diǎn)劃分為一個(gè)共識節(jié)點(diǎn)子鏈,再以分叉節(jié)點(diǎn)作為起始節(jié)點(diǎn)重復(fù)向上層節(jié)點(diǎn)探尋,直至完成所有子鏈的劃分。并根據(jù)劃分子鏈中各節(jié)點(diǎn)的中心度,選舉出每一條子鏈的主節(jié)點(diǎn),劃分后的子鏈以及每條子鏈的主節(jié)點(diǎn)如圖5所示,其中,6條子鏈分別以不同的線型標(biāo)注以示區(qū)分。
圖5 糧油質(zhì)量安全區(qū)塊鏈網(wǎng)絡(luò)子鏈劃分示意圖
圖5中6條不同的線型分別代表劃分的6條不同子鏈,每條子鏈中中心度最高的節(jié)點(diǎn)即為該條子鏈的主節(jié)點(diǎn),如圖5中的加粗節(jié)點(diǎn),其在子鏈各節(jié)點(diǎn)交易共識中的地位也相對更高。網(wǎng)絡(luò)內(nèi)各條子鏈的主節(jié)點(diǎn)之間相互通信,并通過共識機(jī)制保障整個(gè)區(qū)塊鏈網(wǎng)絡(luò)的分布式一致性。不同的子鏈之間能在同一時(shí)間段并發(fā)執(zhí)行共識,打包生成新的區(qū)塊,并按照時(shí)間的順序有序地添加到區(qū)塊子鏈中,而不必等待區(qū)塊鏈全網(wǎng)所有節(jié)點(diǎn)同步完成共識,這種基于分布式共識的區(qū)塊鏈網(wǎng)絡(luò)子鏈劃分結(jié)構(gòu)從根本上解決了傳統(tǒng)“一條鏈”式區(qū)塊鏈無法在短時(shí)間內(nèi)全部節(jié)點(diǎn)達(dá)成共識并完成大量交易的問題,有效提升了糧油質(zhì)量安全區(qū)塊鏈的共識效率和交易處理能力,且子鏈分布共識縮小了參與節(jié)點(diǎn)的信息共享范圍,在一定程度上降低了潛在的隱私信息安全風(fēng)險(xiǎn)。
糧油質(zhì)量安全區(qū)塊鏈參與節(jié)點(diǎn)眾多、風(fēng)險(xiǎn)因素復(fù)雜且溯源數(shù)據(jù)量大,容易導(dǎo)致區(qū)塊鏈網(wǎng)絡(luò)擁塞、延時(shí)較長等,因此對區(qū)塊鏈的性能要求較高。Kafka作為一種高性能、高可擴(kuò)展性的共識機(jī)制,將其應(yīng)用于糧油質(zhì)量安全區(qū)塊鏈系統(tǒng)可有效提升區(qū)塊鏈網(wǎng)絡(luò)的擴(kuò)展性和共識效率,但對于參與節(jié)點(diǎn)眾多且關(guān)聯(lián)關(guān)系復(fù)雜的糧油質(zhì)量安全區(qū)塊鏈應(yīng)用場景,Kafka共識仍存在一些不足使得其應(yīng)用于糧油質(zhì)量安全區(qū)塊鏈優(yōu)勢效果并不突出。一個(gè)區(qū)塊鏈網(wǎng)絡(luò)中會有多個(gè)Orderer節(jié)點(diǎn)分布式部署于多個(gè)機(jī)構(gòu),共同提供排序服務(wù)。Kafka共識過程中,同一時(shí)刻只能對同一個(gè)主題中同一個(gè)分區(qū)的消息進(jìn)行排序,不支持跨主題跨分區(qū)的排序處理。雖然Kafka集群中每個(gè)分區(qū)都可以擁有相同的副本提升集群的容災(zāi)能力,支持崩潰容錯(cuò),但它并不能提供對網(wǎng)絡(luò)中惡意攻擊的保護(hù)。因此,本文針對Kafka共識的拜占庭容錯(cuò)能力以及集群分區(qū)機(jī)制進(jìn)行優(yōu)化改進(jìn),以使Kafka共識機(jī)制在糧油質(zhì)量安全區(qū)塊鏈溯源場景下既能發(fā)揮更高的性能優(yōu)勢,也能對區(qū)塊鏈系統(tǒng)的安全性提供較好的保障,從而使得區(qū)塊鏈系統(tǒng)更加適用于糧油質(zhì)量安全溯源控制專用場景。
Kafka共識機(jī)制本質(zhì)是一個(gè)性能高、崩潰容錯(cuò)能力強(qiáng)、可擴(kuò)展性強(qiáng)的分布式消息系統(tǒng)[32]。Kafka共識的集群時(shí)序消息服務(wù)基于Paxos算法,通過zookeeper組件進(jìn)行多通道分區(qū),無法對抗惡意節(jié)點(diǎn)攻擊,但能容忍少于半數(shù)的網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)生宕機(jī)崩潰等故障。Kafka使用經(jīng)典的發(fā)布-訂閱式消息處理模型,工作原理如圖6所示,其中,系統(tǒng)中生產(chǎn)者節(jié)點(diǎn)負(fù)責(zé)交易消息的廣播發(fā)布,消費(fèi)者節(jié)點(diǎn)通過訂閱集群分區(qū)中特定的消息主題接收新的交易消息。
圖6 Kafka共識工作原理圖
Kafka共識機(jī)制下,當(dāng)網(wǎng)絡(luò)中數(shù)據(jù)規(guī)模逐漸龐大時(shí),可以將Kafka集群拆分為多個(gè)分區(qū),Kafka集群能夠在一定時(shí)間及規(guī)模閾值內(nèi)保存交易消息且保證各分區(qū)內(nèi)交易消息按順序排列,但并不讀取交易消息,消費(fèi)者節(jié)點(diǎn)根據(jù)需求定位查詢交易消息,由此形成回溯機(jī)制。此外,Kafka共識下各消費(fèi)者節(jié)點(diǎn)匹配單個(gè)或多個(gè)消息主題,且屬于不同的集群分區(qū),因此使得交易消息進(jìn)入Kafka集群后能夠分配給特定的分區(qū)并發(fā)執(zhí)行處理進(jìn)程,且交易消息不會被多次重復(fù)讀取,有效提高了網(wǎng)絡(luò)的共識效率。
Kafka共識通過一種領(lǐng)導(dǎo)-跟隨機(jī)制在多個(gè)排序節(jié)點(diǎn)之間進(jìn)行分區(qū)復(fù)制以實(shí)現(xiàn)崩潰容錯(cuò)。領(lǐng)導(dǎo)節(jié)點(diǎn)在網(wǎng)絡(luò)分區(qū)內(nèi)負(fù)責(zé)分區(qū)的共識以及公共賬本的維護(hù),跟隨節(jié)點(diǎn)則通過復(fù)制維護(hù)更新分區(qū)賬本,在分區(qū)網(wǎng)絡(luò)內(nèi)領(lǐng)導(dǎo)節(jié)點(diǎn)發(fā)生宕機(jī)崩潰等問題時(shí),通過將某一跟隨節(jié)點(diǎn)轉(zhuǎn)變?yōu)樾碌念I(lǐng)導(dǎo)節(jié)點(diǎn)繼續(xù)進(jìn)行分區(qū)內(nèi)共識,使得網(wǎng)絡(luò)中的交易數(shù)據(jù)在當(dāng)某一節(jié)點(diǎn)崩潰失效無法進(jìn)行共識時(shí)也不會丟失。Hyperledger Fabric中的Kafka實(shí)際運(yùn)行邏輯如圖7所示。
圖7 Hyperledger Fabric中的Kafka運(yùn)行邏輯圖
傳統(tǒng)Kafka共識機(jī)制下,雖然其能夠通過排序節(jié)點(diǎn)復(fù)制支持崩潰容錯(cuò),但它并不能抵抗區(qū)塊鏈網(wǎng)絡(luò)中惡意節(jié)點(diǎn)進(jìn)行女巫攻擊或驗(yàn)證節(jié)點(diǎn)作惡等[33-34]。針對此類問題,首先,將排序服務(wù)節(jié)點(diǎn)部署到子鏈的每一個(gè)參與企業(yè)節(jié)點(diǎn)中,使子鏈中的每一個(gè)節(jié)點(diǎn)均參與到交易消息的排序服務(wù)中,再通過引入PBFT共識機(jī)制的原理,在各排序節(jié)點(diǎn)收到交易消息進(jìn)而將其中繼到Kafka集群之前先在各排序節(jié)點(diǎn)之間進(jìn)行PBFT共識,以此驗(yàn)證交易消息的一致性,防止網(wǎng)絡(luò)中惡意節(jié)點(diǎn)的攻擊,實(shí)現(xiàn)區(qū)塊鏈網(wǎng)絡(luò)的拜占庭容錯(cuò)能力。本文提出一種基于PBFT改進(jìn)Kafka共識機(jī)制的拜占庭容錯(cuò)能力的共識算法P-Kafka,其原理如圖8所示,其中,C代表消息請求客戶端,OSN10、OSN12、OSN5和OSN19分別代表糧油質(zhì)量安全區(qū)塊鏈各子鏈主排序服務(wù)節(jié)點(diǎn)。
圖8 改進(jìn)Kafka共識機(jī)制拜占庭容錯(cuò)能力原理圖
改進(jìn)Kafka拜占庭容錯(cuò)能力共識機(jī)制的具體執(zhí)行流程如下:
(1)每次共識執(zhí)行前,即每次視圖開啟前,首先計(jì)算更新主節(jié)點(diǎn),公式為
p=vmodn′
(9)
式中v代表當(dāng)前視圖編號,n′表示每次共識執(zhí)行中主節(jié)點(diǎn)廣播消息的唯一遞增序號,mod為取余運(yùn)算。
隨著視圖v不斷增長,主節(jié)點(diǎn)p也相應(yīng)隨之變化,采用這種輪換的方式從各子鏈產(chǎn)生的排序服務(wù)主節(jié)點(diǎn)中再次選舉產(chǎn)生拜占庭容錯(cuò)共識的主節(jié)點(diǎn),可避免單一節(jié)點(diǎn)長期占據(jù)主節(jié)點(diǎn)位置進(jìn)而威脅區(qū)塊鏈全網(wǎng)數(shù)據(jù)安全,圖8中OSN10即代表排序服務(wù)主節(jié)點(diǎn)。
(2)客戶端發(fā)送交易消息m至排序服務(wù)主節(jié)點(diǎn)OSN10,排序服務(wù)主節(jié)點(diǎn)由此開始執(zhí)行三階段協(xié)議進(jìn)行拜占庭容錯(cuò)共識,排序服務(wù)主節(jié)點(diǎn)若出現(xiàn)崩潰,則通過視圖切換更換新的排序服務(wù)主節(jié)點(diǎn)。
(3)排序服務(wù)主節(jié)點(diǎn)OSN10收到客戶端發(fā)送來的消息后,構(gòu)造預(yù)準(zhǔn)備消息pre-prepare,v,n′,dm,其中,pre-prepare代表當(dāng)前消息所處的共識階段,d為交易消息m的摘要,并將消息廣播至區(qū)塊鏈網(wǎng)絡(luò)中其他排序服務(wù)副節(jié)點(diǎn),也即各子鏈的主排序服務(wù)節(jié)點(diǎn),如圖8中OSN12、OSN5、OSN19節(jié)點(diǎn)所示。
(4)排序服務(wù)副節(jié)點(diǎn)收到主節(jié)點(diǎn)的預(yù)準(zhǔn)備消息后,首先驗(yàn)證交易的合法性,以防止客戶端造假或排序服務(wù)主節(jié)點(diǎn)進(jìn)行惡意篡改。若經(jīng)驗(yàn)證交易消息非法,則該排序服務(wù)副節(jié)點(diǎn)舍棄該條交易信息并且不參與此次共識過程,若消息驗(yàn)證合法后則進(jìn)入準(zhǔn)備階段,生成準(zhǔn)備消息
(5)排序服務(wù)副節(jié)點(diǎn)收到準(zhǔn)備消息后,同樣先驗(yàn)證交易消息的合法性,當(dāng)排序服務(wù)副節(jié)點(diǎn)收到包含本節(jié)點(diǎn)在內(nèi)2f+1條一致的準(zhǔn)備消息后,進(jìn)入確認(rèn)階段,構(gòu)造確認(rèn)消息
(6)排序服務(wù)節(jié)點(diǎn)收到包含自身在內(nèi)2f+1條一致性的確認(rèn)消息后,將交易消息m中繼至Kafka集群,待Kafka集群對交易消息處理完畢后,再通過排序服務(wù)節(jié)點(diǎn)打包生成新的區(qū)塊添加上鏈,并將其發(fā)送至請求客戶端,由此實(shí)現(xiàn)Kafka的拜占庭容錯(cuò)共識。
分區(qū)機(jī)制是Kafka共識實(shí)現(xiàn)高吞吐量、高性能的重要手段,但分區(qū)的數(shù)量并非與分區(qū)的效果以及區(qū)塊鏈網(wǎng)絡(luò)的性能成正比,區(qū)塊鏈網(wǎng)絡(luò)中分區(qū)的數(shù)量越多,網(wǎng)絡(luò)消耗的計(jì)算資源也就越多,分區(qū)數(shù)量過多或過少均無法較好地發(fā)揮Kafka的高伸縮性、負(fù)載均衡以及動(dòng)態(tài)調(diào)節(jié)等能力。尤其當(dāng)應(yīng)用于實(shí)際場景中時(shí),由于每個(gè)業(yè)務(wù)場景都不同,分區(qū)策略的制定,包括分區(qū)數(shù)目以及分區(qū)節(jié)點(diǎn)等的設(shè)定也需要結(jié)合具體業(yè)務(wù)應(yīng)用場景。
目前Kafka使用隨機(jī)策略、輪詢策略以及按鍵保存策略3種常用的分區(qū)策略。隨機(jī)策略屬于最原始的Kafka分區(qū)策略,通過產(chǎn)生隨機(jī)數(shù)將交易消息隨機(jī)分配,其分配的均衡性較差,容易給網(wǎng)絡(luò)造成負(fù)擔(dān)。目前Kafka已經(jīng)默認(rèn)改為輪詢策略,即按交易消息的順序輪流將每條數(shù)據(jù)分配到集群分區(qū)中。按鍵保存策略即當(dāng)區(qū)塊鏈網(wǎng)絡(luò)內(nèi)的生產(chǎn)者節(jié)點(diǎn)發(fā)送交易消息時(shí)指定一個(gè)key值,通過計(jì)算這個(gè)key的哈希值,按照哈希值對不同的交易消息進(jìn)行分區(qū)存儲。本文考慮糧油質(zhì)量安全特定應(yīng)用場景,通過采用按鍵保存分區(qū)策略,結(jié)合糧油質(zhì)量安全區(qū)塊鏈優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)以及子鏈劃分情況對Kafka集群分區(qū)進(jìn)行優(yōu)化,分區(qū)優(yōu)化示意圖如圖9所示。
圖9 Kafka共識分區(qū)優(yōu)化示意圖
Kafka分區(qū)的設(shè)置與區(qū)塊鏈網(wǎng)絡(luò)分區(qū)體系以及子鏈劃分相匹配,每條子鏈對應(yīng)一個(gè)Broker,一個(gè)Kafka集群可以由多個(gè)Broker組成,可根據(jù)實(shí)際業(yè)務(wù)場景需要進(jìn)行拓展,如圖9中一個(gè)Kafka集群包含6條子鏈對應(yīng)的6個(gè)Broker。此外,根據(jù)前文中構(gòu)建的糧油質(zhì)量安全區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)“六層三區(qū)”的分層分區(qū)體系,分別將底層、中層、上層節(jié)點(diǎn)區(qū)域設(shè)置為3個(gè)不同的Topic,Topic作為Kafka集群中交易消息的主題,可對交易消息進(jìn)行分類。根據(jù)糧油質(zhì)量安全實(shí)際業(yè)務(wù)場景將其分為3個(gè)主題,不同區(qū)域內(nèi)節(jié)點(diǎn)交易消息相互之間降低干擾,可有效降低區(qū)塊鏈網(wǎng)絡(luò)中交易消息的混亂對系統(tǒng)性能造成的影響,且一個(gè)較大的Topic可以分布到多個(gè)Broker上,以提高區(qū)塊鏈網(wǎng)絡(luò)的擴(kuò)展性,如 圖9 中Topic 1分布在Broker 1、Broker 2上,Topic3分布在Broker 4、Broker 5、Broker 6上。以子鏈劃分為依據(jù)將每個(gè)Topic內(nèi)部再劃分為若干Partition,且同一Topic內(nèi)部不同Partition分區(qū)只處理相關(guān)子鏈節(jié)點(diǎn)的交易消息,因此不同Partition上的數(shù)據(jù)是不重復(fù)的。通過對每個(gè)Partition分區(qū)設(shè)定不同的參數(shù),節(jié)點(diǎn)客戶端產(chǎn)生的交易消息在經(jīng)各子鏈主排序節(jié)點(diǎn)完成PBFT共識后,由子鏈主排序節(jié)點(diǎn)添加消息鍵key,交易消息進(jìn)入Kafka集群后,由消息鍵key與Kafka集群內(nèi)相應(yīng)的Partition分區(qū)進(jìn)行匹配,Kafka通過交易消息key的哈希值來確定消息需要寫入哪個(gè)具體的分區(qū),由此確保不同key值的數(shù)據(jù)寫入不同的Partition分區(qū),不同分區(qū)內(nèi)部各節(jié)點(diǎn)再按照交易消息的順序打包形成交易消息序列并存儲,再經(jīng)由各個(gè)子鏈的主排序服務(wù)節(jié)點(diǎn)打包生成新的區(qū)塊,并添加至區(qū)塊鏈系統(tǒng)中。通過這種Kafka分區(qū)優(yōu)化的方法實(shí)現(xiàn)了糧油質(zhì)量安全區(qū)塊鏈各子鏈分區(qū)同步共識,避免重復(fù)共識造成的資源浪費(fèi),同時(shí)也有效提高了交易消息的處理效率和區(qū)塊鏈網(wǎng)絡(luò)的吞吐量。
本文基于集成DEMATEL-ISM可解釋性算法模型構(gòu)建了一種基于多級遞階解釋結(jié)構(gòu)的新型糧油質(zhì)量安全區(qū)塊鏈網(wǎng)絡(luò)結(jié)構(gòu),在風(fēng)險(xiǎn)節(jié)點(diǎn)多級遞階有向無環(huán)圖的基礎(chǔ)上,對區(qū)塊鏈網(wǎng)絡(luò)內(nèi)部的各個(gè)參與節(jié)點(diǎn)進(jìn)行分層分區(qū)劃分以及子鏈劃分,并對其相應(yīng)的共識機(jī)制進(jìn)行了優(yōu)化改進(jìn)。本文以圖10所示的架構(gòu)從正確性、性能等方面對糧油質(zhì)量安全區(qū)塊鏈的優(yōu)化改進(jìn)結(jié)果進(jìn)行分析。
圖10 糧油質(zhì)量安全區(qū)塊鏈優(yōu)化結(jié)果分析架構(gòu)
通過將糧油質(zhì)量安全區(qū)塊鏈的結(jié)構(gòu)設(shè)計(jì)成基于有向無環(huán)圖的多層遞階網(wǎng)絡(luò)結(jié)構(gòu),使得傳統(tǒng)區(qū)塊鏈結(jié)構(gòu)形式下對計(jì)算資源的大量消耗以及共識效率難以提升的問題得到有效解決。此外,針對糧油質(zhì)量安全溯源控制場景下傳統(tǒng)單鏈?zhǔn)絽^(qū)塊鏈項(xiàng)目在進(jìn)行大量驗(yàn)證交易過程中存在的共識效率低等問題,通過對糧油質(zhì)量安全區(qū)塊鏈系統(tǒng)中區(qū)塊生成共識機(jī)制進(jìn)行優(yōu)化設(shè)計(jì),新的共識機(jī)制能夠?qū)^(qū)塊存儲結(jié)構(gòu)與Kafka集群分區(qū)進(jìn)行有效結(jié)合,從而能夠有效應(yīng)對大量驗(yàn)證交易,使得同一時(shí)間段內(nèi)區(qū)塊鏈網(wǎng)絡(luò)內(nèi)全體用戶節(jié)點(diǎn)共同進(jìn)行交易并同時(shí)生成區(qū)塊的目標(biāo)得以實(shí)現(xiàn),且能夠大幅節(jié)約區(qū)塊鏈系統(tǒng)的計(jì)算資源。
區(qū)別于傳統(tǒng)的公有鏈、聯(lián)盟鏈等形式的區(qū)塊鏈,本文提出的基于DEMATEL-ISM構(gòu)建的有向無環(huán)圖式結(jié)構(gòu)的區(qū)塊鏈?zhǔn)沟脜^(qū)塊鏈網(wǎng)絡(luò)內(nèi)的參與節(jié)點(diǎn)可在同一時(shí)間內(nèi)并發(fā)執(zhí)行共識,產(chǎn)生新的區(qū)塊,不再需要像傳統(tǒng)區(qū)塊鏈一樣等待其他區(qū)塊生成完畢后才能生成新的區(qū)塊?!傲鶎尤齾^(qū)”的糧油質(zhì)量安全區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)分層分區(qū)體系使糧油質(zhì)量安全區(qū)塊鏈網(wǎng)絡(luò)結(jié)構(gòu)更加明晰,對于構(gòu)建糧油質(zhì)量安全區(qū)塊鏈的共識機(jī)制以及底層智能合約提供了一種高效的設(shè)計(jì)指引。此外,通過劃分子鏈的區(qū)塊鏈網(wǎng)絡(luò)結(jié)構(gòu)使得糧油質(zhì)量安全區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)執(zhí)行共識僅需要同實(shí)際業(yè)務(wù)場景下具有強(qiáng)關(guān)聯(lián)關(guān)系的相關(guān)子鏈參與節(jié)點(diǎn)之間進(jìn)行,不需要全網(wǎng)所有節(jié)點(diǎn)共同參與共識,極大提高了區(qū)塊鏈網(wǎng)絡(luò)的共識效率、網(wǎng)絡(luò)吞吐量等性能。
Raft算法是一種去中心化、高可用的非拜占庭容錯(cuò)分布式一致性算法,設(shè)置了Leader節(jié)點(diǎn)、Follower節(jié)點(diǎn)和Candidate節(jié)點(diǎn)3種角色。Raft共識中所有操作請求需要先轉(zhuǎn)發(fā)到Leader節(jié)點(diǎn),再由Leader節(jié)點(diǎn)發(fā)送數(shù)據(jù)到各Follower節(jié)點(diǎn)進(jìn)行同步,Leader節(jié)點(diǎn)選舉過程和日志復(fù)制過程都會因Leader負(fù)載不均問題而將直接影響共識效率,例如在Candidate節(jié)點(diǎn)選舉過程中多個(gè)節(jié)點(diǎn)獲得相同票數(shù)導(dǎo)致投票分歧。PoS(Proof of stake)權(quán)益證明引入“幣齡”概念,持有更多幣或更長時(shí)間則擁有更多權(quán)益,以此將PoW(Proof of work)算力競爭轉(zhuǎn)化為權(quán)益競爭來節(jié)約算力,權(quán)益的引入也能夠防止節(jié)點(diǎn)發(fā)起惡意攻擊。但是新區(qū)塊的生成傾向于權(quán)益更高的節(jié)點(diǎn),并沒有解決中心化程度增強(qiáng)的問題;相比于PoW工作量證明效率有所提高,但交易吞吐量小,共識效率仍無法滿足需求。PBFT算法需要預(yù)準(zhǔn)備、準(zhǔn)備及提交三階段投票達(dá)成共識,主節(jié)點(diǎn)收到超過2/3節(jié)點(diǎn)的準(zhǔn)備消息就向全網(wǎng)廣播一條提交消息,即可提交新區(qū)塊到本地區(qū)塊鏈, 達(dá)成對最新高度區(qū)塊的共識,支持1/3總節(jié)點(diǎn)數(shù)量的容錯(cuò)能力。PBFT通過三階段投票機(jī)制有效降低了惡意節(jié)點(diǎn)對共識的影響,但是由于一次共識過程需要經(jīng)歷一次單點(diǎn)全廣播與兩次全點(diǎn)全廣播,通信開銷大,并不適用糧油場景下高交易量的需求。
從去中心化、安全性、共識效率、可擴(kuò)展性以及一致性5方面分別對PoS、PoW、Raft、PBFT以及P-Kafka的性能做了分析比較,如表4所示。參與共識的節(jié)點(diǎn)數(shù)量、主節(jié)點(diǎn)的選擇方式與共識節(jié)點(diǎn)的權(quán)重都影響共識的去中心化程度,節(jié)點(diǎn)的權(quán)利越分散,去中心化程度越高;共識節(jié)點(diǎn)數(shù)量指參與共識的是部分節(jié)點(diǎn)還是全網(wǎng)所有節(jié)點(diǎn);主節(jié)點(diǎn)選擇方式?jīng)Q定了共識屬于競爭類還是選舉類;共識節(jié)點(diǎn)權(quán)重指每一輪共識過程中成為主節(jié)點(diǎn)的概率是否相等。安全性主要包括容錯(cuò)率、節(jié)點(diǎn)可控性、攻擊多樣性、攻擊成本與安全恢復(fù)性等指標(biāo);容錯(cuò)率指共識在保證區(qū)塊鏈在達(dá)成共識的前提下所能接受的拜占庭惡意節(jié)點(diǎn)在全網(wǎng)節(jié)點(diǎn)的占比;節(jié)點(diǎn)可控性指參與共識的節(jié)點(diǎn)是否有排除惡意節(jié)點(diǎn)參與到共識中的能力;攻擊多樣性指共識算法所能承受攻擊的種類、數(shù)量;攻擊成本指惡意節(jié)點(diǎn)發(fā)起攻擊所需要的代價(jià);安全恢復(fù)性指區(qū)塊鏈?zhǔn)艿焦艉螅箶?shù)據(jù)恢復(fù)到攻擊發(fā)生前安全狀態(tài)的能力。共識效率從延遲、交易吞吐量2個(gè)角度分析;延遲指從一個(gè)區(qū)塊被生成到它的共識過程完成所需要的時(shí)間;吞吐量指單位時(shí)間內(nèi)處理交易的數(shù)量,吞吐量越高性能越高。可擴(kuò)展性包含資源消耗與通信復(fù)雜度兩個(gè)因素;資源消耗指共識過程中節(jié)點(diǎn)對算力、存儲及網(wǎng)絡(luò)等資源的消耗程度;通信復(fù)雜度指節(jié)點(diǎn)與節(jié)點(diǎn)之間在區(qū)塊鏈網(wǎng)絡(luò)中的通信成本。一致性包含了分叉可能性與最終一致性;分叉可能性指區(qū)塊鏈?zhǔn)欠翊嬖诜植娴那闆r;最終一致性指各個(gè)節(jié)點(diǎn)的數(shù)據(jù)在有限時(shí)間內(nèi)最終是否達(dá)成一致。
表4 共識算法性能比較
(1)去中心化
本文所提算法通過基于DEMATEL-ISM集成模型分析糧油質(zhì)量安全實(shí)際場景下網(wǎng)絡(luò)各節(jié)點(diǎn)的中心度,以此作為主排序服務(wù)節(jié)點(diǎn)選取及進(jìn)行拜占庭容錯(cuò)共識的依據(jù),子鏈各節(jié)點(diǎn)通過參與Kafka共識優(yōu)化投票過程,具有一致公平性;PBFT共識中選取Leader過程各個(gè)節(jié)點(diǎn)參與投票,P-Kafka繼承了這一邏輯,各個(gè)節(jié)點(diǎn)公平競爭,相比于PoW、PoS這類競爭共識擁有更多的資源就可以壟斷主節(jié)點(diǎn),去中心化程度更高。
(2)安全性
基于公鏈的PoW、PoS競爭類共識,對這類共識發(fā)動(dòng)攻擊的成本較高、難度較大,并且具有一定的安全恢復(fù)性。由于Raft共識僅支持故障節(jié)點(diǎn)容錯(cuò),并不支持惡意節(jié)點(diǎn)容錯(cuò),無法抵御拜占庭惡意節(jié)點(diǎn)的攻擊,不能滿足糧油質(zhì)量安全場景的應(yīng)用需求。
優(yōu)化的糧油質(zhì)量安全區(qū)塊鏈網(wǎng)絡(luò)結(jié)構(gòu)更加關(guān)注各個(gè)參與節(jié)點(diǎn)之間的相互關(guān)聯(lián)關(guān)系,將區(qū)塊鏈系統(tǒng)的共識以多條子鏈分布式共識的形式完成,各個(gè)參與節(jié)點(diǎn)共識的對象和范圍大幅減少和縮小,這在一定程度上控制了參與節(jié)點(diǎn)信息傳播的范圍,尤其對于保護(hù)糧油供應(yīng)鏈中生產(chǎn)加工類企業(yè)節(jié)點(diǎn)關(guān)鍵生產(chǎn)數(shù)據(jù)等隱私信息的安全性具有重要意義。改進(jìn)的共識在Kafka排序過程中引入PBFT投票機(jī)制,提升了共識的拜占庭容錯(cuò)能力,一定程度上提高共識的安全性。
(3)共識效率
傳統(tǒng)的公有鏈、聯(lián)盟鏈?zhǔn)絽^(qū)塊鏈因其結(jié)構(gòu)限制出塊效率相對較低,每一筆交易達(dá)成共識寫入?yún)^(qū)塊鏈的過程都需要等待區(qū)塊鏈全網(wǎng)中所有的節(jié)點(diǎn)完成后才能生成新的區(qū)塊,以比特幣區(qū)塊鏈為例,其需要每10 min才能生成一個(gè)新的區(qū)塊,顯然不能滿足實(shí)際業(yè)務(wù)場景的應(yīng)用需求。本文所構(gòu)建的糧油質(zhì)量安全區(qū)塊鏈網(wǎng)絡(luò)結(jié)構(gòu)以及優(yōu)化的Kafka共識機(jī)制僅在子鏈主排序服務(wù)節(jié)點(diǎn)進(jìn)行拜占庭容錯(cuò)共識時(shí)占用一定的計(jì)算資源,顯著低于傳統(tǒng)基于PoW等類型的區(qū)塊鏈。此外,優(yōu)化的共識機(jī)制基于糧油質(zhì)量安全溯源場景中授權(quán)參與節(jié)點(diǎn)建立,其在生成區(qū)塊后無需像PoW等傳統(tǒng)公鏈的共識機(jī)制那樣需通過連續(xù)6個(gè)區(qū)塊確認(rèn)才能添加至區(qū)塊鏈,基于場景授權(quán)的共識機(jī)制能夠在新區(qū)塊打包完成后直接添加至區(qū)塊鏈網(wǎng)絡(luò)。對于節(jié)點(diǎn)參與眾多、關(guān)聯(lián)關(guān)系復(fù)雜、數(shù)據(jù)量日漸龐大的糧油質(zhì)量安全區(qū)塊鏈溯源場景而言,本文所設(shè)計(jì)的網(wǎng)絡(luò)結(jié)構(gòu)及共識機(jī)制在保證參與節(jié)點(diǎn)一致公平性的前提下,一定程度上提高了區(qū)塊鏈網(wǎng)絡(luò)中的交易區(qū)塊出塊效率。
(4)可擴(kuò)展性
可擴(kuò)展性方面,競爭類共識PoW、PoS資源消耗大,單個(gè)節(jié)點(diǎn)性能受限,不適合糧油質(zhì)量安全這類大規(guī)模業(yè)務(wù)的場景。而本文基于PBFT改進(jìn)的Kafka共識P-Kafka雖然通信復(fù)雜度較高,但是相比于競爭類共識可擴(kuò)展性得到提升。
(5)一致性
在區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)達(dá)成共識方面,通過對糧油質(zhì)量安全區(qū)塊鏈中的Kafka共識機(jī)制進(jìn)行優(yōu)化,在交易消息經(jīng)區(qū)塊鏈網(wǎng)絡(luò)中各子鏈排序節(jié)點(diǎn)中繼到Kafka集群之前增加拜占庭容錯(cuò)共識的過程,保障了區(qū)塊鏈系統(tǒng)在當(dāng)網(wǎng)絡(luò)中存在一定規(guī)模的惡意節(jié)點(diǎn)攻擊時(shí)仍能進(jìn)行分布式一致性共識,維持區(qū)塊鏈系統(tǒng)正常運(yùn)行。
本文通過對糧油質(zhì)量安全區(qū)塊鏈進(jìn)行系統(tǒng)性的風(fēng)險(xiǎn)分析研究,通過建立糧油質(zhì)量安全區(qū)塊鏈風(fēng)險(xiǎn)指標(biāo)體系,并在解析糧油質(zhì)量安全區(qū)塊鏈風(fēng)險(xiǎn)和信息特征的基礎(chǔ)上,改進(jìn)并優(yōu)化了現(xiàn)有完全非可信執(zhí)行場景中通用型區(qū)塊鏈結(jié)構(gòu)。包括在網(wǎng)絡(luò)層提出了一種適用于非完全可信執(zhí)行場景中糧油質(zhì)量安全專用型區(qū)塊鏈網(wǎng)絡(luò)結(jié)構(gòu),在共識層提出一種基于PBFT改進(jìn)拜占庭容錯(cuò)能力的符合糧油質(zhì)量安全區(qū)塊鏈特征的Kafka共識優(yōu)化算法P-Kafka,使得區(qū)塊鏈在風(fēng)險(xiǎn)可辨識和可控的情形下適用于糧油質(zhì)量安全專用場景。