寧 卓,李牧陽
(1.南京郵電大學(xué) 現(xiàn)代郵政學(xué)院、現(xiàn)代郵政研究院,江蘇 南京 210003;2.南京郵電大學(xué) 物聯(lián)網(wǎng)學(xué)院,江蘇 南京 210003)
近年來,隨著國內(nèi)電子商務(wù)的迅速發(fā)展,物流快遞行業(yè)的業(yè)務(wù)量迎來了爆發(fā)式的增長(zhǎng)。但在這種增長(zhǎng)背后,隱藏著諸多問題亟待解決。信息溯源難、事故責(zé)任含糊不清、企業(yè)間數(shù)據(jù)不流通成為行業(yè)現(xiàn)狀,傳統(tǒng)物流企業(yè)的“中心化”管理,使得個(gè)體權(quán)利過大化,不同企業(yè)之間難以互相信任,壁壘由此產(chǎn)生。物流快遞業(yè)務(wù)由眾多參與主體構(gòu)成,核心企業(yè)掌握的信息不夠?qū)ΨQ與透明,并且存在作假的風(fēng)險(xiǎn),嚴(yán)重影響供應(yīng)鏈的管理效率。物流環(huán)節(jié)區(qū)域多、時(shí)間跨度長(zhǎng),因此監(jiān)管困難,假冒偽劣難以根除。
但建設(shè)行業(yè)級(jí)的物流信息平臺(tái),實(shí)施起來面臨著許多困難:物流企業(yè)眾多,很難信任或支持哪個(gè)“龍頭”企業(yè)創(chuàng)建的行業(yè)平臺(tái),即去中心化的要求;企業(yè)之間既希望通過共享數(shù)據(jù)互通有無,合作共贏,又不希望泄露自己的關(guān)鍵信息,具有很強(qiáng)的抗大數(shù)據(jù)分析和數(shù)據(jù)保密性的要求;既希望發(fā)生事故時(shí)能通過平臺(tái)高效溯源,又希望保護(hù)快遞參與各方的隱私信息;為了提高平臺(tái)的可信度與權(quán)威性,應(yīng)允許第三方或政府機(jī)構(gòu)的介入監(jiān)管和審計(jì),平臺(tái)應(yīng)具備多方參與特性并保持信息高度透明。
綜上,文中提出了一個(gè)基于聯(lián)盟區(qū)塊鏈的物流業(yè)信息平臺(tái)系統(tǒng)LIP-Chain。利用區(qū)塊鏈技術(shù)的去中心化、數(shù)據(jù)防篡改、數(shù)據(jù)溯源三大特性,從底層優(yōu)化物流行業(yè)信息交易與存儲(chǔ)方式存在的問題。首先,區(qū)塊鏈技術(shù)底層由P2P網(wǎng)絡(luò)支撐,所有節(jié)點(diǎn)共同維護(hù)和驗(yàn)證區(qū)塊鏈網(wǎng)絡(luò)。這種去中心化架構(gòu)解決了傳統(tǒng)系統(tǒng)中中心機(jī)構(gòu)權(quán)力過大的問題,非常適合應(yīng)用于物流快遞等需要多方共同參與的業(yè)務(wù)場(chǎng)景中。其次,區(qū)塊鏈交易信息存儲(chǔ)在從后向前有序鏈接起來的區(qū)塊中。當(dāng)區(qū)塊鏈達(dá)到一定長(zhǎng)度,區(qū)塊內(nèi)的數(shù)據(jù)在實(shí)際上便是無法篡改的[1]。最后,區(qū)塊鏈中大量使用數(shù)字簽名,并且使用Merkle樹作為快速歸納和校驗(yàn)完整性的數(shù)據(jù)結(jié)構(gòu)[2]。使得數(shù)據(jù)的溯源、驗(yàn)證、查詢流程擺脫傳統(tǒng)的人工審計(jì),提高效率的同時(shí)大大降低了成本[3]。配合智能合約,這一特性將在物流業(yè)等高吞吐量的交易場(chǎng)景中發(fā)揮巨大作用。
除了區(qū)塊鏈技術(shù)具有的原生性去中心化、去信任、信息不可篡改、易溯源等特點(diǎn),提出的框架還具有以下優(yōu)點(diǎn):
(1)運(yùn)行于區(qū)塊鏈上的智能合約可在滿足條件時(shí)自動(dòng)促成交易,省去了中間環(huán)節(jié)和大量人工審核成本;
(2)采用聯(lián)盟鏈而非無限制的公有鏈體制,可在保證去中心化運(yùn)作的基礎(chǔ)上最大限度保護(hù)用戶隱私和企業(yè)機(jī)密;
(3)在區(qū)塊鏈網(wǎng)絡(luò)外層引入身份控制,增強(qiáng)網(wǎng)絡(luò)內(nèi)部信任度,簡(jiǎn)化驗(yàn)證操作,提升系統(tǒng)效率;
(4)選取了基于拜占庭容錯(cuò)的共識(shí)算法BFT-SMART,在保證性能滿足需求的前提下,將系統(tǒng)安全性提升至33%拜占庭容錯(cuò)水平。
區(qū)塊鏈顧名思義,是由區(qū)塊組成的鏈狀數(shù)據(jù)結(jié)構(gòu)。在一條區(qū)塊鏈中,區(qū)塊被從后向前有序地鏈接,每個(gè)區(qū)塊都指向前一個(gè)區(qū)塊。對(duì)每個(gè)區(qū)塊頭進(jìn)行SHA256加密哈希[4],可生成一個(gè)哈希值。通過這個(gè)哈希值,可以識(shí)別出區(qū)塊鏈中的對(duì)應(yīng)區(qū)塊。同時(shí),每一個(gè)區(qū)塊都通過“父區(qū)塊哈希值”字段引用前一區(qū)塊(父區(qū)塊)。這樣把每個(gè)區(qū)塊鏈接到各自父區(qū)塊的哈希值序列就創(chuàng)建了一條一直可以追溯到第一個(gè)區(qū)塊(創(chuàng)世區(qū)塊)的鏈條。
按照網(wǎng)絡(luò)中節(jié)點(diǎn)擁有的權(quán)限公平性,可以將區(qū)塊鏈分為公有鏈、聯(lián)盟鏈和私有鏈三種。文中采用的聯(lián)盟鏈機(jī)制,適用于對(duì)物流快遞等對(duì)隱私和性能有一定要求的行業(yè)[5]。聯(lián)盟鏈的參與者需要通過第三方機(jī)構(gòu)的身份審核,聯(lián)盟鏈通過將系統(tǒng)的參與者劃分角色,之后賦予不同的節(jié)點(diǎn)以不同的權(quán)限。
區(qū)塊鏈系統(tǒng)中所謂的共識(shí),即所有節(jié)點(diǎn)對(duì)下一步要將哪些交易數(shù)據(jù),以怎樣的順序加入?yún)^(qū)塊鏈達(dá)成一致[6]。由于區(qū)塊鏈系統(tǒng)中存儲(chǔ)的交易信息具有實(shí)際價(jià)值,因此系統(tǒng)內(nèi)共識(shí)的達(dá)成不僅是為了性能和穩(wěn)定性的提升,更直接的原因是為了防止“雙重支付攻擊”[7]。
目前的主流共識(shí)算法總結(jié)見表1[8]。
綜上所述,POW等概率共識(shí)算法為了保證系統(tǒng)的安全性而犧牲了確認(rèn)速度與吞吐量等其他指標(biāo),且這類算法往往需要高性能的節(jié)點(diǎn)來支持其復(fù)雜的邏輯,不適用于物流行業(yè)的交易場(chǎng)景。而RAFT、PAXOS[9]等算法只支持沖突容錯(cuò),一旦系統(tǒng)內(nèi)出現(xiàn)惡意節(jié)點(diǎn),則有可能因?yàn)閱我还?jié)點(diǎn)導(dǎo)致整個(gè)系統(tǒng)崩潰。近年來逐漸受到關(guān)注的拜占庭共識(shí)算法[10]在各項(xiàng)性能上中和了以上兩類算法的優(yōu)缺點(diǎn),該類算法擁有33%的拜占庭容錯(cuò)與沖突容錯(cuò)能力[11]。根據(jù)實(shí)際傳輸?shù)臄?shù)據(jù)不同,交易確認(rèn)時(shí)間一般在幾百毫秒至幾秒之間,且可以保證1 000 tps左右的系統(tǒng)吞吐量。近年來,以Hyperledger[12]為代表的企業(yè)級(jí)、聯(lián)盟區(qū)塊鏈系統(tǒng)也都選擇基于拜占庭共識(shí)算法作為其下一步發(fā)展與研究的方向。
文中設(shè)計(jì)了基于聯(lián)盟區(qū)塊鏈的物流業(yè)信息平臺(tái)LIP-Chain。該設(shè)計(jì)主要針對(duì)以下關(guān)鍵問題進(jìn)行研究和探討:系統(tǒng)內(nèi)的訪問控制及身份管理問題;系統(tǒng)內(nèi)用戶和交易數(shù)據(jù)的安全與隱私保護(hù)問題;區(qū)塊鏈網(wǎng)絡(luò)中使用的共識(shí)算法問題。
該系統(tǒng)采用聯(lián)盟鏈架構(gòu),在外層引入PKI體系,以此達(dá)到強(qiáng)化系統(tǒng)身份管理與訪問控制的目的。同時(shí),引入了基于拜占庭容錯(cuò)的BFT-SMART協(xié)議作為共識(shí)算法,在保證系統(tǒng)性能滿足實(shí)際需求的前提下,將現(xiàn)有聯(lián)盟鏈系統(tǒng)普遍采用的沖突容錯(cuò)類共識(shí)算法提升至可容忍33%拜占庭錯(cuò)誤的水平。該系統(tǒng)雖然拋棄了傳統(tǒng)區(qū)塊鏈完全去中心化的特性,但可以滿足行業(yè)級(jí)信息平臺(tái)的需求。相反,基于聯(lián)盟鏈的多中心化架構(gòu)有利于充分發(fā)揮區(qū)塊鏈技術(shù)在數(shù)據(jù)不可篡改、易溯源,多方驗(yàn)證維護(hù)等其他特性上的優(yōu)勢(shì),提升了系統(tǒng)的性能與效率。
提出的系統(tǒng)架構(gòu)如圖1所示,整個(gè)系統(tǒng)分為兩層:應(yīng)用交互層和區(qū)塊鏈共識(shí)層。
圖1 系統(tǒng)整體架構(gòu)
應(yīng)用交互層負(fù)責(zé)將用戶數(shù)據(jù)和操作封裝成符合標(biāo)準(zhǔn)的數(shù)字資產(chǎn),之后以預(yù)先定義好的標(biāo)準(zhǔn)交易形式向區(qū)塊鏈節(jié)點(diǎn)發(fā)送各類請(qǐng)求以完成用戶操作,并最終將數(shù)據(jù)存儲(chǔ)在區(qū)塊鏈上。
區(qū)塊鏈共識(shí)層包括維護(hù)區(qū)塊鏈的P2P節(jié)點(diǎn)網(wǎng)絡(luò)和由系統(tǒng)中節(jié)點(diǎn)共同維護(hù)的唯一一條區(qū)塊鏈。主要參與者負(fù)責(zé)運(yùn)行作為節(jié)點(diǎn)的實(shí)體服務(wù)器,驗(yàn)證來自上層的交易并將交易組成區(qū)塊,運(yùn)行共識(shí)算法并最終更新各節(jié)點(diǎn)區(qū)塊鏈副本中的數(shù)據(jù)。
該系統(tǒng)采用模塊化設(shè)計(jì),將P2P網(wǎng)絡(luò)中的節(jié)點(diǎn)分為三種角色:
(1)背書節(jié)點(diǎn):背書節(jié)點(diǎn)負(fù)責(zé)驗(yàn)證交易合法性并對(duì)其簽名,驗(yàn)證通過后負(fù)責(zé)執(zhí)行交易。
(2)組織節(jié)點(diǎn):組織節(jié)點(diǎn)接收由背書節(jié)點(diǎn)簽名完成的交易,運(yùn)行共識(shí)算法,確保一致性后將交易組織成區(qū)塊后交付給提交節(jié)點(diǎn)。
(3)提交節(jié)點(diǎn):提交節(jié)點(diǎn)驗(yàn)證組織完成的區(qū)塊,之后用該區(qū)塊更新區(qū)塊鏈。
在設(shè)計(jì)的系統(tǒng)中,一次標(biāo)準(zhǔn)的交易流程由交易背書、生成區(qū)塊、確認(rèn)提交三個(gè)階段構(gòu)成。具體流程簡(jiǎn)述如下:
客戶端向任一合法背書節(jié)點(diǎn)發(fā)送請(qǐng)求,開始一次交易。背書節(jié)點(diǎn)模擬執(zhí)行該交易的智能合約并讀取當(dāng)前區(qū)塊鏈的狀態(tài),一并簽名后返回給客戶端程序??蛻舳顺绦蚪邮盏綌?shù)據(jù)后,將其與原始交易數(shù)據(jù)一同打包,廣播給所有組織節(jié)點(diǎn)。組織節(jié)點(diǎn)集群執(zhí)行基于BFT-SMART的改進(jìn)共識(shí)算法,在接收到一定數(shù)量的交易或達(dá)到一定時(shí)間后,將已通過共識(shí)算法的交易組織成為一個(gè)區(qū)塊。
每當(dāng)一個(gè)區(qū)塊完成,組織節(jié)點(diǎn)向所有的提交節(jié)點(diǎn)廣播此區(qū)塊。提交節(jié)點(diǎn)對(duì)區(qū)塊進(jìn)行時(shí)效性與合法性驗(yàn)證,通過后使用區(qū)塊中的交易數(shù)據(jù)更新本地的區(qū)塊鏈副本。最后,所有提交節(jié)點(diǎn)單獨(dú)通知客戶端此次交易是否提交成功。一次完整交易流程結(jié)束。
該系統(tǒng)在數(shù)據(jù)存儲(chǔ)和系統(tǒng)訪問控制兩個(gè)層面保證了交易數(shù)據(jù)和用戶信息的安全。其中在數(shù)據(jù)存儲(chǔ)層面采用中本聰提出的經(jīng)典區(qū)塊鏈結(jié)構(gòu)[2]。系統(tǒng)內(nèi)產(chǎn)生的所有數(shù)據(jù)均被封裝在各類標(biāo)準(zhǔn)交易中,由組織節(jié)點(diǎn)定期打包為區(qū)塊后,最終被放入該交易網(wǎng)絡(luò)所擁有的唯一區(qū)塊鏈內(nèi),成為區(qū)塊鏈不可更改的一部分[13]。
在系統(tǒng)訪問控制層面,該系統(tǒng)引入X.509證書規(guī)范[14]以及PKI體系[15]對(duì)系統(tǒng)內(nèi)身份和權(quán)限進(jìn)行管理。任何加入網(wǎng)絡(luò)的參與者首先需要從證書頒發(fā)機(jī)構(gòu)獲得數(shù)字證書,以作為在網(wǎng)絡(luò)中活動(dòng)的唯一合法身份。引入PKI體系以密碼學(xué)原理保證了系統(tǒng)的隱私安全,實(shí)現(xiàn)真正的區(qū)塊鏈“去信任”。
文中選取了文獻(xiàn)[16]提出的BFT-SMART算法應(yīng)用于該物流業(yè)信息平臺(tái)。BFT-SMART在拜占庭共識(shí)算法的基礎(chǔ)上實(shí)現(xiàn)了一個(gè)模塊化的SMR協(xié)議[17]。對(duì)BFT-SMART算法進(jìn)行了簡(jiǎn)化,主要修改如下:拋棄了原版算法中的領(lǐng)導(dǎo)人選舉操作,客戶端將隨機(jī)選擇臨近組織節(jié)點(diǎn)作為BFT-SMART算法中的領(lǐng)導(dǎo)人;在共識(shí)算法的任意階段發(fā)生錯(cuò)誤后,直接丟棄該交易并通報(bào)客戶端,而不執(zhí)行原版BFT-SMART算法中的錯(cuò)誤處理階段。
為了驗(yàn)證系統(tǒng)設(shè)計(jì)的可行性,并對(duì)系統(tǒng)性能做出評(píng)估,文中基于區(qū)塊鏈開源框架Hyperledger Fabric搭建了底層區(qū)塊鏈網(wǎng)絡(luò),使用Fabric SDK編寫應(yīng)用交互層客戶端,執(zhí)行交易請(qǐng)求。共識(shí)機(jī)制模塊基于文獻(xiàn)[18]提供的BFT-SMART開源庫實(shí)現(xiàn)了針對(duì)該系統(tǒng)進(jìn)行改進(jìn)的BFT共識(shí)機(jī)制。
實(shí)驗(yàn)環(huán)境配置為:Docker 17.09.0-ce,Hyperledger Fabric v1.1,在Mac OS 13.3上搭建了應(yīng)用交互層客戶端,以及包含4個(gè)背書節(jié)點(diǎn)和4個(gè)組織節(jié)點(diǎn)的底層區(qū)塊鏈網(wǎng)絡(luò)。在Ubuntu 16.04搭建了共識(shí)機(jī)制模塊。實(shí)驗(yàn)機(jī)器為Macbook Pro17,CPU:Intel Core i5 3.1 GHz,內(nèi)存:16 GB。
為了驗(yàn)證該系統(tǒng)能夠滿足物流交易場(chǎng)景的實(shí)際需求,使用了用戶注冊(cè)和交易信息查詢兩種標(biāo)準(zhǔn)交易對(duì)系統(tǒng)進(jìn)行了測(cè)試,每種交易分別運(yùn)行3 000~5 000次。通過對(duì)相應(yīng)進(jìn)程及Docker容器進(jìn)行監(jiān)測(cè)記錄,獲取了系統(tǒng)吞吐量、交易延遲、節(jié)點(diǎn)資源消耗(內(nèi)存、CPU、網(wǎng)絡(luò)IO占用)幾項(xiàng)關(guān)鍵數(shù)據(jù)。并對(duì)改進(jìn)的共識(shí)機(jī)制進(jìn)行了單獨(dú)測(cè)試,得出了其平均共識(shí)執(zhí)行時(shí)間。
圖2顯示了在每秒50、100、150交易(transaction per second,tps)作為輸入的條件下,對(duì)系統(tǒng)交易延遲以及輸出吞吐量的影響。可以看出,在50 tps作為輸入的條件下,系統(tǒng)中只需不到1 s便可執(zhí)行一筆交易并
圖2 輸入交易速率對(duì)交易延遲及輸出吞吐量的影響
進(jìn)行確認(rèn),且輸出交易速率未受影響。隨著輸入交易速率的提升,交易確認(rèn)延遲明顯上升,且輸出交易速率穩(wěn)定在90 tps左右。
圖3~圖5顯示了在50 tps輸入,1 000筆交易的條件下,各主要進(jìn)程及容器的資源占用情況。結(jié)果表明,1 000筆交易后,網(wǎng)絡(luò)流量消耗最高的組織節(jié)點(diǎn)約消耗20 M流量,系統(tǒng)各主要模塊平均CPU占用均不高于20%,各主要模塊平均內(nèi)存占用在100~150 M左右(圖中EP、OP分別代表背書節(jié)點(diǎn)與組織節(jié)點(diǎn))。
圖3 模擬節(jié)點(diǎn)平均網(wǎng)絡(luò)流量使用情況
圖4 模擬節(jié)點(diǎn)平均CPU占用情況
圖5 模擬節(jié)點(diǎn)平均內(nèi)存占用情況
由此可見,該系統(tǒng)各主要模塊的資源消耗較低,能適應(yīng)物流交易業(yè)務(wù)場(chǎng)景的需求,并應(yīng)用于手持終端等移動(dòng)設(shè)備。在實(shí)際應(yīng)用場(chǎng)景中,若采取多進(jìn)程并發(fā)處理機(jī)制,系統(tǒng)吞吐量有望達(dá)到數(shù)百甚至上千筆交易每秒。未來將在這一方向上進(jìn)行更多研究與驗(yàn)證。
同時(shí),對(duì)共識(shí)機(jī)制模塊進(jìn)行了單獨(dú)測(cè)試。共識(shí)模塊配置為每區(qū)塊僅存儲(chǔ)一筆交易,收到交易后立即執(zhí)行后續(xù)操作,以此來分析BFT-SMART的執(zhí)行效率。圖6為在分別使用1~64 kB大小的交易進(jìn)行測(cè)試的情況下,基于BFT-SMART的共識(shí)算法的執(zhí)行時(shí)間。結(jié)果顯示,單筆交易數(shù)據(jù)大小在8 kB以下時(shí),執(zhí)行時(shí)間較為穩(wěn)定,超過這一數(shù)值,算法執(zhí)行時(shí)間將呈指數(shù)級(jí)上升。
圖6 交易數(shù)據(jù)大小對(duì)共識(shí)算法執(zhí)行時(shí)間的影響
針對(duì)國內(nèi)物流行業(yè)當(dāng)前痛點(diǎn),結(jié)合區(qū)塊鏈技術(shù)優(yōu)勢(shì)及特點(diǎn),提出了一個(gè)基于聯(lián)盟區(qū)塊鏈的物流業(yè)信息平臺(tái)。對(duì)設(shè)計(jì)信息平臺(tái)所涉及的關(guān)鍵問題進(jìn)行了分析和研究,如訪問控制及身份管理、共識(shí)算法、安全與隱私保護(hù)等問題,并搭建了原型系統(tǒng)進(jìn)行仿真實(shí)驗(yàn)。相比于比特幣等加密貨幣系統(tǒng)以及現(xiàn)有的聯(lián)盟鏈系統(tǒng),該系統(tǒng)具有如下優(yōu)勢(shì):
(1)在區(qū)塊鏈網(wǎng)絡(luò)外層引入PKI體系進(jìn)行身份管理,滿足了行業(yè)級(jí)信息平臺(tái)對(duì)數(shù)據(jù)透明度與隱私保護(hù)機(jī)制上的靈活需求;
(2)引入了基于拜占庭容錯(cuò)的BFT-SMART協(xié)議作為共識(shí)算法,在保證系統(tǒng)性能滿足實(shí)際需求的前提下,將現(xiàn)有聯(lián)盟鏈系統(tǒng)普遍采用的沖突容錯(cuò)共識(shí)算法提升至可容忍33%拜占庭錯(cuò)誤的水平;
(3)聯(lián)盟鏈架構(gòu)簡(jiǎn)化了系統(tǒng)的數(shù)據(jù)驗(yàn)證與安全機(jī)制,交易只需被區(qū)塊鏈網(wǎng)絡(luò)部分節(jié)點(diǎn)驗(yàn)證與執(zhí)行,降低了節(jié)點(diǎn)的資源占用需求,節(jié)省成本。
該系統(tǒng)雖然在理論上具有一定的研究?jī)r(jià)值和優(yōu)勢(shì),且仿真結(jié)果理想。但要想付諸實(shí)踐,真正應(yīng)用于現(xiàn)實(shí)交易場(chǎng)景之中,還有許多具體細(xì)節(jié)需要考慮。下一步的工作是在真實(shí)的分布式場(chǎng)景中對(duì)系統(tǒng)進(jìn)行搭建與測(cè)試,并對(duì)共識(shí)算法進(jìn)行改進(jìn)。