方燚飚,周創明,雷曉莉,宋亞飛,高 娜
(1.空軍工程大學 研究生院,西安 710038;2.空軍工程大學 防空反導學院,西安 710038)
供應鏈的概念[1]由擴大的生產概念發展而來,圍繞核心企業并通過對企業信息流、物流和資金流進行控制,形成一個整體的功能網鏈結構。隨著經濟全球化趨勢的加速發展,企業間的競爭由單純企業個體實力的較量向企業供應鏈間的競爭轉變。供應鏈將原本有合作關系的企業進行串聯形成復合網絡,加強了企業間的協同并提高合作效率,實現企業利益的最大化[2]。由于企業間的各類交互越來越頻繁且復雜,傳統以核心企業為主導的供應鏈模式已無法滿足企業發展的需求,同時信息共享及產品質量溯源難度大等問題也愈發突出。區塊鏈技術的出現為供應鏈質量管理帶來了新的思路[3]。區塊鏈技術是比特幣的底層技術,其有效解決了傳統數字貨幣體系中的雙花問題和拜占庭將軍問題[4-5]。隨著比特幣等數字貨幣的普及,區塊鏈技術所具有的優勢開始引起社會各界的廣泛關注,其分布式存儲、不可篡改的特性[6]能夠在保證數據完整性和可信度的同時,實現最大程度的數據共享,并且區塊鏈技術的應用也逐漸由金融領域向物聯網等非金融領域延伸[7]。
目前,國內外研究人員對區塊鏈技術的應用進行了大量研究并取得了重要成果。2016 年,Linux 基金會發起了Hyperledger 開源區塊鏈項目,其中的Hyperledger Fabric 項目[8]是針對企業級的區塊鏈應用,旨在發展跨行業的商業區塊鏈平臺。文獻[9]設計基于區塊鏈的智能藥品供應鏈管理系統,通過分布式系統記錄藥品全周期信息,確?;颊叩挠盟幇踩?。文獻[10]基于智能合約和訪問控制設計MeDShare系統,該系統能夠提供鏈上醫療數據的溯源和審計服務。文獻[11]通過區塊鏈技術探討物聯網供應鏈中的安全漏洞,并分析區塊鏈技術在物聯網供應鏈中潛在的優勢。文獻[12]設計基于區塊鏈的供應鏈信息共享合約,解決了供應鏈參與主體間的信任問題。文獻[13]分析區塊鏈技術對供應鏈參與主體間信息共享程度的影響,結果表明通過區塊鏈技術能夠降低供應鏈成員間的交易成本,提高信息共享效率。針對傳統供應鏈系統中存在的信任傳遞困難、交易信息不透明、信息共享難度大等問題,本文研究區塊鏈技術在供應鏈交易系統中的應用,通過部署交易智能合約,構建基于區塊鏈技術的供應鏈交易平臺,實現更有效的信息共享及上下游協同。
區塊鏈的概念由中本聰于2008 年提出,是一種以鏈式結構為基礎的分布式賬本。在賬本中,數據區塊按照時間順序依次連接,并以密碼學[14-15]方式保證賬本數據的不可篡改性和不可偽造性。目前,已有許多區塊鏈平臺投入使用,雖然不同區塊鏈平臺的具體實現方式不同,但區塊鏈平臺整體上可劃分為數據層、網絡層、共識層、合約層和應用層5 個層次[16],如圖1 所示。數據層的主要功能是記錄和存儲鏈上信息,并通過默克爾樹、非對稱加密算法、哈希函數、時間戳等技術保證數據的不可篡改性和可追溯性;網絡層的主要功能是通過點對點網絡進行節點間數據的傳遞和驗證;共識層主要通過共識算法實現分布式節點間的穩定共識,保證數據的一致性和真實性;合約層主要是為智能合約提供開發環境,包括區塊鏈平臺的沙盒環境及相應的編程語言;應用層主要用于區塊鏈技術在各類應用場景中的實現,根據應用場景的不同,將區塊鏈技術的發展分為可編程貨幣、可編程金融和可編程社會3 個階段[17]。

圖1 區塊鏈平臺架構Fig.1 Architecture of blockchain platform
智能合約是指一種具有自我執行與驗證功能的計算機協議。智能合約的概念由尼克·薩博[7]于1995年提出,主要思想是將合約條款轉化為計算機協議,在去可信第三方的環境中使該協議作為合約各方的信任代理,高效安全地履行合約,但受制于當時的計算機技術水平,智能合約未得到廣泛關注,而區塊鏈去中心化的構架為智能合約提供了一個良好的執行環境。智能合約存儲在區塊鏈平臺上,用戶在任意時刻都能調用智能合約,當用戶發出調用指令后合約會被加載到沙箱環境下執行[18]。合約根據外部數據和世界狀態信息自動判斷所處條件是否滿足合約觸發條件,并嚴格按照合約規則執行合約代碼,最終更新世界狀態。合約執行結果經驗證有效后,由礦工進行打包,存儲在新的數據區塊中,該區塊經共識算法認證后連接到區塊鏈尾部,得到新的有效區塊。在不同的區塊鏈平臺下,智能合約的運行機制會有一定的差異,但其運行原理基本相同,如圖2 所示。

圖2 智能合約運行機制Fig.2 Operation mechanism of smart contract
供應鏈是指產品生產和流通過程中所涉及的原材料供應商、產品制造商、產品經銷商、零售商以及最終消費者等成員通過前向物流、反向資金流以及信息流的交互相連接的整體性網絡結構系統[19]。在供應鏈中,各企業以生產者和消費者兩種不同的角色參與供應鏈的不同階段,推動產品在原材料供應商、產品制造商、產品經銷商、零售商、個人消費者及監管機構之間的流通。如圖3 所示,供應鏈包含了產品生產、加工、運輸、銷售等多個環節,整合了信息流、物流和資金流,形成由各級企業構成的鏈式網絡結構,強調企業之間的信息共享、風險共擔和交流合作,從而實現供應鏈整體利益的最大化。

圖3 供應鏈整體結構Fig.3 Overall structure of supply chain
在傳統供應鏈系統中,各企業內部通過物聯網系統進行產品信息的采集,但不同企業之間的物聯網系統通常是相互獨立的,因此雖然各企業處于同一供應鏈中,但企業之間進行實時交互、全流程信息共享的難度仍較大。隨著供應鏈涉及企業的增加,核心企業對供應鏈整體的掌握程度越來越小,從而導致核心企業無法及時調整供應鏈運作狀態,降低了企業之間的協作效率,并阻礙了供應鏈整體的發展。綜上所述,傳統供應鏈主要存在數據孤島、企業間協作效率低及產品質量溯源難的問題。
供應鏈交易系統主要有產品交易和交易信息共享兩部分,其主體是基于區塊鏈技術的交易鏈。供應鏈企業通過交易鏈及部署在其上的交易智能合約進行產品交易和信息共享。如圖4 所示,基于區塊鏈技術的供應鏈交易系統具有以下功能:1)構建供應鏈信任體系,供應鏈核心企業可在交易系統中發布特定的數字貨幣并通過數字貨幣進行交易,該數字貨幣是供應鏈企業間可信的交易憑證,也可作為供應鏈中小企業進行貸款、融資等服務的信用憑證;2)實現透明可信的交易過程,供應鏈企業通過智能合約進行交易,由智能合約對交易合法性進行驗證,同時將交易內容、交易完成情況等信息記錄于交易鏈,保證交易過程安全可靠,交易信息透明可追溯。

圖4 交易系統總體架構Fig.4 Overall architecture of transaction system
基于區塊鏈技術的交易鏈是供應鏈交易系統的功能基礎。交易鏈采用聯盟鏈模式,不同節點被賦予不同的權限,個體用戶等消費者可直接接入到交易系統中,供應鏈企業需要核心企業授權才能接入交易系統。在交易鏈中部署交易智能合約時,通過對交易智能合約中交易信息的驗證、交易資金的管理及交易結果的判定,管理并記錄交易過程中的信息。另外,交易鏈中也可加入銀行等金融機構,結合智能合約為中小企業提供貸款、融資等服務。
在供應鏈中消費者通過調用交易智能合約進行交易,交易智能合約工作流程如圖5 所示。消費者將交易內容、合同及資金發送到交易智能合約賬戶,交易智能合約對交易內容、合同及資金進行驗證,驗證通過后將交易信息發送給對應生產者。生產者校對合同內容,當接收交易請求后,可根據交易內容進行生產或直接由倉庫向消費者發貨,并將產品物流信息發送到交易智能合約,由交易智能合約將信息轉發給消費者。消費者在收到產品后,向交易智能合約發送確認信息,交易智能合約驗證信息后,將交易資金支付給生產者。交易過程中的所有交互信息均由交易智能合約暫存,當交易完成后由交易智能合約形成區塊并將其添加到交易鏈中。

圖5 交易智能合約工作流程Fig.5 Workflow of transaction smart contract
由于基于區塊鏈技術的供應鏈交易系統以分布式方式構建,各企業之間的交互行為較為頻繁、復雜,因此對于供應鏈交易系統需要制定交互規則來保證交易過程中交互信息的有效處理。在交易系統的交互過程中主要有各級消費者、生產者和交易智能合約3 個角色參與交互過程。消費者通過向智能合約發送相關信息及相應資金來發起交易,智能合約收到交易請求后,將交易信息發送給對應生產者,并對交易過程進行監控,當交易完成后其將資金轉到生產者賬戶,此時交易完成,交易信息上鏈存儲??梢?,信息交互主要分為消費者將交易信息發送到智能合約,以及智能合約確認后將信息發送到指定生產者兩個階段。
對于消費者與智能合約之間的信息交互,當發起交易時消費者將資金發送給智能合約賬戶的同時,還需將交易的產品信息、資金、協議等信息發送到智能合約賬戶,具體交互信息內容為[t,C →P,tabC(w,v,a,dl)],其中:t 表示該交易的索引信息;C →P 表示該交易由消費者C 發起,由生產者P 執行;tabC(w,v,a,dl)表示此次交易的具體信息,w表示消費者的目標產品,v 表示此次交易的資金,a 表示此次交易的相關協議,dl 表示消費者給定的交易完成期限。
智能合約收到交易請求后,首先對信息的內容進行確認。若該交易請求不符合交易規則,則將交易請求退回。若該交易請求符合規則,則將交易信息發送到對應的生產者并與生產者進行交互。此時,智能合約只將交易信息發送給生產者,交易資金由智能合約暫存,交易完成后再根據交易完成情況將資金轉到生產者賬戶。智能合約與生產者之間的具體交互內容為[s,T →P,infT(tabC,st)],其中:s 表示該交易的索引信息;T →P 表示交易信息由智能合約向生產者發送;infT(tabC,st)表示智能合約向生產者發送的交易信息內容,tabC表示交易具體信息,其內容與消費者發送給智能合約的交易信息中的tabC內容相同,st 表示智能合約接收到消費者提交的交易請求時間。
生產者接收到交易信息后,對交易信息進行驗證。若該交易為正常交易,則接收交易請求,進行相關產品的生產。若該交易不符合交易規則,則拒絕此次交易,退回交易請求。生產者接收交易請求后,智能合約隨即跟進交易進程。消費者收到產品后,向智能合約發送產品接收信息;智能合約向生產者核實信息后,對交易完成情況進行判定,并向生產者支付產品資金。
若生產者按期交付產品,則智能合約將所有資金轉發到生產者賬戶,并將交易結果的信息發送給生產者,具體交互內容為[u,T →P,tabT(v,ct,N)],其中:u 表示該交易的索引信息;T →P 表示交易信息由智能合約向生產者發送;tabT(v,ct,N)表示智能合約向生產者發送信息的具體內容,v 表示此次交易資金,ct 表示交易完成時間,N 表示此次交易按時完成,為正常交易。
若生產者未能按時交付產品,則智能合約依據雙方合約將部分資金返還給消費者,將剩余資金發送到生產者賬戶,并將交易結果的信息發送給生產者,具體交互內容為[n,T →P,tabT(v',ct,od)],其中:n表示該交易的索引信息;v'表示原資金v 中扣除部分資金后的剩余部分;od 表示此次交易未能按時完成,為逾期交易。
當生產者收到資金及接收信息并核對后交易流程結束,交易智能合約將此次交易中的所有信息交互內容儲存至區塊,并將此區塊儲存至交易鏈,供后續查詢及驗證使用。
貨幣是交易的基礎,若要實現交易系統功能,則首先要建立合適的數字貨幣體系[20]。供應鏈系統中的數字貨幣由核心企業進行發行,該數字貨幣不僅是供應鏈系統中各企業之間交易的價值媒介,同時能夠作為企業之間以及企業與體系內的金融機構之間的信用憑證,是供應鏈系統信用體系的基礎。在基于區塊鏈技術的供應鏈交易系統中,核心企業能夠較方便地發行數字貨幣,并通過設定相關參數得到適用于供應鏈系統的數字貨幣。
交易智能合約是交易鏈的主體,根據各個參與者的公鑰地址及相應的交易協議完成交互過程中的信息驗證,交易完成后再根據交易結果向生產者發送資金。交易智能合約具有交易信息驗證與交易結果認定兩方面的功能。當消費者發起交易時,將交易請求發送至交易智能合約,交易智能合約對交易請求內容及消費者身份進行核對,信息確認后將交易信息發送到對應生產者賬戶中;生產者接收交易請求后,向交易智能合約發送確認信息,交易智能合約開始跟進交易情況。
算法1交易信息驗證算法


當生產者pro1 接收交易請求后,交易智能合約就開始跟進交易情況。當交易結束后,交易智能合約對交易完成情況進行判定并向生產者發送資金。判定過程主要是對交易完成情況進行確認:若交易按時完成,則交易智能合約將所有資金轉到生產者pro1 的賬戶中;若交易未能按時完成,則交易智能合約將按照協議規定,向生產者支付資金,其余資金將退還給消費者。
算法2交易結果認定算法

當完成交易結果認定并將資金轉移到生產者賬戶后,交易流程結束,交易智能合約將該交易過程中的所有交互信息上傳至交易鏈。對于不同的供應鏈系統,交易系統設計需要結合供應鏈實際情況進行改進。
當供應鏈交易系統構建完成后需要對供應鏈交易系統進行以下測試:1)交易系統基本功能測試,主要測試交易系統的交易及信息共享功能;2)交易系統性能分析,主要測試供應鏈交易系統的安全性及系統吞吐量,并與同類系統進行對比分析。系統測試環境配置為Windows 10 操作系統、Hadoop 架構、Core i5-9400 處理器、主頻為2.90 GHz、GTX1050Ti顯卡、8 GB 內存、1 TB 機械硬盤。
在進行測試前需完成交易智能合約的編譯和部署,合約編譯是指將智能合約代碼轉化為以太坊虛擬機能夠識別的虛擬機代碼。本文采用Solidity 編程語言[21],內核版本為0.4.22,編譯器為EthFiddle-Solidity。交易智能合約的編譯結果如圖6 所示。

圖6 交易智能合約的編譯結果Fig.6 Compilation results of transaction smart contract
在完成編譯后即可部署交易智能合約,當交易智能合約部署完成后,用戶通過調用交易智能合約來發起交易,部署結果如圖7 所示。交易發起者可通過調用交易智能合約中的函數向目標賬戶發送交易請求。在本次測試中,所用賬戶均為EthFiddle 預存賬戶,其中主賬戶為交易發起賬戶,其余賬戶均為供應鏈企業賬戶。

圖7 交易智能合約的部署結果Fig.7 Deployment results of transaction smart contract
供應鏈交易系統的功能主要包括交易合法性驗證、交易結果認定、交易資金轉移以及交易信息共享。交易合法性驗證一般根據核心企業提供的權限表進行驗證,在部署智能合約時核心企業會根據不同企業的實際情況分配不同的交易權限并制作成表格,將其數字化后儲存到交易智能合約中。另外,當后期有新的企業加入時需要擴充權限表的內容。交易結果主要根據交易實際完成時間與交易預期完成時間之間的關系來認定。為排除交易雙方偽造信息的情況,保證交易結果判定的真實有效,交易的最終完成時間根據產品物流信息確定。交易智能合約在完成判斷后,將交易結果信息發送給消費者進行確認,確認無誤后交易認定完成。資金轉移是區塊鏈平臺的基礎功能,交易系統中交易資金轉移成功與否主要由交易完成情況決定,因此對交易系統中的資金轉移功能不再贅述。交易信息共享功能依據信息使用者所具有的權限,為其提供所需的供應鏈歷史交易記錄及其與該交易的相關信息。當供應鏈成員提交交易請求后,交易流程的具體細節由交易智能合約進行控制。圖8 為供應鏈企業在交易系統中完成交易后,查詢該交易記錄所得的產品交易信息,由此可知本文交易系統能夠實現交易及信息共享功能,達到了供應鏈交易系統的基本要求。

圖8 產品交易信息Fig.8 Product transaction information
4.2.1 交易智能合約漏洞檢測
在區塊鏈系統中完成部署后的智能合約將無法修改,如果將存在安全漏洞的智能合約部署到區塊鏈系統中,則會使整個系統面臨巨大風險,因此本文首先對交易智能合約進行漏洞檢測[22]。本文采用螞蟻區塊鏈BaaS 平臺中集成的智能合約安全檢測平臺進行智能合約檢測。該智能合約安全檢測平臺提供智能合約中常見的可重入攻擊、時間戳依賴、交易順序依賴及溢出漏洞等安全漏洞的檢測。當智能合約編譯完成后,在該平臺上創建相應檢測任務即可對智能合約進行漏洞檢測。圖9 為交易智能合約的漏洞檢測結果,檢測結果顯示交易智能合約中存在1 個未授權訪問漏洞,出現該漏洞主要是由于智能合約中缺少了身份認證過程,使得用戶在觸發狀態改變操作時能夠修改與此次操作不相關的狀態變量,從而引發漏洞,因此在后續改進中將加強用戶操作權限的校驗。

圖9 交易智能合約的漏洞檢測結果Fig.9 Vulnerability detection results of transaction smart contract
4.2.2 交易系統容錯性測試
將供應鏈交易系統容錯性定義為:在具有一定數量接入節點的系統中,當系統遭到惡意節點攻擊時仍能保持穩定運行的能力,因此將一定數量的惡意節點成功破壞系統正常運行的概率作為評價系統容錯性能的指標,考慮到實驗效果及設備性能,將供應鏈系統的節點數量設為50,惡意節點的數量由0逐漸增加至30,在不同數量的惡意節點下進行多次實驗得出不同狀態下惡意節點的攻擊成功率。在實驗中將惡意節點的攻擊方法設定為偽造區塊,當正常節點開始記錄偽造區塊時,認為惡意節點攻擊成功。實驗結果如圖10 所示。

圖10 不同惡意節點數量下的交易系統攻擊成功率對比Fig.10 Comparison of attack success rate of transaction system under different number of malicious nodes
由實驗結果可知,惡意節點的攻擊成功率隨著惡意節點數量的減少而降低。當惡意節點數量小于總數的32%時,惡意節點攻擊成功的概率為0。在供應鏈系統中,核心企業會對申請加入供應鏈的企業進行資質審核,因此在通常情況下出現惡意節點數量超過節點總數1/3 的可能性較低。由此可見,在當前條件下該系統具有較高的容錯性能,但考慮到系統外部的惡意攻擊等情況,系統容錯性能還有待進一步提升。
4.2.3 交易系統吞吐量分析
交易系統吞吐量是指在單位時間內交易系統能夠處理的交易量。將每秒事務處理量(Transaction Per Second,TPS)作為系統吞吐量的評價指標。交易系統承擔供應鏈的交易功能并對系統實時性具有一定的要求,本文通過實驗分析供應鏈交易系統的吞吐量,為后期系統升級與部署提供良好基礎。實驗中將交易系統節點數量作為變量,節點數量從0增加到70,在不同的節點數量下進行重復實驗,最終將不同節點數量下TPS 的平均值作為各個狀態下系統吞吐量的衡量值。實驗結果如圖11 所示。

圖11 不同節點數量下的交易系統吞吐量對比Fig.11 Comparison of throughput of transaction system under different number of nodes
由實驗結果可知:節點數量為5~45 時,交易系統吞吐量隨著節點數量的增加而上升且上升趨勢基本不變;當節點數大于45 時,系統吞吐量出現下降,并最終保持在36 transaction/s 左右。可見,本文系統即使在運行環境穩定且交互內容較簡單的實驗環境中系統吞吐量仍然較小,這與供應鏈龐大的數據交易量需求還存在一定差距,因此在后續研究中將根據供應鏈的實際需求,結合多鏈和分層等技術優化系統架構,同時利用聯盟鏈和供應鏈系統的優勢對共識算法進行改進,提高共識效率并增加系統吞吐量。
4.3.1 交易系統功能對比
在系統測試完成后,將本文交易系統與文獻[9,23-25]交易系統進行功能對比,文獻[9]交易系統主要應用于藥品信息管理場景,文獻[23]交易系統主要應用于隱私保護和數據共享場景,文獻[24]交易系統主要應用于建筑行業的信息管理場景,文獻[25]交易系統主要應用于肉制品供應鏈信息追溯場景,對比結果如表1 所示,其中,“√”表示交易系統具備該功能,“×”表示交易系統不具備該功能。經對比發現,文獻[9]交易系統不具備第三方用戶接入功能,文獻[23]交易系統不具備信息追溯和數據搜索功能,文獻[24]交易系統不具備數據搜索功能,文獻[25]交易系統不是基于區塊鏈構造的交易系統。由此得出,本文交易系統在整體上具有一定優勢,但與同類交易系統相比,其在部分功能的細節方面還不夠完善,如搜索功能不支持關鍵詞搜索、訪問控制機制較簡單等,在后續研究中將進一步完善系統功能。

表1 交易系統功能對比Table 1 Comparison of functions of transaction systems
4.3.2 交易系統吞吐量對比
吞吐量是評價交易系統和區塊鏈系統的重要指標,因此將本文交易系統與文獻[9,23,26]交易系統進行吞吐量對比。實驗中將交易系統節點數量作為變量,節點數量由0遞增至60,在不同節點數量下進行重復實驗,實驗結果取不同狀態下TPS的平均值,如圖12所示。

圖12 交易系統吞吐量對比Fig.12 Comparison of throughput of transaction systems
由實驗結果可知:在交易系統節點數量小于20時,各個交易系統的吞吐量均呈上升趨勢,隨后文獻[26]交易系統趨于平穩,最終保持在10 transaction/s 左右,其他3 種交易系統的吞吐量則繼續上升,當節點數量小于40 時,本文交易系統在吞吐性能上具有一定優勢;在交易系統節點數超過40 后,本文交易系統吞吐量略有下降,最終保持在36 transaction/s左右,而文獻[9,23]交易系統的吞吐量繼續上升,在節點數量到達60 時仍未出現下降趨勢??梢?,在交易系統節點數量較少時,本文交易系統在吞吐性能上具有一定優勢,但系統吞吐量峰值較小,與供應鏈系統實際應用需求有一定差距,系統吞吐性能的提升空間較大。
區塊鏈技術的快速發展以及社會各界對區塊鏈技術的高度關注,使其被廣泛應用于各行各業。本文設計一種基于區塊鏈技術的供應鏈交易系統,利用區塊鏈技術解決傳統供應鏈系統中存在的信息不透明和交互困難等問題,實現更有效的信息共享和上下游協同。該供應鏈交易系統的主體為基于區塊鏈技術的交易鏈,其通過交易智能合約完成對供應鏈交易信息、交易資金及交易結果的有效管理。實驗結果表明,該系統已能夠實現基本的交易功能及信息共享功能,但在系統吞吐量及復雜環境下的系統安全性等方面還需在后續研究中做進一步優化。