方燚飚,周創(chuàng)明,雷曉莉,宋亞飛,高 娜
(1.空軍工程大學(xué) 研究生院,西安 710038;2.空軍工程大學(xué) 防空反導(dǎo)學(xué)院,西安 710038)
供應(yīng)鏈的概念[1]由擴(kuò)大的生產(chǎn)概念發(fā)展而來,圍繞核心企業(yè)并通過對企業(yè)信息流、物流和資金流進(jìn)行控制,形成一個整體的功能網(wǎng)鏈結(jié)構(gòu)。隨著經(jīng)濟(jì)全球化趨勢的加速發(fā)展,企業(yè)間的競爭由單純企業(yè)個體實(shí)力的較量向企業(yè)供應(yīng)鏈間的競爭轉(zhuǎn)變。供應(yīng)鏈將原本有合作關(guān)系的企業(yè)進(jìn)行串聯(lián)形成復(fù)合網(wǎng)絡(luò),加強(qiáng)了企業(yè)間的協(xié)同并提高合作效率,實(shí)現(xiàn)企業(yè)利益的最大化[2]。由于企業(yè)間的各類交互越來越頻繁且復(fù)雜,傳統(tǒng)以核心企業(yè)為主導(dǎo)的供應(yīng)鏈模式已無法滿足企業(yè)發(fā)展的需求,同時信息共享及產(chǎn)品質(zhì)量溯源難度大等問題也愈發(fā)突出。區(qū)塊鏈技術(shù)的出現(xiàn)為供應(yīng)鏈質(zhì)量管理帶來了新的思路[3]。區(qū)塊鏈技術(shù)是比特幣的底層技術(shù),其有效解決了傳統(tǒng)數(shù)字貨幣體系中的雙花問題和拜占庭將軍問題[4-5]。隨著比特幣等數(shù)字貨幣的普及,區(qū)塊鏈技術(shù)所具有的優(yōu)勢開始引起社會各界的廣泛關(guān)注,其分布式存儲、不可篡改的特性[6]能夠在保證數(shù)據(jù)完整性和可信度的同時,實(shí)現(xiàn)最大程度的數(shù)據(jù)共享,并且區(qū)塊鏈技術(shù)的應(yīng)用也逐漸由金融領(lǐng)域向物聯(lián)網(wǎng)等非金融領(lǐng)域延伸[7]。
目前,國內(nèi)外研究人員對區(qū)塊鏈技術(shù)的應(yīng)用進(jìn)行了大量研究并取得了重要成果。2016 年,Linux 基金會發(fā)起了Hyperledger 開源區(qū)塊鏈項目,其中的Hyperledger Fabric 項目[8]是針對企業(yè)級的區(qū)塊鏈應(yīng)用,旨在發(fā)展跨行業(yè)的商業(yè)區(qū)塊鏈平臺。文獻(xiàn)[9]設(shè)計基于區(qū)塊鏈的智能藥品供應(yīng)鏈管理系統(tǒng),通過分布式系統(tǒng)記錄藥品全周期信息,確?;颊叩挠盟幇踩N墨I(xiàn)[10]基于智能合約和訪問控制設(shè)計MeDShare系統(tǒng),該系統(tǒng)能夠提供鏈上醫(yī)療數(shù)據(jù)的溯源和審計服務(wù)。文獻(xiàn)[11]通過區(qū)塊鏈技術(shù)探討物聯(lián)網(wǎng)供應(yīng)鏈中的安全漏洞,并分析區(qū)塊鏈技術(shù)在物聯(lián)網(wǎng)供應(yīng)鏈中潛在的優(yōu)勢。文獻(xiàn)[12]設(shè)計基于區(qū)塊鏈的供應(yīng)鏈信息共享合約,解決了供應(yīng)鏈參與主體間的信任問題。文獻(xiàn)[13]分析區(qū)塊鏈技術(shù)對供應(yīng)鏈參與主體間信息共享程度的影響,結(jié)果表明通過區(qū)塊鏈技術(shù)能夠降低供應(yīng)鏈成員間的交易成本,提高信息共享效率。針對傳統(tǒng)供應(yīng)鏈系統(tǒng)中存在的信任傳遞困難、交易信息不透明、信息共享難度大等問題,本文研究區(qū)塊鏈技術(shù)在供應(yīng)鏈交易系統(tǒng)中的應(yīng)用,通過部署交易智能合約,構(gòu)建基于區(qū)塊鏈技術(shù)的供應(yīng)鏈交易平臺,實(shí)現(xiàn)更有效的信息共享及上下游協(xié)同。
區(qū)塊鏈的概念由中本聰于2008 年提出,是一種以鏈?zhǔn)浇Y(jié)構(gòu)為基礎(chǔ)的分布式賬本。在賬本中,數(shù)據(jù)區(qū)塊按照時間順序依次連接,并以密碼學(xué)[14-15]方式保證賬本數(shù)據(jù)的不可篡改性和不可偽造性。目前,已有許多區(qū)塊鏈平臺投入使用,雖然不同區(qū)塊鏈平臺的具體實(shí)現(xiàn)方式不同,但區(qū)塊鏈平臺整體上可劃分為數(shù)據(jù)層、網(wǎng)絡(luò)層、共識層、合約層和應(yīng)用層5 個層次[16],如圖1 所示。數(shù)據(jù)層的主要功能是記錄和存儲鏈上信息,并通過默克爾樹、非對稱加密算法、哈希函數(shù)、時間戳等技術(shù)保證數(shù)據(jù)的不可篡改性和可追溯性;網(wǎng)絡(luò)層的主要功能是通過點(diǎn)對點(diǎn)網(wǎng)絡(luò)進(jìn)行節(jié)點(diǎn)間數(shù)據(jù)的傳遞和驗(yàn)證;共識層主要通過共識算法實(shí)現(xiàn)分布式節(jié)點(diǎn)間的穩(wěn)定共識,保證數(shù)據(jù)的一致性和真實(shí)性;合約層主要是為智能合約提供開發(fā)環(huán)境,包括區(qū)塊鏈平臺的沙盒環(huán)境及相應(yīng)的編程語言;應(yīng)用層主要用于區(qū)塊鏈技術(shù)在各類應(yīng)用場景中的實(shí)現(xiàn),根據(jù)應(yīng)用場景的不同,將區(qū)塊鏈技術(shù)的發(fā)展分為可編程貨幣、可編程金融和可編程社會3 個階段[17]。
圖1 區(qū)塊鏈平臺架構(gòu)Fig.1 Architecture of blockchain platform
智能合約是指一種具有自我執(zhí)行與驗(yàn)證功能的計算機(jī)協(xié)議。智能合約的概念由尼克·薩博[7]于1995年提出,主要思想是將合約條款轉(zhuǎn)化為計算機(jī)協(xié)議,在去可信第三方的環(huán)境中使該協(xié)議作為合約各方的信任代理,高效安全地履行合約,但受制于當(dāng)時的計算機(jī)技術(shù)水平,智能合約未得到廣泛關(guān)注,而區(qū)塊鏈去中心化的構(gòu)架為智能合約提供了一個良好的執(zhí)行環(huán)境。智能合約存儲在區(qū)塊鏈平臺上,用戶在任意時刻都能調(diào)用智能合約,當(dāng)用戶發(fā)出調(diào)用指令后合約會被加載到沙箱環(huán)境下執(zhí)行[18]。合約根據(jù)外部數(shù)據(jù)和世界狀態(tài)信息自動判斷所處條件是否滿足合約觸發(fā)條件,并嚴(yán)格按照合約規(guī)則執(zhí)行合約代碼,最終更新世界狀態(tài)。合約執(zhí)行結(jié)果經(jīng)驗(yàn)證有效后,由礦工進(jìn)行打包,存儲在新的數(shù)據(jù)區(qū)塊中,該區(qū)塊經(jīng)共識算法認(rèn)證后連接到區(qū)塊鏈尾部,得到新的有效區(qū)塊。在不同的區(qū)塊鏈平臺下,智能合約的運(yùn)行機(jī)制會有一定的差異,但其運(yùn)行原理基本相同,如圖2 所示。
圖2 智能合約運(yùn)行機(jī)制Fig.2 Operation mechanism of smart contract
供應(yīng)鏈?zhǔn)侵府a(chǎn)品生產(chǎn)和流通過程中所涉及的原材料供應(yīng)商、產(chǎn)品制造商、產(chǎn)品經(jīng)銷商、零售商以及最終消費(fèi)者等成員通過前向物流、反向資金流以及信息流的交互相連接的整體性網(wǎng)絡(luò)結(jié)構(gòu)系統(tǒng)[19]。在供應(yīng)鏈中,各企業(yè)以生產(chǎn)者和消費(fèi)者兩種不同的角色參與供應(yīng)鏈的不同階段,推動產(chǎn)品在原材料供應(yīng)商、產(chǎn)品制造商、產(chǎn)品經(jīng)銷商、零售商、個人消費(fèi)者及監(jiān)管機(jī)構(gòu)之間的流通。如圖3 所示,供應(yīng)鏈包含了產(chǎn)品生產(chǎn)、加工、運(yùn)輸、銷售等多個環(huán)節(jié),整合了信息流、物流和資金流,形成由各級企業(yè)構(gòu)成的鏈?zhǔn)骄W(wǎng)絡(luò)結(jié)構(gòu),強(qiáng)調(diào)企業(yè)之間的信息共享、風(fēng)險共擔(dān)和交流合作,從而實(shí)現(xiàn)供應(yīng)鏈整體利益的最大化。
圖3 供應(yīng)鏈整體結(jié)構(gòu)Fig.3 Overall structure of supply chain
在傳統(tǒng)供應(yīng)鏈系統(tǒng)中,各企業(yè)內(nèi)部通過物聯(lián)網(wǎng)系統(tǒng)進(jìn)行產(chǎn)品信息的采集,但不同企業(yè)之間的物聯(lián)網(wǎng)系統(tǒng)通常是相互獨(dú)立的,因此雖然各企業(yè)處于同一供應(yīng)鏈中,但企業(yè)之間進(jìn)行實(shí)時交互、全流程信息共享的難度仍較大。隨著供應(yīng)鏈涉及企業(yè)的增加,核心企業(yè)對供應(yīng)鏈整體的掌握程度越來越小,從而導(dǎo)致核心企業(yè)無法及時調(diào)整供應(yīng)鏈運(yùn)作狀態(tài),降低了企業(yè)之間的協(xié)作效率,并阻礙了供應(yīng)鏈整體的發(fā)展。綜上所述,傳統(tǒng)供應(yīng)鏈主要存在數(shù)據(jù)孤島、企業(yè)間協(xié)作效率低及產(chǎn)品質(zhì)量溯源難的問題。
供應(yīng)鏈交易系統(tǒng)主要有產(chǎn)品交易和交易信息共享兩部分,其主體是基于區(qū)塊鏈技術(shù)的交易鏈。供應(yīng)鏈企業(yè)通過交易鏈及部署在其上的交易智能合約進(jìn)行產(chǎn)品交易和信息共享。如圖4 所示,基于區(qū)塊鏈技術(shù)的供應(yīng)鏈交易系統(tǒng)具有以下功能:1)構(gòu)建供應(yīng)鏈信任體系,供應(yīng)鏈核心企業(yè)可在交易系統(tǒng)中發(fā)布特定的數(shù)字貨幣并通過數(shù)字貨幣進(jìn)行交易,該數(shù)字貨幣是供應(yīng)鏈企業(yè)間可信的交易憑證,也可作為供應(yīng)鏈中小企業(yè)進(jìn)行貸款、融資等服務(wù)的信用憑證;2)實(shí)現(xiàn)透明可信的交易過程,供應(yīng)鏈企業(yè)通過智能合約進(jìn)行交易,由智能合約對交易合法性進(jìn)行驗(yàn)證,同時將交易內(nèi)容、交易完成情況等信息記錄于交易鏈,保證交易過程安全可靠,交易信息透明可追溯。
圖4 交易系統(tǒng)總體架構(gòu)Fig.4 Overall architecture of transaction system
基于區(qū)塊鏈技術(shù)的交易鏈?zhǔn)枪?yīng)鏈交易系統(tǒng)的功能基礎(chǔ)。交易鏈采用聯(lián)盟鏈模式,不同節(jié)點(diǎn)被賦予不同的權(quán)限,個體用戶等消費(fèi)者可直接接入到交易系統(tǒng)中,供應(yīng)鏈企業(yè)需要核心企業(yè)授權(quán)才能接入交易系統(tǒng)。在交易鏈中部署交易智能合約時,通過對交易智能合約中交易信息的驗(yàn)證、交易資金的管理及交易結(jié)果的判定,管理并記錄交易過程中的信息。另外,交易鏈中也可加入銀行等金融機(jī)構(gòu),結(jié)合智能合約為中小企業(yè)提供貸款、融資等服務(wù)。
在供應(yīng)鏈中消費(fèi)者通過調(diào)用交易智能合約進(jìn)行交易,交易智能合約工作流程如圖5 所示。消費(fèi)者將交易內(nèi)容、合同及資金發(fā)送到交易智能合約賬戶,交易智能合約對交易內(nèi)容、合同及資金進(jìn)行驗(yàn)證,驗(yàn)證通過后將交易信息發(fā)送給對應(yīng)生產(chǎn)者。生產(chǎn)者校對合同內(nèi)容,當(dāng)接收交易請求后,可根據(jù)交易內(nèi)容進(jìn)行生產(chǎn)或直接由倉庫向消費(fèi)者發(fā)貨,并將產(chǎn)品物流信息發(fā)送到交易智能合約,由交易智能合約將信息轉(zhuǎn)發(fā)給消費(fèi)者。消費(fèi)者在收到產(chǎn)品后,向交易智能合約發(fā)送確認(rèn)信息,交易智能合約驗(yàn)證信息后,將交易資金支付給生產(chǎn)者。交易過程中的所有交互信息均由交易智能合約暫存,當(dāng)交易完成后由交易智能合約形成區(qū)塊并將其添加到交易鏈中。
圖5 交易智能合約工作流程Fig.5 Workflow of transaction smart contract
由于基于區(qū)塊鏈技術(shù)的供應(yīng)鏈交易系統(tǒng)以分布式方式構(gòu)建,各企業(yè)之間的交互行為較為頻繁、復(fù)雜,因此對于供應(yīng)鏈交易系統(tǒng)需要制定交互規(guī)則來保證交易過程中交互信息的有效處理。在交易系統(tǒng)的交互過程中主要有各級消費(fèi)者、生產(chǎn)者和交易智能合約3 個角色參與交互過程。消費(fèi)者通過向智能合約發(fā)送相關(guān)信息及相應(yīng)資金來發(fā)起交易,智能合約收到交易請求后,將交易信息發(fā)送給對應(yīng)生產(chǎn)者,并對交易過程進(jìn)行監(jiān)控,當(dāng)交易完成后其將資金轉(zhuǎn)到生產(chǎn)者賬戶,此時交易完成,交易信息上鏈存儲??梢?,信息交互主要分為消費(fèi)者將交易信息發(fā)送到智能合約,以及智能合約確認(rèn)后將信息發(fā)送到指定生產(chǎn)者兩個階段。
對于消費(fèi)者與智能合約之間的信息交互,當(dāng)發(fā)起交易時消費(fèi)者將資金發(fā)送給智能合約賬戶的同時,還需將交易的產(chǎn)品信息、資金、協(xié)議等信息發(fā)送到智能合約賬戶,具體交互信息內(nèi)容為[t,C →P,tabC(w,v,a,dl)],其中:t 表示該交易的索引信息;C →P 表示該交易由消費(fèi)者C 發(fā)起,由生產(chǎn)者P 執(zhí)行;tabC(w,v,a,dl)表示此次交易的具體信息,w表示消費(fèi)者的目標(biāo)產(chǎn)品,v 表示此次交易的資金,a 表示此次交易的相關(guān)協(xié)議,dl 表示消費(fèi)者給定的交易完成期限。
智能合約收到交易請求后,首先對信息的內(nèi)容進(jìn)行確認(rèn)。若該交易請求不符合交易規(guī)則,則將交易請求退回。若該交易請求符合規(guī)則,則將交易信息發(fā)送到對應(yīng)的生產(chǎn)者并與生產(chǎn)者進(jìn)行交互。此時,智能合約只將交易信息發(fā)送給生產(chǎn)者,交易資金由智能合約暫存,交易完成后再根據(jù)交易完成情況將資金轉(zhuǎn)到生產(chǎn)者賬戶。智能合約與生產(chǎn)者之間的具體交互內(nèi)容為[s,T →P,infT(tabC,st)],其中:s 表示該交易的索引信息;T →P 表示交易信息由智能合約向生產(chǎn)者發(fā)送;infT(tabC,st)表示智能合約向生產(chǎn)者發(fā)送的交易信息內(nèi)容,tabC表示交易具體信息,其內(nèi)容與消費(fèi)者發(fā)送給智能合約的交易信息中的tabC內(nèi)容相同,st 表示智能合約接收到消費(fèi)者提交的交易請求時間。
生產(chǎn)者接收到交易信息后,對交易信息進(jìn)行驗(yàn)證。若該交易為正常交易,則接收交易請求,進(jìn)行相關(guān)產(chǎn)品的生產(chǎn)。若該交易不符合交易規(guī)則,則拒絕此次交易,退回交易請求。生產(chǎn)者接收交易請求后,智能合約隨即跟進(jìn)交易進(jìn)程。消費(fèi)者收到產(chǎn)品后,向智能合約發(fā)送產(chǎn)品接收信息;智能合約向生產(chǎn)者核實(shí)信息后,對交易完成情況進(jìn)行判定,并向生產(chǎn)者支付產(chǎn)品資金。
若生產(chǎn)者按期交付產(chǎn)品,則智能合約將所有資金轉(zhuǎn)發(fā)到生產(chǎn)者賬戶,并將交易結(jié)果的信息發(fā)送給生產(chǎn)者,具體交互內(nèi)容為[u,T →P,tabT(v,ct,N)],其中:u 表示該交易的索引信息;T →P 表示交易信息由智能合約向生產(chǎn)者發(fā)送;tabT(v,ct,N)表示智能合約向生產(chǎn)者發(fā)送信息的具體內(nèi)容,v 表示此次交易資金,ct 表示交易完成時間,N 表示此次交易按時完成,為正常交易。
若生產(chǎn)者未能按時交付產(chǎn)品,則智能合約依據(jù)雙方合約將部分資金返還給消費(fèi)者,將剩余資金發(fā)送到生產(chǎn)者賬戶,并將交易結(jié)果的信息發(fā)送給生產(chǎn)者,具體交互內(nèi)容為[n,T →P,tabT(v',ct,od)],其中:n表示該交易的索引信息;v'表示原資金v 中扣除部分資金后的剩余部分;od 表示此次交易未能按時完成,為逾期交易。
當(dāng)生產(chǎn)者收到資金及接收信息并核對后交易流程結(jié)束,交易智能合約將此次交易中的所有信息交互內(nèi)容儲存至區(qū)塊,并將此區(qū)塊儲存至交易鏈,供后續(xù)查詢及驗(yàn)證使用。
貨幣是交易的基礎(chǔ),若要實(shí)現(xiàn)交易系統(tǒng)功能,則首先要建立合適的數(shù)字貨幣體系[20]。供應(yīng)鏈系統(tǒng)中的數(shù)字貨幣由核心企業(yè)進(jìn)行發(fā)行,該數(shù)字貨幣不僅是供應(yīng)鏈系統(tǒng)中各企業(yè)之間交易的價值媒介,同時能夠作為企業(yè)之間以及企業(yè)與體系內(nèi)的金融機(jī)構(gòu)之間的信用憑證,是供應(yīng)鏈系統(tǒng)信用體系的基礎(chǔ)。在基于區(qū)塊鏈技術(shù)的供應(yīng)鏈交易系統(tǒng)中,核心企業(yè)能夠較方便地發(fā)行數(shù)字貨幣,并通過設(shè)定相關(guān)參數(shù)得到適用于供應(yīng)鏈系統(tǒng)的數(shù)字貨幣。
交易智能合約是交易鏈的主體,根據(jù)各個參與者的公鑰地址及相應(yīng)的交易協(xié)議完成交互過程中的信息驗(yàn)證,交易完成后再根據(jù)交易結(jié)果向生產(chǎn)者發(fā)送資金。交易智能合約具有交易信息驗(yàn)證與交易結(jié)果認(rèn)定兩方面的功能。當(dāng)消費(fèi)者發(fā)起交易時,將交易請求發(fā)送至交易智能合約,交易智能合約對交易請求內(nèi)容及消費(fèi)者身份進(jìn)行核對,信息確認(rèn)后將交易信息發(fā)送到對應(yīng)生產(chǎn)者賬戶中;生產(chǎn)者接收交易請求后,向交易智能合約發(fā)送確認(rèn)信息,交易智能合約開始跟進(jìn)交易情況。
算法1交易信息驗(yàn)證算法
當(dāng)生產(chǎn)者pro1 接收交易請求后,交易智能合約就開始跟進(jìn)交易情況。當(dāng)交易結(jié)束后,交易智能合約對交易完成情況進(jìn)行判定并向生產(chǎn)者發(fā)送資金。判定過程主要是對交易完成情況進(jìn)行確認(rèn):若交易按時完成,則交易智能合約將所有資金轉(zhuǎn)到生產(chǎn)者pro1 的賬戶中;若交易未能按時完成,則交易智能合約將按照協(xié)議規(guī)定,向生產(chǎn)者支付資金,其余資金將退還給消費(fèi)者。
算法2交易結(jié)果認(rèn)定算法
當(dāng)完成交易結(jié)果認(rèn)定并將資金轉(zhuǎn)移到生產(chǎn)者賬戶后,交易流程結(jié)束,交易智能合約將該交易過程中的所有交互信息上傳至交易鏈。對于不同的供應(yīng)鏈系統(tǒng),交易系統(tǒng)設(shè)計需要結(jié)合供應(yīng)鏈實(shí)際情況進(jìn)行改進(jìn)。
當(dāng)供應(yīng)鏈交易系統(tǒng)構(gòu)建完成后需要對供應(yīng)鏈交易系統(tǒng)進(jìn)行以下測試:1)交易系統(tǒng)基本功能測試,主要測試交易系統(tǒng)的交易及信息共享功能;2)交易系統(tǒng)性能分析,主要測試供應(yīng)鏈交易系統(tǒng)的安全性及系統(tǒng)吞吐量,并與同類系統(tǒng)進(jìn)行對比分析。系統(tǒng)測試環(huán)境配置為Windows 10 操作系統(tǒng)、Hadoop 架構(gòu)、Core i5-9400 處理器、主頻為2.90 GHz、GTX1050Ti顯卡、8 GB 內(nèi)存、1 TB 機(jī)械硬盤。
在進(jìn)行測試前需完成交易智能合約的編譯和部署,合約編譯是指將智能合約代碼轉(zhuǎn)化為以太坊虛擬機(jī)能夠識別的虛擬機(jī)代碼。本文采用Solidity 編程語言[21],內(nèi)核版本為0.4.22,編譯器為EthFiddle-Solidity。交易智能合約的編譯結(jié)果如圖6 所示。
圖6 交易智能合約的編譯結(jié)果Fig.6 Compilation results of transaction smart contract
在完成編譯后即可部署交易智能合約,當(dāng)交易智能合約部署完成后,用戶通過調(diào)用交易智能合約來發(fā)起交易,部署結(jié)果如圖7 所示。交易發(fā)起者可通過調(diào)用交易智能合約中的函數(shù)向目標(biāo)賬戶發(fā)送交易請求。在本次測試中,所用賬戶均為EthFiddle 預(yù)存賬戶,其中主賬戶為交易發(fā)起賬戶,其余賬戶均為供應(yīng)鏈企業(yè)賬戶。
圖7 交易智能合約的部署結(jié)果Fig.7 Deployment results of transaction smart contract
供應(yīng)鏈交易系統(tǒng)的功能主要包括交易合法性驗(yàn)證、交易結(jié)果認(rèn)定、交易資金轉(zhuǎn)移以及交易信息共享。交易合法性驗(yàn)證一般根據(jù)核心企業(yè)提供的權(quán)限表進(jìn)行驗(yàn)證,在部署智能合約時核心企業(yè)會根據(jù)不同企業(yè)的實(shí)際情況分配不同的交易權(quán)限并制作成表格,將其數(shù)字化后儲存到交易智能合約中。另外,當(dāng)后期有新的企業(yè)加入時需要擴(kuò)充權(quán)限表的內(nèi)容。交易結(jié)果主要根據(jù)交易實(shí)際完成時間與交易預(yù)期完成時間之間的關(guān)系來認(rèn)定。為排除交易雙方偽造信息的情況,保證交易結(jié)果判定的真實(shí)有效,交易的最終完成時間根據(jù)產(chǎn)品物流信息確定。交易智能合約在完成判斷后,將交易結(jié)果信息發(fā)送給消費(fèi)者進(jìn)行確認(rèn),確認(rèn)無誤后交易認(rèn)定完成。資金轉(zhuǎn)移是區(qū)塊鏈平臺的基礎(chǔ)功能,交易系統(tǒng)中交易資金轉(zhuǎn)移成功與否主要由交易完成情況決定,因此對交易系統(tǒng)中的資金轉(zhuǎn)移功能不再贅述。交易信息共享功能依據(jù)信息使用者所具有的權(quán)限,為其提供所需的供應(yīng)鏈歷史交易記錄及其與該交易的相關(guān)信息。當(dāng)供應(yīng)鏈成員提交交易請求后,交易流程的具體細(xì)節(jié)由交易智能合約進(jìn)行控制。圖8 為供應(yīng)鏈企業(yè)在交易系統(tǒng)中完成交易后,查詢該交易記錄所得的產(chǎn)品交易信息,由此可知本文交易系統(tǒng)能夠?qū)崿F(xiàn)交易及信息共享功能,達(dá)到了供應(yīng)鏈交易系統(tǒng)的基本要求。
圖8 產(chǎn)品交易信息Fig.8 Product transaction information
4.2.1 交易智能合約漏洞檢測
在區(qū)塊鏈系統(tǒng)中完成部署后的智能合約將無法修改,如果將存在安全漏洞的智能合約部署到區(qū)塊鏈系統(tǒng)中,則會使整個系統(tǒng)面臨巨大風(fēng)險,因此本文首先對交易智能合約進(jìn)行漏洞檢測[22]。本文采用螞蟻區(qū)塊鏈BaaS 平臺中集成的智能合約安全檢測平臺進(jìn)行智能合約檢測。該智能合約安全檢測平臺提供智能合約中常見的可重入攻擊、時間戳依賴、交易順序依賴及溢出漏洞等安全漏洞的檢測。當(dāng)智能合約編譯完成后,在該平臺上創(chuàng)建相應(yīng)檢測任務(wù)即可對智能合約進(jìn)行漏洞檢測。圖9 為交易智能合約的漏洞檢測結(jié)果,檢測結(jié)果顯示交易智能合約中存在1 個未授權(quán)訪問漏洞,出現(xiàn)該漏洞主要是由于智能合約中缺少了身份認(rèn)證過程,使得用戶在觸發(fā)狀態(tài)改變操作時能夠修改與此次操作不相關(guān)的狀態(tài)變量,從而引發(fā)漏洞,因此在后續(xù)改進(jìn)中將加強(qiáng)用戶操作權(quán)限的校驗(yàn)。
圖9 交易智能合約的漏洞檢測結(jié)果Fig.9 Vulnerability detection results of transaction smart contract
4.2.2 交易系統(tǒng)容錯性測試
將供應(yīng)鏈交易系統(tǒng)容錯性定義為:在具有一定數(shù)量接入節(jié)點(diǎn)的系統(tǒng)中,當(dāng)系統(tǒng)遭到惡意節(jié)點(diǎn)攻擊時仍能保持穩(wěn)定運(yùn)行的能力,因此將一定數(shù)量的惡意節(jié)點(diǎn)成功破壞系統(tǒng)正常運(yùn)行的概率作為評價系統(tǒng)容錯性能的指標(biāo),考慮到實(shí)驗(yàn)效果及設(shè)備性能,將供應(yīng)鏈系統(tǒng)的節(jié)點(diǎn)數(shù)量設(shè)為50,惡意節(jié)點(diǎn)的數(shù)量由0逐漸增加至30,在不同數(shù)量的惡意節(jié)點(diǎn)下進(jìn)行多次實(shí)驗(yàn)得出不同狀態(tài)下惡意節(jié)點(diǎn)的攻擊成功率。在實(shí)驗(yàn)中將惡意節(jié)點(diǎn)的攻擊方法設(shè)定為偽造區(qū)塊,當(dāng)正常節(jié)點(diǎn)開始記錄偽造區(qū)塊時,認(rèn)為惡意節(jié)點(diǎn)攻擊成功。實(shí)驗(yàn)結(jié)果如圖10 所示。
圖10 不同惡意節(jié)點(diǎn)數(shù)量下的交易系統(tǒng)攻擊成功率對比Fig.10 Comparison of attack success rate of transaction system under different number of malicious nodes
由實(shí)驗(yàn)結(jié)果可知,惡意節(jié)點(diǎn)的攻擊成功率隨著惡意節(jié)點(diǎn)數(shù)量的減少而降低。當(dāng)惡意節(jié)點(diǎn)數(shù)量小于總數(shù)的32%時,惡意節(jié)點(diǎn)攻擊成功的概率為0。在供應(yīng)鏈系統(tǒng)中,核心企業(yè)會對申請加入供應(yīng)鏈的企業(yè)進(jìn)行資質(zhì)審核,因此在通常情況下出現(xiàn)惡意節(jié)點(diǎn)數(shù)量超過節(jié)點(diǎn)總數(shù)1/3 的可能性較低。由此可見,在當(dāng)前條件下該系統(tǒng)具有較高的容錯性能,但考慮到系統(tǒng)外部的惡意攻擊等情況,系統(tǒng)容錯性能還有待進(jìn)一步提升。
4.2.3 交易系統(tǒng)吞吐量分析
交易系統(tǒng)吞吐量是指在單位時間內(nèi)交易系統(tǒng)能夠處理的交易量。將每秒事務(wù)處理量(Transaction Per Second,TPS)作為系統(tǒng)吞吐量的評價指標(biāo)。交易系統(tǒng)承擔(dān)供應(yīng)鏈的交易功能并對系統(tǒng)實(shí)時性具有一定的要求,本文通過實(shí)驗(yàn)分析供應(yīng)鏈交易系統(tǒng)的吞吐量,為后期系統(tǒng)升級與部署提供良好基礎(chǔ)。實(shí)驗(yàn)中將交易系統(tǒng)節(jié)點(diǎn)數(shù)量作為變量,節(jié)點(diǎn)數(shù)量從0增加到70,在不同的節(jié)點(diǎn)數(shù)量下進(jìn)行重復(fù)實(shí)驗(yàn),最終將不同節(jié)點(diǎn)數(shù)量下TPS 的平均值作為各個狀態(tài)下系統(tǒng)吞吐量的衡量值。實(shí)驗(yàn)結(jié)果如圖11 所示。
圖11 不同節(jié)點(diǎn)數(shù)量下的交易系統(tǒng)吞吐量對比Fig.11 Comparison of throughput of transaction system under different number of nodes
由實(shí)驗(yàn)結(jié)果可知:節(jié)點(diǎn)數(shù)量為5~45 時,交易系統(tǒng)吞吐量隨著節(jié)點(diǎn)數(shù)量的增加而上升且上升趨勢基本不變;當(dāng)節(jié)點(diǎn)數(shù)大于45 時,系統(tǒng)吞吐量出現(xiàn)下降,并最終保持在36 transaction/s 左右。可見,本文系統(tǒng)即使在運(yùn)行環(huán)境穩(wěn)定且交互內(nèi)容較簡單的實(shí)驗(yàn)環(huán)境中系統(tǒng)吞吐量仍然較小,這與供應(yīng)鏈龐大的數(shù)據(jù)交易量需求還存在一定差距,因此在后續(xù)研究中將根據(jù)供應(yīng)鏈的實(shí)際需求,結(jié)合多鏈和分層等技術(shù)優(yōu)化系統(tǒng)架構(gòu),同時利用聯(lián)盟鏈和供應(yīng)鏈系統(tǒng)的優(yōu)勢對共識算法進(jìn)行改進(jìn),提高共識效率并增加系統(tǒng)吞吐量。
4.3.1 交易系統(tǒng)功能對比
在系統(tǒng)測試完成后,將本文交易系統(tǒng)與文獻(xiàn)[9,23-25]交易系統(tǒng)進(jìn)行功能對比,文獻(xiàn)[9]交易系統(tǒng)主要應(yīng)用于藥品信息管理場景,文獻(xiàn)[23]交易系統(tǒng)主要應(yīng)用于隱私保護(hù)和數(shù)據(jù)共享場景,文獻(xiàn)[24]交易系統(tǒng)主要應(yīng)用于建筑行業(yè)的信息管理場景,文獻(xiàn)[25]交易系統(tǒng)主要應(yīng)用于肉制品供應(yīng)鏈信息追溯場景,對比結(jié)果如表1 所示,其中,“√”表示交易系統(tǒng)具備該功能,“×”表示交易系統(tǒng)不具備該功能。經(jīng)對比發(fā)現(xiàn),文獻(xiàn)[9]交易系統(tǒng)不具備第三方用戶接入功能,文獻(xiàn)[23]交易系統(tǒng)不具備信息追溯和數(shù)據(jù)搜索功能,文獻(xiàn)[24]交易系統(tǒng)不具備數(shù)據(jù)搜索功能,文獻(xiàn)[25]交易系統(tǒng)不是基于區(qū)塊鏈構(gòu)造的交易系統(tǒng)。由此得出,本文交易系統(tǒng)在整體上具有一定優(yōu)勢,但與同類交易系統(tǒng)相比,其在部分功能的細(xì)節(jié)方面還不夠完善,如搜索功能不支持關(guān)鍵詞搜索、訪問控制機(jī)制較簡單等,在后續(xù)研究中將進(jìn)一步完善系統(tǒng)功能。
表1 交易系統(tǒng)功能對比Table 1 Comparison of functions of transaction systems
4.3.2 交易系統(tǒng)吞吐量對比
吞吐量是評價交易系統(tǒng)和區(qū)塊鏈系統(tǒng)的重要指標(biāo),因此將本文交易系統(tǒng)與文獻(xiàn)[9,23,26]交易系統(tǒng)進(jìn)行吞吐量對比。實(shí)驗(yàn)中將交易系統(tǒng)節(jié)點(diǎn)數(shù)量作為變量,節(jié)點(diǎn)數(shù)量由0遞增至60,在不同節(jié)點(diǎn)數(shù)量下進(jìn)行重復(fù)實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果取不同狀態(tài)下TPS的平均值,如圖12所示。
圖12 交易系統(tǒng)吞吐量對比Fig.12 Comparison of throughput of transaction systems
由實(shí)驗(yàn)結(jié)果可知:在交易系統(tǒng)節(jié)點(diǎn)數(shù)量小于20時,各個交易系統(tǒng)的吞吐量均呈上升趨勢,隨后文獻(xiàn)[26]交易系統(tǒng)趨于平穩(wěn),最終保持在10 transaction/s 左右,其他3 種交易系統(tǒng)的吞吐量則繼續(xù)上升,當(dāng)節(jié)點(diǎn)數(shù)量小于40 時,本文交易系統(tǒng)在吞吐性能上具有一定優(yōu)勢;在交易系統(tǒng)節(jié)點(diǎn)數(shù)超過40 后,本文交易系統(tǒng)吞吐量略有下降,最終保持在36 transaction/s左右,而文獻(xiàn)[9,23]交易系統(tǒng)的吞吐量繼續(xù)上升,在節(jié)點(diǎn)數(shù)量到達(dá)60 時仍未出現(xiàn)下降趨勢??梢?,在交易系統(tǒng)節(jié)點(diǎn)數(shù)量較少時,本文交易系統(tǒng)在吞吐性能上具有一定優(yōu)勢,但系統(tǒng)吞吐量峰值較小,與供應(yīng)鏈系統(tǒng)實(shí)際應(yīng)用需求有一定差距,系統(tǒng)吞吐性能的提升空間較大。
區(qū)塊鏈技術(shù)的快速發(fā)展以及社會各界對區(qū)塊鏈技術(shù)的高度關(guān)注,使其被廣泛應(yīng)用于各行各業(yè)。本文設(shè)計一種基于區(qū)塊鏈技術(shù)的供應(yīng)鏈交易系統(tǒng),利用區(qū)塊鏈技術(shù)解決傳統(tǒng)供應(yīng)鏈系統(tǒng)中存在的信息不透明和交互困難等問題,實(shí)現(xiàn)更有效的信息共享和上下游協(xié)同。該供應(yīng)鏈交易系統(tǒng)的主體為基于區(qū)塊鏈技術(shù)的交易鏈,其通過交易智能合約完成對供應(yīng)鏈交易信息、交易資金及交易結(jié)果的有效管理。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)已能夠?qū)崿F(xiàn)基本的交易功能及信息共享功能,但在系統(tǒng)吞吐量及復(fù)雜環(huán)境下的系統(tǒng)安全性等方面還需在后續(xù)研究中做進(jìn)一步優(yōu)化。