焦瑞金 鄭廣海
(大連交通大學(xué)軟件學(xué)院 遼寧 大連 116000)
食品溯源是指對食品的生產(chǎn)加工、物流運輸、銷售使用等過程進行追蹤記錄,使參與者都能清楚地了解到食品的流通過程,當(dāng)然這也需要食品參與各方的積極配合。近年來,非洲豬瘟等食品安全事件,嚴重引發(fā)了人們的信任危機。
食品溯源的研究意義在于食品安全問題頻發(fā)的當(dāng)下,通過設(shè)計具有明確功能和可信技術(shù)的系統(tǒng)架構(gòu),從食品根源上開始排查可能出現(xiàn)的食品安全問題并提供預(yù)警,極大地降低可能出現(xiàn)的規(guī)模性食品安全事件,保證公眾的健康,對整個市場的食品安全監(jiān)管也大有裨益。食品安全問題可能產(chǎn)生于食品生產(chǎn)、加工、流通等各個環(huán)節(jié),長久以來都沒有很好的辦法能夠減少或預(yù)防食品安全事件的發(fā)生,如何采用有效的手段來保障食品質(zhì)量成為了一個社會難題。目前國內(nèi)外針對食品安全問題普遍采用的一些手段包括抽檢、備份待檢、社會輿論監(jiān)督、食品供應(yīng)鏈條上的企業(yè)公德心和實行食品安全責(zé)任制,但以上應(yīng)對策略的機構(gòu)及公眾參與度低,不確定性較大,缺乏即時性,往往只能在食品安全問題發(fā)生之后才能啟動應(yīng)急預(yù)案,進而引發(fā)社會輿論的關(guān)注和譴責(zé),但公眾的健康已經(jīng)受到了侵害,而且事后的追責(zé)過程難度很大。
本系統(tǒng)架構(gòu)設(shè)計的目的在于從食品溯源的視角,基于區(qū)塊鏈技術(shù)和Agent技術(shù),從食品生產(chǎn)采購源頭、運輸、儲存以及使用和加工的整個過程提供實時且不可篡改的數(shù)據(jù)監(jiān)測和存儲,從而為解決食品安全問題,保障公眾健康提供一套具有技術(shù)保障的可行方案。傳統(tǒng)應(yīng)對食品安全的方式,如人工手動記錄食品進出庫的倉儲記錄和采買信息,發(fā)生食品安全問題之后再啟動應(yīng)急預(yù)案,化驗問題食物,此時人們的健康已經(jīng)受到侵害,另外留存數(shù)據(jù)少且容易被人為改動或破壞,加之食品安全問題責(zé)任重大,牽扯單位部門過多,事后追責(zé)過程難度很大。針對上述食品在流通過程中數(shù)據(jù)少的問題,可以使用區(qū)塊鏈技術(shù)完美解決,通過將食品存儲的倉庫和運輸車輛信息,甚至食品的栽培環(huán)境的相關(guān)信息都記錄在區(qū)塊鏈中,就能防止數(shù)據(jù)被篡改,及時有效地查驗信息,方便追責(zé)。Agent可用于分布式的系統(tǒng)中,通過競爭、協(xié)作等可顯示出智能化的系統(tǒng)行為?;趨^(qū)塊鏈和Agent的技術(shù)優(yōu)勢,設(shè)計了一種基于區(qū)塊鏈的食品溯源多Agent系統(tǒng)架構(gòu),以解決食品安全問題。
在我國重視食品溯源的基礎(chǔ)上,要設(shè)計實現(xiàn)基于區(qū)塊鏈技術(shù)的包含生產(chǎn)、運輸、銷售到消費者的全過程的安全可靠的新型食品溯源系統(tǒng)。打破傳統(tǒng)溯源系統(tǒng)存在的交易信息不完善、數(shù)據(jù)隱私易泄露、中心控制壁壘、無法追責(zé)等問題,為食品安全領(lǐng)域做出貢獻。
區(qū)塊鏈的概念最早是在2008年中本聰[1]的《比特幣白皮書》中提出的,起源于數(shù)字貨幣比特幣。比特幣作為一種加密貨幣,只是基于比特幣的底層技術(shù)區(qū)塊鏈技術(shù)的一種應(yīng)用?!皡^(qū)塊鏈”是一種使用加密原語的分布式技術(shù),依賴于特定的成員機制和一致性協(xié)議來維護共享、不可變和透明的僅附加寄存器。
目前的食品溯源系統(tǒng)大都采用中心化的存儲模式來存儲和查詢食品的相關(guān)信息,如文獻[2]設(shè)計了一個完整的全生命周期食品追溯系統(tǒng),監(jiān)察食品從源頭到配送到消費的整個過程,以保障食物安全。文獻[3]用科學(xué)方法分析可追溯系統(tǒng)的有效性,并建立了食品安全數(shù)據(jù)分析系統(tǒng),在一定程度上保障了食品安全。但這些方式不能保證高水平的系統(tǒng)可靠性、可擴展性和信息準(zhǔn)確性。區(qū)塊鏈技術(shù)的出現(xiàn)為我們提供了一個新的解決方案。例如,李明佳等[4]提出一個基于區(qū)塊鏈的食品安全溯源系統(tǒng),致力于解決數(shù)據(jù)存儲不安全的問題;薛騰飛等[5]提出一個基于區(qū)塊鏈的醫(yī)療數(shù)據(jù)共享模型,適用于解決各醫(yī)療機構(gòu)數(shù)據(jù)難以共享的問題;Tsang等[6]提出了一種基于區(qū)塊鏈IoT的食品可追溯系統(tǒng),將區(qū)塊鏈、物聯(lián)網(wǎng)技術(shù)和模糊邏輯的新部署整合到一個可追溯的整體貨架期管理系統(tǒng)中,解決了易逝食品存儲管理的難題;Yu等[7]設(shè)計了一種基于區(qū)塊鏈和RFID的腳環(huán),采用區(qū)塊鏈技術(shù)和RFID技術(shù),具有防篡改和防拷貝功能,記錄從養(yǎng)雞到銷售的所有數(shù)據(jù),有利于提高食品質(zhì)量監(jiān)管和食品行業(yè)的信譽。Tian[8]構(gòu)建的基于RFID和區(qū)塊鏈技術(shù)的農(nóng)產(chǎn)品供應(yīng)鏈可追溯系統(tǒng),有效追溯供應(yīng)鏈可信信息,保障食品安全。Pal等[9]利用新興的區(qū)塊鏈技術(shù)來改善物聯(lián)網(wǎng)食品物流。Yeh等[10]利用區(qū)塊鏈技術(shù)在食品可追溯性和透明度方面的能力,建立關(guān)于感知信任的擴展模型。結(jié)果表明,區(qū)塊鏈技術(shù)具有建立信任和影響購買意愿的能力。Salah等[11]提出了一種利用Ethereum區(qū)塊鏈和智能契約有效地執(zhí)行商業(yè)交易的方法,以跟蹤整個農(nóng)業(yè)供應(yīng)鏈中的大豆,為供應(yīng)鏈生態(tài)系統(tǒng)提供了一個高水平的透明性和可跟蹤性。Liu等[12]開發(fā)了數(shù)據(jù)采集系統(tǒng),通過基于多智能體系統(tǒng)(MAS)的蜂產(chǎn)品追溯體系結(jié)構(gòu),解決了采集數(shù)據(jù)、管理原始數(shù)據(jù)、及時準(zhǔn)確地實現(xiàn)數(shù)據(jù)交互等問題。
本文設(shè)計將區(qū)塊鏈技術(shù)和Agent技術(shù)結(jié)合起來,讓其發(fā)揮各自的優(yōu)勢,增強了多Agent系統(tǒng)的安全性(如完整性、身份管理、事務(wù)保證和數(shù)據(jù)安全性),也使系統(tǒng)朝著更加智能化的方向發(fā)展,節(jié)約了資源消耗和人力成本。由于區(qū)塊鏈分布式存儲的特點,鏈上的各節(jié)點可隨時加入或退出,與Agent的特性相吻合,這里設(shè)計將部分節(jié)點封裝成Agent,可代表食品溯源鏈參與各方的權(quán)利利益,而且各個Agent可能有不同的目標(biāo)、知識和能力,它們之間可能是合作的,也可能是競爭的,可實現(xiàn)在這樣的高動態(tài)的開放環(huán)境中,自主達成各自的目標(biāo)。比如,食品溯源鏈上的生產(chǎn)商、經(jīng)銷商、消費者之間也存在某種合作或者競爭的關(guān)系,利用區(qū)塊鏈的身份認證機制可以賦予每一個角色相應(yīng)的權(quán)限,通過創(chuàng)建多代理系統(tǒng),讓他們之間的權(quán)責(zé)更加明晰,實現(xiàn)透明化、公平化處理。多Agent系統(tǒng)中各個Agent之間是彼此聯(lián)系,又是各自獨立的。在食品溯源鏈領(lǐng)域也是如此,各個機構(gòu)之間連接緊密,需要數(shù)據(jù)共享且真實有效,同時各機構(gòu)的分工不同,可用Agent代替完成不同的功能模塊。然后部署在區(qū)塊鏈的分布式的網(wǎng)絡(luò)中,而且基于區(qū)塊鏈共識層和智能合約層的運行機制,也可將Agent封裝進去,完成特定的任務(wù),實現(xiàn)更加高效、透明化、不可篡改、一致性的處理。
傳統(tǒng)的食品溯源模型具備一定的現(xiàn)代化的流程,通過溯源服務(wù)中心的運營規(guī)范,二維碼技術(shù)或者物聯(lián)網(wǎng)智能識別技術(shù),依托網(wǎng)絡(luò)和數(shù)據(jù)庫建立食品溯源信息服務(wù)平臺。用戶可在其平臺上進行食品溯源信息的查詢。
這種傳統(tǒng)的食品溯源系統(tǒng)的特點就是有一個中心化的數(shù)據(jù)庫,食品所有的信息都存儲在這個數(shù)據(jù)庫中。一方面,中心化數(shù)據(jù)庫中的信息有被人為篡改的風(fēng)險,消費者看到的數(shù)據(jù)信息不一定是真實的,容易出現(xiàn)信任危機。另一方面,這樣中心化的溯源平臺一旦受到網(wǎng)絡(luò)黑客的攻擊,竊取到數(shù)據(jù)庫中的敏感信息,就會導(dǎo)致客戶信息的泄露,給客戶帶來安全隱患。而區(qū)塊鏈技術(shù)的分布式的存儲結(jié)構(gòu)形成了去中心化的數(shù)據(jù)存儲,解決了數(shù)據(jù)易被篡改和泄露的問題。
傳統(tǒng)溯源系統(tǒng)的用戶審查機制存在漏洞,導(dǎo)致平臺注冊用戶泛濫、虛假交易等不公平競爭行為的發(fā)生難以消除。針對此問題,設(shè)計的基于區(qū)塊鏈的食品溯源多Agent系統(tǒng)架構(gòu),可通過共識機制追溯到每一個注冊用戶,并通過共識層的共識Agent對每一筆交易進行共識確認,確保交易的真實性,從而可以大大減少虛假交易行為的發(fā)生。
傳統(tǒng)的溯源系統(tǒng)無法看到食品從生產(chǎn)、加工、銷售等每一階段的情況,中間許多過程也存在各種風(fēng)險和隱患,無法保證溯本求源的真實性和有效性。而基于區(qū)塊鏈和Agent的食品溯源,每一環(huán)節(jié)的信息都會被記錄在區(qū)塊鏈中,具有權(quán)限的用戶都可以查詢食品從生產(chǎn)源頭開始的詳細信息。Agent的加入也使這一流程更加智能化與系統(tǒng)化。
食品可追溯性是指對食品及其相關(guān)信息在食物鏈的各個環(huán)節(jié)(包括生產(chǎn)、加工、配送以及銷售等)進行追溯和溯源,從而對整個食品生產(chǎn)經(jīng)營活動進行有效監(jiān)控。
如圖1所示,設(shè)計了食品溯源系統(tǒng)的整體架構(gòu)模型,這里把模型劃分為四大塊,分別為:區(qū)塊聯(lián)盟鏈的環(huán)境搭建及內(nèi)部機理、各大企業(yè)的Agent運作流程、信息記錄及訂單生成、食品溯源系統(tǒng)查詢。其中涉及到的外部參與Agent描述如下:生產(chǎn)企業(yè)Agent(PE-Agent)、流通企業(yè)Agent(CE-Agent)、銷售企業(yè)Agent(SE-Agent)、消費者Agent(U-Agent)和監(jiān)管部門Agent(T-Agent)。
圖1 系統(tǒng)整體架構(gòu)模型
下面分別闡述每一部分的構(gòu)成及運作:
(1) 區(qū)塊聯(lián)盟鏈的環(huán)境搭建:通過區(qū)塊鏈超級賬本開發(fā)平臺,構(gòu)建聯(lián)盟鏈環(huán)境,Hyperledger Fabric是Linux基金會于2015年推出的開源項目,旨在推廣區(qū)塊鏈數(shù)字技術(shù)和交易驗證[13]。借助此平臺搭建的系統(tǒng)架構(gòu)外部環(huán)境包括生產(chǎn)企業(yè)、流通企業(yè)、銷售企業(yè)、監(jiān)管部門和消費者五大主體。這些主體會產(chǎn)生對應(yīng)的節(jié)點,將他們加入同一個通道中,并通過觸發(fā)在docker沙盒環(huán)境中運行的智能合約等模塊,實現(xiàn)各自不同的功能需求。
其中智能合約層由四部分組成,分別為權(quán)限控制合約Agent(AC-Agent)、交易操作合約Agent(TO-Agent)、數(shù)據(jù)上鏈合約Agent(DC-Agent)和狀態(tài)更新合約Agent(SU-Agent)。比如,一個用戶發(fā)起一筆交易,會觸發(fā)虛擬機中的合約執(zhí)行,首先需要權(quán)限控制合約Agent來驗證用戶的身份,驗證成功之后,開啟計時,來記錄交易的時間期限,接著自動觸發(fā)交易操作合約Agent,證明這筆交易準(zhǔn)備上鏈。在扣款之前需要將這筆交易發(fā)送到共識機制中,由各共識參與者去鑒別這筆交易是否是合法的。交易以生成新的區(qū)塊的形式,被發(fā)送到共識機制中,在共識機制中想要驗證這筆交易合法的參與者也需要首先進行身份認證,認證成功之后,允許對這筆交易進行共識驗證,由于每個參與者達成共識所做的工作量不同,也就會有不同的信用值。各方達成共識,證明這筆交易是合法的之后,根據(jù)每個共識Agent所做的工作量觸發(fā)信用管理中的增加信用Agent(A-Agent),一些用戶的惡意行為會觸發(fā)減少信用Agent(D-Agent),最終每個Agent的信用值都會記錄在信用顯示列表中。隨后,完成扣款操作,若驗證這筆交易非法,則撤銷這筆交易,同時自動返還錢款。
共識機制中設(shè)計了一些參與者共識Agent[14],包括成員服務(wù)機構(gòu)也即證書頒發(fā)機構(gòu)(MS)、認證機構(gòu)Agent(CA-Agent)、生產(chǎn)共識Agent(P-Agent)、流通共識Agent(C-Agent)、銷售共識Agent(S-Agent)。這些參與者共識Agent會將交易信息記錄在區(qū)塊鏈中,一經(jīng)記錄不可篡改,只能在原來的數(shù)據(jù)存儲基礎(chǔ)上附加修改,這時候需要數(shù)據(jù)上鏈合約Agent發(fā)揮功能。鏈上記錄完成,會實時檢查或者更新世界狀態(tài),自動觸發(fā)狀態(tài)更新合約Agent,將智能合約中的值和狀態(tài)與鏈上的進行同步,實現(xiàn)數(shù)據(jù)的一致性存儲。
(2) 各大企業(yè)的Agent運作流程:在這個食品供應(yīng)鏈溯源系統(tǒng)架構(gòu)設(shè)計中有五大主體,每個主體都需要完成各自不同的任務(wù)。在生產(chǎn)企業(yè)中,Agent負責(zé)食品的批量生產(chǎn)以及信息記錄,并為每一個生產(chǎn)品賦予唯一的食品溯源碼。在流通企業(yè)中,Agent保證大量食品的高效正常流轉(zhuǎn)和不積壓。在銷售企業(yè)中,如果食品缺貨或者少貨,Agent就可以向生產(chǎn)企業(yè)和流通企業(yè)提前批量預(yù)訂食品,及時填補食品缺口,保證市場的正常運轉(zhuǎn),滿足消費者的需求。各個Agent任務(wù)完成后將生成的信息通過區(qū)塊鏈接口上傳到區(qū)塊鏈網(wǎng)絡(luò)中,信息一旦生成不可篡改,通過時間戳可追溯查詢。
(3) 信息記錄及訂單生成:生產(chǎn)企業(yè)負責(zé)生產(chǎn)加工人們所需的食品,完成之后食品包裝上會有唯一的食品溯源碼,存儲該食品的基本信息。比如,生產(chǎn)企業(yè)需要將食品的生產(chǎn)日期、包裝日期、產(chǎn)品類型、產(chǎn)品名稱、制造商和產(chǎn)地等信息記錄在區(qū)塊鏈中,相應(yīng)地,食品也會到達流通企業(yè)、銷售企業(yè)、消費者等。每流轉(zhuǎn)一處,就需要在區(qū)塊鏈中增加相應(yīng)的流轉(zhuǎn)信息和屬性信息,且這些信息只有擁有一定權(quán)限的主體才能夠記錄或者讀取。銷售企業(yè)也可以發(fā)布訂單需求,生產(chǎn)企業(yè)接收訂單,此時發(fā)布者可以確認并生成訂單。訂單指定了內(nèi)容、數(shù)量、到達時間等,用于在觸發(fā)交易操作合約時匹配比較。
(4) 食品溯源系統(tǒng)查詢:消費者Agent在購買或者使用食品之后,已經(jīng)被賦予一定的身份權(quán)限,通過此身份認證,可登錄到食品溯源系統(tǒng),輸入食品的溯源碼,可查看食品從生產(chǎn)源頭開始的詳細信息。被許可授權(quán)的監(jiān)管部門Agent可隨時查詢鏈上存儲的數(shù)據(jù)信息,方便追責(zé)。
在溯源系統(tǒng)的聯(lián)盟鏈共識機制中我們采用PBFT共識算法。實用拜占庭容錯算法(Practical Byzantine Fault Tolerance)剛開始是在MIT的Miguel Castro和Barbara Liskov在1999年的學(xué)術(shù)論文中提出的[15],將算法復(fù)雜度由指數(shù)級降低到多項式級,它能夠保證在至多1/3的節(jié)點失效的情況下達成全網(wǎng)一致的共識。PBFT算法大致的運行流程如下,其中系統(tǒng)中有3f+1個節(jié)點,最多可存在f個惡意的節(jié)點:(1) 全網(wǎng)選取一個主節(jié)點,負責(zé)生成新區(qū)塊,其他節(jié)點作為副節(jié)點;(2) 客戶端向主節(jié)點發(fā)送事件的服務(wù)請求;(3) 主節(jié)點將請求廣播給其他副節(jié)點;(4) 所有副節(jié)點響應(yīng)請求并給客戶端發(fā)回響應(yīng)結(jié)果;(5) 客戶端確認最終結(jié)果,結(jié)果需要滿足f+1個不同的副節(jié)點響應(yīng)相同的結(jié)果。通過上述過程,節(jié)點要求記錄的交易信息被寫入各個記賬節(jié)點的區(qū)塊鏈中,形成一個分布式的不可篡改、不可偽造的一致性賬本。
PBFT的優(yōu)點如下:(1) 共識的時間延遲大約在2~5 s,能夠滿足實時處理的要求;(2) 共識效率高,可實現(xiàn)高頻交易量的需求;(3) 非常適合聯(lián)盟鏈的應(yīng)用場景,因此成為目前使用最多的聯(lián)盟鏈共識算法。
現(xiàn)有的區(qū)塊鏈的共識框架能夠滿足我們對于食品溯源鏈的要求,本文設(shè)計將多代理系統(tǒng)(MAS)加入?yún)^(qū)塊鏈共識層,可以在原有基礎(chǔ)上,創(chuàng)造出更加智能化的食品溯源系統(tǒng)架構(gòu)。在MAS中,決策、交易和一般的交互作用常常被委托給多個Agent執(zhí)行,而Agent中一個通常被區(qū)別對待的特征是“信賴”。它可以直接計算,也可以委托給專門的機構(gòu)。在共識層,我們主要解決的也就是信任問題。建立可信交互的一種方法是實現(xiàn)基于信譽的機制。Agent信譽通常是根據(jù)以前的行為來計算的,它可以用來推斷未來可能發(fā)生的行為。因此,當(dāng)Agent需要獲取關(guān)鍵或者相關(guān)信息時,信譽會嚴重影響決策過程。此外,仍然需要保證對它進行適當(dāng)?shù)墓芾?例如,提供一種誠實和可驗證的方法來計算它,確保它的歷史值是防篡改的,并提供更新的信譽值)。
一般來說,信譽可以被認為是一個相當(dāng)可靠的指標(biāo),是信任的基石。計算信譽這種機制也可以是對良好行為的激勵。由于信譽和信任機制一直被認為是MAS設(shè)計的關(guān)鍵因素,考慮到MAS的這種特性,我們可以將MAS嵌入到區(qū)塊鏈的共識層中。在共識層中,每個參與者都會有自己的信譽值,擁有較好信譽的參與者有機會選擇較好的交易報價,并更快地完成交易,而且每完成一筆真實的交易,都將會得到一定的信譽獎勵。在我們的系統(tǒng)模型中,Agent代理在概念上可以被理解為被許可的聯(lián)盟區(qū)塊鏈上的對等點,在真實的場景中,可能需要管理一些敏感的數(shù)據(jù)。由于我們設(shè)計的系統(tǒng)架構(gòu)是去中心化的,即在沒有中心控制機構(gòu)的情況下達成協(xié)議的共識。鑒于此,我們將參與共識的各節(jié)點用Agent代理來表示并完成交互。由區(qū)塊鏈和Agent技術(shù)的特點可知,Agent代理節(jié)點可以隨時加入或退出,在Agent代理加入的時候,需要認證代理的信譽和權(quán)限,這時候需要一個CA認證代理來發(fā)揮作用,即將CA認證代理作為主節(jié)點,其他Agent代理作為副節(jié)點,共同組成了共識層。
如圖2所示,為我們設(shè)計的共識層系統(tǒng)的邏輯架構(gòu),包含成員服務(wù)機構(gòu)(MS)、CA認證代理和多個參與共識的Agent組成。參與共識的Agent都有自己特定的功能,并且每一個Agent通過身份認證后都可以連接到區(qū)塊鏈的對等網(wǎng)絡(luò)上。聯(lián)網(wǎng)的Agent都擁有各自獨立的賬本:服務(wù)賬本和交易賬本,并封裝了請求交易Agent(R-Agent)和處理交易Agent(H-Agent)。服務(wù)賬本上不僅存儲本Agent自身的信息,還存儲本Agent有關(guān)的服務(wù)提供信息和額外的信息,比如生產(chǎn)共識Agent只負責(zé)食品的生產(chǎn)部分,它可以提供生產(chǎn)食品的相關(guān)信息,而運送食品之類的操作只能交給流通共識Agent來完成,生產(chǎn)共識Agent需要運送食品,需向流通共識Agent提交一個交易請求,之后達成交易共識。在服務(wù)賬本上可進行的操作如下:1) 添加一個新的服務(wù);2) 修改一個服務(wù);3) 刪除一個服務(wù);4) 搜索相關(guān)的服務(wù)。而交易賬本上存儲Agent社區(qū)中發(fā)生的交易信息,以及來自服務(wù)提供者代理和請求服務(wù)的代理之間的相關(guān)評價信息和交易雙方自身的信息,而這個評價信息可以作為之后信譽評估的考量。這個賬本可以有效跟蹤在一段時間內(nèi)發(fā)生的交易。在交易賬本上可進行的操作如下:1) 添加一個新的交易記錄;2) 查找交易的Agent;3) 查找某一個交易詳情;4) 計算信譽值。這些代理主要負責(zé)完成各自的功能,并在共識層的Agent社區(qū)中進行交互。他們的主要行為有:1) 請求CA-Agent提供認證證書;2) 通知請求交易Agent執(zhí)行交易請求;3) 通知處理交易Agent執(zhí)行交易處理;4) 服務(wù)賬本和交易賬本的讀和寫,隨時更新;5) 發(fā)送和接收消息。
圖2 共識系統(tǒng)的邏輯架構(gòu)
如果有Agent代理想要加入共識網(wǎng)絡(luò),需要先向CA代理發(fā)送請求加入網(wǎng)絡(luò)的認證,CA代理通知認證合約Agent(G-Agent)執(zhí)行認證請求,認證通過后即可加入。Agent代理加入之后便可擁有自己的服務(wù)賬本和交易賬本,可以請求執(zhí)行指定的服務(wù),并需要隨時記錄網(wǎng)絡(luò)中已達成共識的交易。每個Agent代理節(jié)點通過發(fā)出服務(wù)請求和執(zhí)行請求的任務(wù)完成后,都會有相應(yīng)的信譽獎勵,并且可以累加,這就提高了每個Agent代理節(jié)點記賬的積極性。一旦有惡意Agent代理想要修改交易數(shù)據(jù),就會影響自身的信譽值,超過一定閾值,就會被CA認證代理驅(qū)逐出共識網(wǎng)絡(luò),維護共識層的安全穩(wěn)定。而且這種情況并不會影響整個系統(tǒng)的正常運行,因為只有全網(wǎng)大多數(shù)Agent代理達成共識之后才能將交易記錄寫入?yún)^(qū)塊鏈中[16],保證了系統(tǒng)的安全性。
如圖3所示,為CA代理的運行機制,其中被許可的區(qū)塊鏈上[17]的一個重要組成部分是證書頒發(fā)機構(gòu)(MS)。MS相當(dāng)于一個管理組織,它承載一個證書頒發(fā)機構(gòu)并管理所有對等點的網(wǎng)絡(luò)身份,維護一個基于訪問控制列表的網(wǎng)絡(luò)活動控制,并確保每個事務(wù)最終都可以追溯到一個注冊用戶??煽闯?,在當(dāng)前的設(shè)計中,我們使用一個單一的認證機構(gòu)。為簡單起見,我們將Agent節(jié)點作為區(qū)塊鏈上的對等節(jié)點運行,并且依賴于一個由MS托管的公共證書頒發(fā)機構(gòu)CA代理。其中CA代理有以下三個主要的作用:1) 包含標(biāo)準(zhǔn)的Agent管理系統(tǒng)的功能;2) 是連接區(qū)塊鏈網(wǎng)絡(luò)和MAS的代理;3) 為其他代理提供了一個接口(即認證合約Agent的功能),以便與CA交互進行注冊和身份管理。
圖3 CA代理的運行機制
具體的行為如下:1) 觸發(fā)認證合約Agent的功能,轉(zhuǎn)發(fā)消息給證書頒發(fā)機構(gòu),并且給普通Agent頒發(fā)證書并完成交互。2) 認證合約Agent任務(wù)完成后,連接到區(qū)塊鏈網(wǎng)絡(luò)中,一旦一個普通Agent表現(xiàn)出了惡意的行為或者它的信譽值降低到了特定的閾值,CA-Agent中就負責(zé)通知吊銷證書Agent(V-Agent)進行吊銷證書操作,隨后就會在證書吊銷列表中查看到已經(jīng)被吊銷證書的Agent。3) 收回相應(yīng)Agent的讀寫交易賬本和服務(wù)賬本的權(quán)限,也即Agent證書身份失效。而且,此Agent的交易記錄和行為會被永遠記錄在區(qū)塊鏈的賬本中[18],證書吊銷列表中的記錄不會消失,任何擁有權(quán)限的Agent都可以查看吊銷列表,為之后的交易做出判斷,在一定程度上防止了虛假交易行為的發(fā)生。
綜上所述,共識層的整體運行流程如圖4所示,通過運用PBFT共識算法,詳細描述了各Agent之間的交互作用。
圖4 共識層的運行機制
過程如下:
1) 一個普通Agent向CA代理發(fā)送請求注冊獲取認證證書的消息,以便能夠進入Agent社區(qū),查詢并操作賬本數(shù)據(jù)。
2) CA代理收到普通Agent發(fā)來的請求消息后,轉(zhuǎn)發(fā)此消息給成員服務(wù)機構(gòu)MS,也即證書頒發(fā)機構(gòu)。
3) 經(jīng)MS同意后,會授予CA代理認證證書。并將此消息廣播給各對等Agent節(jié)點和主節(jié)點。
4) CA代理被授權(quán)后,向普通Agent頒發(fā)證書。這時,普通Agent就可以發(fā)布它愿意提供的服務(wù),并且尋找它想要請求的服務(wù)。
5) 普通Agent請求一個交易,并將交易提案廣播給網(wǎng)絡(luò)上的各節(jié)點。各節(jié)點需要驗證的內(nèi)容如下:(1) 交易提案內(nèi)容完整;(2) 在過去并沒有發(fā)生過這個交易;(3) 數(shù)字簽名是有效的;(4) Agent已獲適當(dāng)?shù)氖跈?quán),并且它的證書是有效的。
6) 網(wǎng)絡(luò)上的各對等Agent節(jié)點、包括生產(chǎn)共識Agent、流通共識Agent,銷售共識Agent,它們將交易提案輸入作為被調(diào)用的智能合約的參數(shù),然后針對當(dāng)前狀態(tài)數(shù)據(jù)庫執(zhí)行智能合約,產(chǎn)生以背書響應(yīng)形式發(fā)送的結(jié)果。
7) 普通Agent節(jié)點驗證各對等Agent節(jié)點的簽名,并將結(jié)果反饋給主節(jié)點,但將交易事務(wù)和連同收到的響應(yīng)結(jié)果提交給主節(jié)點之前,需對提交的響應(yīng)結(jié)果進行比較,確定各對等Agent節(jié)點的響應(yīng)結(jié)果是否相同。如果收到超過半數(shù)以上的相同的響應(yīng)結(jié)果,則向主節(jié)點發(fā)送調(diào)用服務(wù)的請求。
8) 當(dāng)主節(jié)點接收到請求時,它會按時間順序?qū)?chuàng)建的交易事務(wù)塊進行排序,然后將這些交易事務(wù)塊告知給通道上的所有對等Agent節(jié)點,并更新總賬。
共識層采用的PBFT共識算法具有吞吐量高,交易確認時間短的優(yōu)點,鏈上的各對等Agent節(jié)點作為副節(jié)點可以滿足實時處理交易的需求,利用Agent的智能化的優(yōu)勢,將交易處理的時間成本降至最低,方便主節(jié)點快速生成區(qū)塊,可以有效提升食品溯源的效率。
對設(shè)計的系統(tǒng)進行了流程模擬研究。包括5個參與者:生產(chǎn)共識Agent、流通共識Agent、銷售共識Agent、消費者共識Agent(B-Agent)和主節(jié)點Agent(O-Agent),其中主節(jié)點Agent負責(zé)生成交易區(qū)塊。這里每個Agent都有各自的能力水平和完成特定的功能。
在注冊階段完成之后,各Agent獲得自己的身份認證證書,此時可以進行交易操作。如圖5所示,為模擬交易時序圖。生產(chǎn)共識Agent發(fā)起一筆交易,投遞產(chǎn)品給流通共識Agent,流通共識Agent收到交易請求后,同意交易請求,則雙方簽署區(qū)塊鏈上部署的交易合約,然后主節(jié)點Agent負責(zé)生成交易區(qū)塊,此時要想使合約生效,即證明這筆交易存在,需要主節(jié)點Agent將交易區(qū)塊向全網(wǎng)廣播,各Agent節(jié)點收到廣播信息后,需對交易區(qū)塊信息進行驗證,并將驗證結(jié)果返回給主節(jié)點Agent,主節(jié)點Agent自身也會驗證交易信息,并統(tǒng)計收到的驗證結(jié)果,如果大部分的結(jié)果相同,則說明交易是真實的,然后通知各節(jié)點交易記錄進區(qū)塊鏈中。此時,生產(chǎn)共識Agent和流通共識Agent就達成了此筆交易。交易一旦生成,不可篡改,可永久地記錄在區(qū)塊鏈中。之后,流通共識Agent需要將食品裝箱運送,向銷售共識Agent發(fā)送貨物運送請求,同理,雙方達成一致,且得到各參與者的共識后,交易完成,并被記錄在區(qū)塊鏈中。消費者共識Agent購買銷售共識Agent出售的商品,交易付款。此時,由于所有的交易信息都被記錄在區(qū)塊鏈中[19],參與各方都可以查看食品流轉(zhuǎn)的詳細信息。
圖5 交易時序圖
本文設(shè)計的采用區(qū)塊鏈技術(shù)和Agent技術(shù)構(gòu)建的食品溯源模型,解決了數(shù)據(jù)中心化存儲、易被篡改、信息不共享的弊端。而且MAS系統(tǒng)負責(zé)自動化和優(yōu)化參與者之間的相互作用,提高了系統(tǒng)的運行效率。區(qū)塊鏈?zhǔn)侨ブ行幕拇鎯Ψ绞?,可以有效避免單點故障的發(fā)生。且共識層有了MAS系統(tǒng)的加入,可以更加迅速地達成共識,解決了信任難題。智能合約與Agent技術(shù)的結(jié)合使用,可以使系統(tǒng)更加自動化,減少了人為錯誤的發(fā)生,利用合約中的不可篡改的機制,建立了基于信任的協(xié)議,也加快了系統(tǒng)內(nèi)部的信息流動和資源共享,節(jié)約了時間和資源成本。
這里將區(qū)塊鏈和MAS的優(yōu)點進行結(jié)合,解決了現(xiàn)階段的一些難題,未來我們也需要驗證智能合約實施的正確性,制定合理的合約規(guī)范等,進一步完善該領(lǐng)域的應(yīng)用。
本文介紹了區(qū)塊鏈的概念和技術(shù)特征,并結(jié)合Agent技術(shù)設(shè)計了食品溯源系統(tǒng)架構(gòu),詳細分析了系統(tǒng)模型的工作機理,重點闡述了共識層的運行機制,最后分析了模型的特點。該模型不僅提高了系統(tǒng)的運行效率,優(yōu)化參與者之間的交互作用,也提高了食品溯源系統(tǒng)的透明度,解決了數(shù)據(jù)中心化存儲、數(shù)據(jù)隱私易泄露、信息不共享的問題,保證消費者能了解到食品從生產(chǎn)到使用的詳細信息,增加了公眾對于食品安全的信任度。在此基礎(chǔ)上,利用加解密技術(shù)為系統(tǒng)提供更好的安全性和隱私性,以及制定合理的智能合約的規(guī)范是下一步需要解決的問題。