王玙
(西安航空職業(yè)技術學院,陜西西安 710089)
隨著我國互聯(lián)網(wǎng)經(jīng)濟的發(fā)展壯大以及國際貿(mào)易的深入合作,我國的國民經(jīng)濟對航空物流業(yè)的依賴程度不斷增強[1-3]。但我國現(xiàn)有的航空物流系統(tǒng)仍存在數(shù)據(jù)碎片化嚴重的問題,且類型多樣、過度中心化、透明度缺乏和物流網(wǎng)絡效率低下。隨著我國物聯(lián)網(wǎng)技術的落地,航空運輸過程中有大量的數(shù)據(jù)隨之產(chǎn)生。網(wǎng)絡的接入使這些信息更容易被泄露和篡改,航空物流系統(tǒng)面臨著潛在的安全風險[4-6]。
航空物流的體量大、參與方眾多,且分布雜散,這與區(qū)塊鏈的去中心化和分布式處理的特點高度吻合。采用區(qū)塊鏈作為航空物流信息處理系統(tǒng)的支撐技術,能夠?qū)崿F(xiàn)物流信息的可追溯和數(shù)據(jù)透明,并且能夠防止被篡改,最終提升物流行業(yè)的運營效率,降低社會流通成本。
區(qū)塊鏈技術是包括密碼學、哈希算法、時間戳、智能合約、分布式存儲、P2P 網(wǎng)絡、Merkle 樹等技術的一個技術合集,經(jīng)歷了以比特幣為標志的1.0 代,以以太坊為代表的2.0 代,現(xiàn)在進入了可計算的3.0 時代。基于區(qū)塊鏈3.0,可實現(xiàn)智能化物聯(lián)網(wǎng)的廣泛應用。區(qū)塊鏈技術有4 個基礎特點:去中心化自組織、操作透明、集體維護和可靠數(shù)據(jù)庫[7-8]。區(qū)塊鏈基礎架構可分為3 層:共識層、網(wǎng)絡層和數(shù)據(jù)層,其分布如圖1 所示。

圖1 區(qū)塊鏈技術基礎架構
區(qū)塊鏈的數(shù)據(jù)結(jié)構如圖2 所示。

圖2 區(qū)塊鏈的數(shù)據(jù)結(jié)構
區(qū)塊鏈技術使用Kad 算法實現(xiàn)P2P 分布式網(wǎng)絡,采用Socket 進行網(wǎng)絡編程。每個節(jié)點均具備路由、數(shù)據(jù)庫功能以及唯一的ID,節(jié)點與節(jié)點之間使用UDP 協(xié)議通信[9]。
每一個新區(qū)塊建立后,均會向全網(wǎng)廣播這一信息。每個節(jié)點在接收其之前,需要驗證新區(qū)塊的正確性。確認正確后,再向鄰近節(jié)點傳播,包含于塊頭的Merkle 樹由多個散列交易的不斷重復哈希運算得到。節(jié)點值由已知交易次數(shù)計算的哈希值加1 后得到,判斷其是否與當前塊的Merkle 樹哈希值相等。若不相等,則交易不可信;否則,新區(qū)塊是正確的,節(jié)點將存儲并廣播該區(qū)塊。網(wǎng)絡中的所有節(jié)點同步完成后,開始新區(qū)塊的計算,并在塊頭中記錄區(qū)塊的哈希值。
共識機制是維持區(qū)塊鏈安全、穩(wěn)定運行的核心,其確保各個節(jié)點均通過競爭權益憑證數(shù)量等競爭參數(shù)來取得其他節(jié)點的支持及優(yōu)先寫入數(shù)據(jù)的權力。目前共識機制有:工作量證明機制POW、權益證明機制POS、委托權益證明DPOS、驗證池共識機制POOL。不同的應用場景使用不同的共識算法[10-12]。
智能合約用于程序自動仲裁和執(zhí)行合同,包含了交易雙方的地址、交易內(nèi)容和觸發(fā)條件。合約代碼的條件一旦滿足,區(qū)塊鏈節(jié)點就會自動執(zhí)行交易雙方約定的義務,這一過程是透明、公開的。智能合約使用Solidity 語言編寫,在以太坊虛擬機上運行[13]。
從去中心化的訂單業(yè)務邏輯和數(shù)據(jù)存取邏輯兩個方面來設計整個系統(tǒng),系統(tǒng)的整體運行框架如圖3所示。

圖3 系統(tǒng)運行框圖
智能合約分為三類:倉儲合約、運輸合約和出庫合約,編寫并部署在以太坊網(wǎng)絡中。
貨主在填寫個人和貨物資料后,由收件信息產(chǎn)生訂單密鑰。在提交訂單后,由航空物流方確認訂單,支付預付款到智能合約賬戶中。激活倉儲合約,等待貨物入庫并生成一張經(jīng)過簽名的訂單信息進入數(shù)據(jù)層,該訂單被發(fā)送給入庫節(jié)點。貨物進入倉儲后,由物聯(lián)網(wǎng)系統(tǒng)將該信息傳輸?shù)綌?shù)據(jù)層,激活倉儲合約。將訂單信息存放到倉儲對應的地址中,并記錄這一信息和時間。信息經(jīng)過驗證后在全網(wǎng)進行廣播,數(shù)據(jù)統(tǒng)計模塊只能獲取該訂單的存在信息。
當?shù)竭_訂單中的航班運輸時間,并由貨物登機確認的狀態(tài)更新后,則觸發(fā)運輸合約,執(zhí)行調(diào)用運輸保險等操作。訂單信息從倉儲節(jié)點傳輸?shù)竭\輸節(jié)點,這一信息經(jīng)過驗證后在全網(wǎng)進行廣播;否則,運輸合約未定時觸發(fā),交易提前終止,返回運輸狀態(tài)異常信息。實際上,任何一個不可退回的異常均會導致交易終止,此時訂單轉(zhuǎn)移失敗。
運輸完成后,收貨方持訂單密鑰解鎖貨物,激活出庫合約,更新訂單狀態(tài)信息為交易完成。以太坊將智能合約賬戶中的預付款轉(zhuǎn)移到供應方區(qū)塊鏈賬戶,訂單信息從運輸節(jié)點地址轉(zhuǎn)存到出庫節(jié)點地址。這一交易信息經(jīng)過驗證后廣播到全網(wǎng),所有的節(jié)點均同步賬本數(shù)據(jù)。
航空物流系統(tǒng)的數(shù)據(jù)存儲和讀取分為兩種路徑:用戶信息、供應信息、需求信息、航班信息、庫容信息等基本數(shù)據(jù)存儲于數(shù)據(jù)庫,并提供給服務層接口,用以顯示與更新;數(shù)據(jù)庫采用區(qū)塊鏈的分區(qū)實現(xiàn),交易過程中的訂單數(shù)據(jù)、訂單狀態(tài)、費用等信息通過編寫智能合約存入?yún)^(qū)塊鏈,對區(qū)塊鏈中的數(shù)據(jù)讀寫均需要先經(jīng)過各節(jié)點的認證和共識,確保交易數(shù)據(jù)的可追溯和不可篡改性。
兩種存儲路徑包含的數(shù)據(jù)如表1 所示。

表1 數(shù)據(jù)分區(qū)存儲
基于區(qū)塊鏈的航空物流平臺劃分為3 層子系統(tǒng):信息展示系統(tǒng)、內(nèi)部管理系統(tǒng)、底層去中心化網(wǎng)絡。系統(tǒng)組織框架如圖4 所示。

圖4 系統(tǒng)組織框架
信息展示系統(tǒng)包括貨主端APP、門戶網(wǎng)站、企業(yè)端APP 三個部分,分別面向前臺用戶、游客和航空物流企業(yè)收集運輸信息和貨物信息,并發(fā)布航空倉儲信息。針對服務用戶,需要提供充足的服務項目和接口。
底層去中心化網(wǎng)絡的主體為編寫在各個節(jié)點的多種智能合約,通過觸發(fā)智能合約來執(zhí)行對應的訂單轉(zhuǎn)移。當所有合約全部被依次正確執(zhí)行時,點對點的支付也最終完成。
客戶端在服務器接口調(diào)用的基礎上進行業(yè)務處理,并返回數(shù)據(jù)。客戶端顯示遵循問題操作的邏輯,每個問題有唯一的題目標識符。由用戶操作界面的“上一步”和“下一步”按鍵來切換題目,用戶填寫問題的答案后,客戶端將答案返回給服務器。兩種操作在ControllerInquiry 類中實現(xiàn),NextProblem 和PreviousProblem 界面切換的邏輯如圖5 所示。

圖5 界面切換邏輯
為保證數(shù)據(jù)庫的安全性,系統(tǒng)的數(shù)據(jù)存儲以區(qū)塊鏈云存儲實現(xiàn),對物流信息單等固定格式數(shù)據(jù)采用分級本地存儲。區(qū)塊鏈數(shù)據(jù)庫的訪問控制邏輯如圖6 所示。

圖6 數(shù)據(jù)庫的訪問控制邏輯
設計數(shù)據(jù)庫管理員擁有最高權限,維護數(shù)據(jù)庫的訪問者列表和相應權限,訪問者包括貨主、收貨方和物流業(yè)主。訪問者的身份注冊后,系統(tǒng)為其分配身份信息和訪問權限。在訪問者需要執(zhí)行動作時,首先在權限身份認證層中,由共識認證主體對其身份授權進行認證。接著,在實施行為認證層對訪問者的行為進行認證和記錄。最終在信息分析層內(nèi)對訪問者的身份信息、權限信息和行為信息進行檢索與分析,以確保該次訪問動作事后可追溯。
智能合約包括入庫合約、運輸合約、出庫合約、權限匹配合約、身份認證合約、動作認證合約和支付合約等[14-16]。智能合約使用Solidity 語言編寫,并運行在以太坊上。交易雙方使用Struct 進行封裝,用Mapping 函數(shù)建立映射并存儲在合約中。在交易結(jié)算時,合約從區(qū)塊鏈地址中尋找Struct 中記錄的交易對象的交易信息并確認支付權限。最終調(diào)用結(jié)算方法,完成結(jié)算。
使用DataFactory 測試工具對物流管理系統(tǒng)作容量測試、性能測試和壓力測試。從100 個用戶并發(fā)訪問開始,逐漸增加訪問用戶數(shù),從而得到所構建的區(qū)塊鏈數(shù)據(jù)庫的性能曲線,如圖7 和圖8 所示。

圖7 區(qū)塊鏈數(shù)據(jù)庫并發(fā)寫測試

圖8 區(qū)塊鏈數(shù)據(jù)庫并發(fā)讀寫測試
兩種測試結(jié)果顯示,系統(tǒng)的數(shù)據(jù)庫運行較為穩(wěn)定,讀寫的數(shù)據(jù)正確率穩(wěn)定在95%左右,讀寫時間較為合理。
區(qū)塊鏈技術的安全性得益于分布存儲、加密驗證和去中心化交易,所有節(jié)點遵循少數(shù)服從多數(shù)的邏輯。但當多數(shù)節(jié)點被劫持后,整個系統(tǒng)的安全性將受到挑戰(zhàn)。區(qū)塊鏈系統(tǒng)常見的攻擊有雙花問題、51%攻擊、日蝕攻擊等。首先使用VerX 工具檢測區(qū)塊鏈的重入漏洞和權限漏洞的安全問題,檢測結(jié)果如圖9 所示。

圖9 重入漏洞檢測結(jié)果
系統(tǒng)生成檢測報告文檔,根據(jù)報告修正系統(tǒng)漏洞,然后進行系統(tǒng)的Bug 測試,最終檢測結(jié)果顯示,系統(tǒng)的Bug發(fā)生率低于0.6%,總體安全性得到充分保證。

圖10 權限漏洞檢測
該文構建了基于區(qū)塊鏈的航空物流管理系統(tǒng),相比于傳統(tǒng)航空物流平臺,該系統(tǒng)的創(chuàng)新點在于3個方面:1)使用區(qū)塊鏈技術處理物流訂單,加密策略和時間戳保證了訂單信息不可篡改,分布式存儲使得同一份訂單存放在多個節(jié)點內(nèi),有效保障數(shù)據(jù)的存儲安全性;2)數(shù)據(jù)分為兩種存儲方式,訂單等關鍵信息存放于區(qū)塊鏈中,個人登錄信息等存放于數(shù)據(jù)庫中;3)數(shù)據(jù)庫采用區(qū)塊鏈架構對訪問者的身份、動作、權限采用類似于區(qū)塊鏈中的共識驗證機制進行識別與記錄,在提供分級權限的同時確保了數(shù)據(jù)庫的操作安全性。
該系統(tǒng)主要面向小規(guī)模航空物流,源自于系統(tǒng)的數(shù)據(jù)庫體量小、物流運輸環(huán)節(jié)不夠精細,且對航空物流過程中的物聯(lián)網(wǎng)系統(tǒng)提出了一定要求。物聯(lián)網(wǎng)系統(tǒng)在檢測到實際的貨物狀態(tài)信息后,將作為數(shù)據(jù)寫入方觸發(fā)區(qū)塊鏈中新的交易。因此,系統(tǒng)在大規(guī)模的航空物流企業(yè)中無法獲得良好的使用體驗。在接下來的工作中,將完成擴大數(shù)據(jù)庫、完善區(qū)塊鏈的設計,使之可以面向大規(guī)模企業(yè)開放。