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