王玙
(西安航空職業(yè)技術學院,陜西西安 710089)
隨著我國互聯(lián)網經濟的發(fā)展壯大以及國際貿易的深入合作,我國的國民經濟對航空物流業(yè)的依賴程度不斷增強[1-3]。但我國現有的航空物流系統(tǒng)仍存在數據碎片化嚴重的問題,且類型多樣、過度中心化、透明度缺乏和物流網絡效率低下。隨著我國物聯(lián)網技術的落地,航空運輸過程中有大量的數據隨之產生。網絡的接入使這些信息更容易被泄露和篡改,航空物流系統(tǒng)面臨著潛在的安全風險[4-6]。
航空物流的體量大、參與方眾多,且分布雜散,這與區(qū)塊鏈的去中心化和分布式處理的特點高度吻合。采用區(qū)塊鏈作為航空物流信息處理系統(tǒng)的支撐技術,能夠實現物流信息的可追溯和數據透明,并且能夠防止被篡改,最終提升物流行業(yè)的運營效率,降低社會流通成本。
區(qū)塊鏈技術是包括密碼學、哈希算法、時間戳、智能合約、分布式存儲、P2P 網絡、Merkle 樹等技術的一個技術合集,經歷了以比特幣為標志的1.0 代,以以太坊為代表的2.0 代,現在進入了可計算的3.0 時代。基于區(qū)塊鏈3.0,可實現智能化物聯(lián)網的廣泛應用。區(qū)塊鏈技術有4 個基礎特點:去中心化自組織、操作透明、集體維護和可靠數據庫[7-8]。區(qū)塊鏈基礎架構可分為3 層:共識層、網絡層和數據層,其分布如圖1 所示。
圖1 區(qū)塊鏈技術基礎架構
區(qū)塊鏈的數據結構如圖2 所示。
圖2 區(qū)塊鏈的數據結構
區(qū)塊鏈技術使用Kad 算法實現P2P 分布式網絡,采用Socket 進行網絡編程。每個節(jié)點均具備路由、數據庫功能以及唯一的ID,節(jié)點與節(jié)點之間使用UDP 協(xié)議通信[9]。
每一個新區(qū)塊建立后,均會向全網廣播這一信息。每個節(jié)點在接收其之前,需要驗證新區(qū)塊的正確性。確認正確后,再向鄰近節(jié)點傳播,包含于塊頭的Merkle 樹由多個散列交易的不斷重復哈希運算得到。節(jié)點值由已知交易次數計算的哈希值加1 后得到,判斷其是否與當前塊的Merkle 樹哈希值相等。若不相等,則交易不可信;否則,新區(qū)塊是正確的,節(jié)點將存儲并廣播該區(qū)塊。網絡中的所有節(jié)點同步完成后,開始新區(qū)塊的計算,并在塊頭中記錄區(qū)塊的哈希值。
共識機制是維持區(qū)塊鏈安全、穩(wěn)定運行的核心,其確保各個節(jié)點均通過競爭權益憑證數量等競爭參數來取得其他節(jié)點的支持及優(yōu)先寫入數據的權力。目前共識機制有:工作量證明機制POW、權益證明機制POS、委托權益證明DPOS、驗證池共識機制POOL。不同的應用場景使用不同的共識算法[10-12]。
智能合約用于程序自動仲裁和執(zhí)行合同,包含了交易雙方的地址、交易內容和觸發(fā)條件。合約代碼的條件一旦滿足,區(qū)塊鏈節(jié)點就會自動執(zhí)行交易雙方約定的義務,這一過程是透明、公開的。智能合約使用Solidity 語言編寫,在以太坊虛擬機上運行[13]。
從去中心化的訂單業(yè)務邏輯和數據存取邏輯兩個方面來設計整個系統(tǒng),系統(tǒng)的整體運行框架如圖3所示。
圖3 系統(tǒng)運行框圖
智能合約分為三類:倉儲合約、運輸合約和出庫合約,編寫并部署在以太坊網絡中。
貨主在填寫個人和貨物資料后,由收件信息產生訂單密鑰。在提交訂單后,由航空物流方確認訂單,支付預付款到智能合約賬戶中。激活倉儲合約,等待貨物入庫并生成一張經過簽名的訂單信息進入數據層,該訂單被發(fā)送給入庫節(jié)點。貨物進入倉儲后,由物聯(lián)網系統(tǒng)將該信息傳輸到數據層,激活倉儲合約。將訂單信息存放到倉儲對應的地址中,并記錄這一信息和時間。信息經過驗證后在全網進行廣播,數據統(tǒng)計模塊只能獲取該訂單的存在信息。
當到達訂單中的航班運輸時間,并由貨物登機確認的狀態(tài)更新后,則觸發(fā)運輸合約,執(zhí)行調用運輸保險等操作。訂單信息從倉儲節(jié)點傳輸到運輸節(jié)點,這一信息經過驗證后在全網進行廣播;否則,運輸合約未定時觸發(fā),交易提前終止,返回運輸狀態(tài)異常信息。實際上,任何一個不可退回的異常均會導致交易終止,此時訂單轉移失敗。
運輸完成后,收貨方持訂單密鑰解鎖貨物,激活出庫合約,更新訂單狀態(tài)信息為交易完成。以太坊將智能合約賬戶中的預付款轉移到供應方區(qū)塊鏈賬戶,訂單信息從運輸節(jié)點地址轉存到出庫節(jié)點地址。這一交易信息經過驗證后廣播到全網,所有的節(jié)點均同步賬本數據。
航空物流系統(tǒng)的數據存儲和讀取分為兩種路徑:用戶信息、供應信息、需求信息、航班信息、庫容信息等基本數據存儲于數據庫,并提供給服務層接口,用以顯示與更新;數據庫采用區(qū)塊鏈的分區(qū)實現,交易過程中的訂單數據、訂單狀態(tài)、費用等信息通過編寫智能合約存入區(qū)塊鏈,對區(qū)塊鏈中的數據讀寫均需要先經過各節(jié)點的認證和共識,確保交易數據的可追溯和不可篡改性。
兩種存儲路徑包含的數據如表1 所示。
表1 數據分區(qū)存儲
基于區(qū)塊鏈的航空物流平臺劃分為3 層子系統(tǒng):信息展示系統(tǒng)、內部管理系統(tǒng)、底層去中心化網絡。系統(tǒng)組織框架如圖4 所示。
圖4 系統(tǒng)組織框架
信息展示系統(tǒng)包括貨主端APP、門戶網站、企業(yè)端APP 三個部分,分別面向前臺用戶、游客和航空物流企業(yè)收集運輸信息和貨物信息,并發(fā)布航空倉儲信息。針對服務用戶,需要提供充足的服務項目和接口。
底層去中心化網絡的主體為編寫在各個節(jié)點的多種智能合約,通過觸發(fā)智能合約來執(zhí)行對應的訂單轉移。當所有合約全部被依次正確執(zhí)行時,點對點的支付也最終完成。
客戶端在服務器接口調用的基礎上進行業(yè)務處理,并返回數據??蛻舳孙@示遵循問題操作的邏輯,每個問題有唯一的題目標識符。由用戶操作界面的“上一步”和“下一步”按鍵來切換題目,用戶填寫問題的答案后,客戶端將答案返回給服務器。兩種操作在ControllerInquiry 類中實現,NextProblem 和PreviousProblem 界面切換的邏輯如圖5 所示。
圖5 界面切換邏輯
為保證數據庫的安全性,系統(tǒng)的數據存儲以區(qū)塊鏈云存儲實現,對物流信息單等固定格式數據采用分級本地存儲。區(qū)塊鏈數據庫的訪問控制邏輯如圖6 所示。
圖6 數據庫的訪問控制邏輯
設計數據庫管理員擁有最高權限,維護數據庫的訪問者列表和相應權限,訪問者包括貨主、收貨方和物流業(yè)主。訪問者的身份注冊后,系統(tǒng)為其分配身份信息和訪問權限。在訪問者需要執(zhí)行動作時,首先在權限身份認證層中,由共識認證主體對其身份授權進行認證。接著,在實施行為認證層對訪問者的行為進行認證和記錄。最終在信息分析層內對訪問者的身份信息、權限信息和行為信息進行檢索與分析,以確保該次訪問動作事后可追溯。
智能合約包括入庫合約、運輸合約、出庫合約、權限匹配合約、身份認證合約、動作認證合約和支付合約等[14-16]。智能合約使用Solidity 語言編寫,并運行在以太坊上。交易雙方使用Struct 進行封裝,用Mapping 函數建立映射并存儲在合約中。在交易結算時,合約從區(qū)塊鏈地址中尋找Struct 中記錄的交易對象的交易信息并確認支付權限。最終調用結算方法,完成結算。
使用DataFactory 測試工具對物流管理系統(tǒng)作容量測試、性能測試和壓力測試。從100 個用戶并發(fā)訪問開始,逐漸增加訪問用戶數,從而得到所構建的區(qū)塊鏈數據庫的性能曲線,如圖7 和圖8 所示。
圖7 區(qū)塊鏈數據庫并發(fā)寫測試
圖8 區(qū)塊鏈數據庫并發(fā)讀寫測試
兩種測試結果顯示,系統(tǒng)的數據庫運行較為穩(wěn)定,讀寫的數據正確率穩(wěn)定在95%左右,讀寫時間較為合理。
區(qū)塊鏈技術的安全性得益于分布存儲、加密驗證和去中心化交易,所有節(jié)點遵循少數服從多數的邏輯。但當多數節(jié)點被劫持后,整個系統(tǒng)的安全性將受到挑戰(zhàn)。區(qū)塊鏈系統(tǒng)常見的攻擊有雙花問題、51%攻擊、日蝕攻擊等。首先使用VerX 工具檢測區(qū)塊鏈的重入漏洞和權限漏洞的安全問題,檢測結果如圖9 所示。
圖9 重入漏洞檢測結果
系統(tǒng)生成檢測報告文檔,根據報告修正系統(tǒng)漏洞,然后進行系統(tǒng)的Bug 測試,最終檢測結果顯示,系統(tǒng)的Bug發(fā)生率低于0.6%,總體安全性得到充分保證。
圖10 權限漏洞檢測
該文構建了基于區(qū)塊鏈的航空物流管理系統(tǒng),相比于傳統(tǒng)航空物流平臺,該系統(tǒng)的創(chuàng)新點在于3個方面:1)使用區(qū)塊鏈技術處理物流訂單,加密策略和時間戳保證了訂單信息不可篡改,分布式存儲使得同一份訂單存放在多個節(jié)點內,有效保障數據的存儲安全性;2)數據分為兩種存儲方式,訂單等關鍵信息存放于區(qū)塊鏈中,個人登錄信息等存放于數據庫中;3)數據庫采用區(qū)塊鏈架構對訪問者的身份、動作、權限采用類似于區(qū)塊鏈中的共識驗證機制進行識別與記錄,在提供分級權限的同時確保了數據庫的操作安全性。
該系統(tǒng)主要面向小規(guī)模航空物流,源自于系統(tǒng)的數據庫體量小、物流運輸環(huán)節(jié)不夠精細,且對航空物流過程中的物聯(lián)網系統(tǒng)提出了一定要求。物聯(lián)網系統(tǒng)在檢測到實際的貨物狀態(tài)信息后,將作為數據寫入方觸發(fā)區(qū)塊鏈中新的交易。因此,系統(tǒng)在大規(guī)模的航空物流企業(yè)中無法獲得良好的使用體驗。在接下來的工作中,將完成擴大數據庫、完善區(qū)塊鏈的設計,使之可以面向大規(guī)模企業(yè)開放。