李奕成,項偉
(北京信息科技大學(xué)自動化學(xué)院,北京 100192)
稀有金屬作為一種不可再生的重要戰(zhàn)略資源,關(guān)乎著國家的戰(zhàn)略安全。在巨大經(jīng)濟利益的驅(qū)使下,部分企業(yè)和個人不遵守法律規(guī)則和相關(guān)管控政策,違規(guī)超量開采的事件時有發(fā)生[1],造成了嚴重的國有資源流失。當前行業(yè)內(nèi)主要存在以下幾個問題:1)數(shù)據(jù)中心化易篡改,信息安全得不到保證,可信度低。2)缺乏信息交流共享的可信快捷渠道,企業(yè)間對產(chǎn)品、原料的來源和合法性缺乏洞察能力。3)缺乏隱私信息保護,對于對企業(yè)產(chǎn)生競爭影響的產(chǎn)品信息缺乏保護手段。區(qū)塊鏈作為一種融合了多種技術(shù)的數(shù)據(jù)存儲方案,能夠很好地適用于供應(yīng)鏈信息可追溯領(lǐng)域,解決傳統(tǒng)方案中存在的頑疾[2],能夠為解決上述問題提供良好的解決方案[3]。運用區(qū)塊鏈技術(shù)進行數(shù)據(jù)可追溯是當前研究的熱點,在諸多領(lǐng)域已經(jīng)有了很多應(yīng)用研究,區(qū)塊鏈與物聯(lián)網(wǎng)、加密技術(shù)相結(jié)合能夠有效地解決數(shù)據(jù)中心化、易篡改、信息共享效率低、缺乏隱私安全等問題,目前已在產(chǎn)品追溯、食品溯源、鋼鐵供應(yīng)鏈管理、汽車供應(yīng)鏈可追溯等領(lǐng)域取得成效[4-9]。因此,如何將區(qū)塊鏈應(yīng)用于稀有金屬供應(yīng)鏈,通過技術(shù)手段解決傳統(tǒng)方案中存在的頑疾,將是一個非常有價值的研究。
區(qū)塊鏈技術(shù)是一種集成了點對點(P2P)網(wǎng)絡(luò)、加密技術(shù)、智能合約、共識機制、時間戳等多種技術(shù)的新型應(yīng)用模式[10],其本質(zhì)上是一種去中心化、防篡改、可追溯性的分布式數(shù)據(jù)庫,采用點對點網(wǎng)絡(luò)進行通信,每個節(jié)點可以自行發(fā)送和接收數(shù)據(jù),通過共識算法在不可信的參與節(jié)點之間創(chuàng)建交易協(xié)議。每個區(qū)塊鏈以區(qū)塊上保存的前一區(qū)塊的哈希值為索引,前后相連形成按照時間順序排列的鏈式數(shù)據(jù)結(jié)構(gòu),對數(shù)據(jù)的修改會引發(fā)塊的哈希值發(fā)生變化,導(dǎo)致鏈式結(jié)構(gòu)遭到破壞,以此保證數(shù)據(jù)在分布節(jié)點上的完整性和一致性[11]。區(qū)塊鏈鏈式結(jié)構(gòu)如圖1 所示。
圖1 區(qū)塊鏈鏈式結(jié)構(gòu)
區(qū)塊鏈技術(shù)的應(yīng)用領(lǐng)域十分廣泛,當前已被廣泛應(yīng)用于防偽查詢、電子金融、跨境電商、供應(yīng)鏈管理等諸多領(lǐng)域。區(qū)塊鏈可分為公有鏈、聯(lián)盟鏈和私有鏈三種類型[12],特性如表1 所示。公有鏈是一個不需要任何授權(quán)就可以進行讀寫并參與共識過程的區(qū)塊鏈網(wǎng)絡(luò),常見的應(yīng)用領(lǐng)域包括知識產(chǎn)權(quán)、電子商務(wù)、數(shù)字經(jīng)濟、互聯(lián)網(wǎng)金融等多個應(yīng)用場景。私有鏈是在公有鏈的基礎(chǔ)上對加入權(quán)限增加限定,按照中心節(jié)點設(shè)立的準入規(guī)則,對查看和寫入權(quán)限進行限定。常適用于企業(yè)運維,內(nèi)部的辦公審批、財務(wù)審計等場景中,可以在僅內(nèi)部網(wǎng)絡(luò)訪問的情況下,享受區(qū)塊鏈帶來的優(yōu)勢。聯(lián)盟鏈介于二者之間,是由聯(lián)盟組織成員共同管理區(qū)塊鏈事務(wù),生成交易或查看區(qū)塊鏈信息,由多個企業(yè)或組織共同維護,在各方達成共識的前提下設(shè)計規(guī)則,為參與者提供認證、授權(quán)和管理等功能,常用于商品溯源、供應(yīng)鏈管理等領(lǐng)域。
表1 私有鏈、聯(lián)盟鏈、公有鏈特點
區(qū)塊鏈技術(shù)的特性可以有效解決行業(yè)內(nèi)的數(shù)據(jù)安全和信息丟失問題,使區(qū)塊鏈技術(shù)成為供應(yīng)鏈信息管理的重要手段。該文結(jié)合供應(yīng)鏈特點,對系統(tǒng)整體模型進行了設(shè)計,如圖2 所示。
圖2 供應(yīng)鏈信息追溯模型
圖2 中列舉了稀有金屬供應(yīng)鏈中的成員,包括礦石原料供應(yīng)方、金屬冶煉加工方、運輸方以及銷售方。信息可追溯模型整合了供應(yīng)鏈上企業(yè)的產(chǎn)品關(guān)鍵可追溯性數(shù)據(jù),當某個節(jié)點出現(xiàn)問題時,可沿數(shù)據(jù)關(guān)系網(wǎng)絡(luò)向上追溯。鏈中產(chǎn)品均配有RFID 識別標簽,存儲著采用EPC 編碼體系編寫的電子身份碼,具有唯一不可篡改的特點,它是系統(tǒng)中實際產(chǎn)品的虛擬身份,作為媒介實現(xiàn)信息的上鏈和查詢。
系統(tǒng)配置了三個組織,分別對應(yīng)上述三個參與方,每個組織可以使用有效的身份文件注冊加入?yún)^(qū)塊鏈系統(tǒng),按照實際的需求加入通道并根據(jù)成員數(shù)量增添節(jié)點,系統(tǒng)可以為每個用戶隨機生成私鑰和公鑰。其中,公鑰用于身份驗證和相關(guān)信息加密,私鑰用于用戶與系統(tǒng)交互時對隱私數(shù)據(jù)進行解密。在該系統(tǒng)中,用戶可以根據(jù)系統(tǒng)賦予的相應(yīng)的約定權(quán)限,對各個產(chǎn)品數(shù)據(jù)進行添加和更新,系統(tǒng)會將信息傳遞給下游用戶。
數(shù)據(jù)的上鏈以及交易信息的錄入需要各方的共同參與和配合,根據(jù)參與節(jié)點的分工和需求的不同,再根據(jù)被賦予的不同權(quán)限,鏈上成員可以通過安裝的智能合約在鏈上發(fā)布、更新產(chǎn)品信息以及更新交易記錄,經(jīng)過各方共識后將數(shù)據(jù)在各個節(jié)點上備份。鏈上成員和監(jiān)管機構(gòu)可以通過Web 頁面登錄區(qū)塊鏈可追溯系統(tǒng),通過產(chǎn)品的數(shù)字編碼,依照權(quán)限查詢可追溯信息。
稀有金屬供應(yīng)鏈產(chǎn)品可追溯系統(tǒng)面向監(jiān)管和供應(yīng)鏈上企業(yè)的信息管理與共享需求,需要一定程度地去中心化和一定的開放性,考慮到聯(lián)盟鏈部分授權(quán)和運行效率的特點,該文選用對稀有金屬供應(yīng)鏈管理適配性更好的聯(lián)盟鏈Hyperledger Fabric 進行系統(tǒng)搭建。系統(tǒng)整體分為數(shù)據(jù)層、服務(wù)層和應(yīng)用層,系統(tǒng)架構(gòu)如圖3 所示。
圖3 系統(tǒng)架構(gòu)圖
數(shù)據(jù)層是基于Hyperledger Fabric 開發(fā)的底層數(shù)據(jù)結(jié)構(gòu)的基本框架,主要作用是存儲節(jié)點之間的交易信息與產(chǎn)品相關(guān)數(shù)據(jù),保證產(chǎn)品信息的數(shù)據(jù)安全。數(shù)據(jù)層的數(shù)據(jù)區(qū)塊分別是區(qū)塊體以及區(qū)塊頭兩個部分。區(qū)塊體用于數(shù)據(jù)的存儲,負責(zé)保存產(chǎn)品相關(guān)信息和交易流通數(shù)據(jù),通過Merkle 數(shù)據(jù)結(jié)構(gòu)進行定義,在經(jīng)過哈希算法進行封裝后以帶有時間戳的形式不可變地寫入?yún)^(qū)塊鏈賬本,形成可追溯的信息鏈[13]。
服務(wù)層負責(zé)對區(qū)塊鏈網(wǎng)絡(luò)進行管理,例如,對鏈上的節(jié)點成員進行授權(quán)和身份驗證;管理智能合約運行、安裝和部署;并通過超級賬本官方提供的Fabric-Node-SDK 提供接口調(diào)用服務(wù),通過應(yīng)用接口根據(jù)客戶端請求來調(diào)用目標通道上的智能合約,當滿足預(yù)設(shè)條件時,智能合約將自動執(zhí)行腳本算法處理任務(wù),自動執(zhí)行相關(guān)的事務(wù)[14],實現(xiàn)應(yīng)用層與區(qū)塊鏈網(wǎng)絡(luò)的交互。
應(yīng)用層是用戶與系統(tǒng)進行交互的窗口,Web 界面采用html、JavaScript 以及angularjs 進行開發(fā)。前端的各種操作也會通過服務(wù)層提供的接口服務(wù)完成對安裝在鏈上鏈碼的調(diào)用,進而實現(xiàn)信息的查詢、更新、發(fā)布和交易等。
模型中設(shè)計了三條獨立的通道用來存儲不同環(huán)節(jié)的信息,每個通道都有獨立的賬本。通道架構(gòu)如圖4 所示。其中,設(shè)計多個通道的目的是將賬本和業(yè)務(wù)環(huán)節(jié)進行綁定,成員節(jié)點可以根據(jù)業(yè)務(wù)需求動態(tài)的加入通道,增強系統(tǒng)擴展靈活性的同時,通過多通道設(shè)計隔離通道信息,增強通道內(nèi)信息的私密性,降低無關(guān)節(jié)點的存儲壓力。其中,原料信息通道對應(yīng)原料供應(yīng)環(huán)節(jié),負責(zé)保存稀有金屬供應(yīng)鏈中的礦石原料相關(guān)信息。產(chǎn)品信息通道對應(yīng)產(chǎn)品的冶煉加工環(huán)節(jié),負責(zé)存儲成品金屬產(chǎn)品信息,如加工信息、原料組成等。交易信息通道對應(yīng)產(chǎn)品的流通環(huán)節(jié),負責(zé)保存有關(guān)礦石的交易記錄、物流信息以及所有權(quán)信息。
圖4 區(qū)塊鏈通道架構(gòu)
由于區(qū)塊鏈網(wǎng)絡(luò)中同一通道上的各節(jié)點是完全平等的,未經(jīng)加密的數(shù)據(jù)在通道上是完全公開的,相關(guān)產(chǎn)品的數(shù)據(jù)隱私無法得到保護。在保證數(shù)據(jù)透明的同時,也要兼顧供應(yīng)鏈成員的信息隱私保護需求,為應(yīng)對鏈中成員的隱私保護需求,該文設(shè)計了對產(chǎn)品信息的隱私加密方案。首先將數(shù)據(jù)按照隱私程度進行分類,通過對供應(yīng)鏈流程和關(guān)鍵信息隱私程度的分析,將上鏈關(guān)鍵信息分為公開數(shù)據(jù)和隱私數(shù)據(jù),公開數(shù)據(jù)直接存儲在區(qū)塊鏈中,隱私數(shù)據(jù)則通過對稱加密和非對稱加密技術(shù)相結(jié)合的加密方式進行上傳,隱私信息的加密過程如圖5所示。首先對隱私數(shù)據(jù)采用AES 算法進行加密,加密過程中使用的密鑰由系統(tǒng)隨機產(chǎn)生。AES 算法的加密、解密過程都需要使用密鑰進行,為保證對稱加密過程中密鑰的安全保存和共享,需要對AES 加密過程中使用的密鑰進行妥善加密。對于對稱加密過程中使用的密鑰,采用了ECC 橢圓曲線算法對進行加密[15],整個加密過程使用授權(quán)節(jié)點的公鑰作為非對稱加密的密鑰,在加密完成后,授權(quán)節(jié)點的公鑰和加密過后的加密密鑰信息以鍵值對的形式保存在鏈上。對隱私信息的加密過程通過在鏈上部署的智能合約自動進行。獲得授權(quán)的節(jié)點,可以使用自己的私鑰解密區(qū)塊鏈中保存的由自身公鑰加密的密鑰信息,完成對鏈上隱私數(shù)據(jù)的查看。
圖5 隱私數(shù)據(jù)加密過程
該文選用Hyperledger Fabric聯(lián)盟鏈,采用Docker等工具,利用Go語言進行系統(tǒng)鏈碼編寫。Hyperledger Fabric 是一個許可型的區(qū)塊鏈架構(gòu),由IBM 開發(fā)、Linux 基金會主辦的一個企業(yè)級開源商業(yè)區(qū)塊鏈平臺[16],在實際應(yīng)用中已經(jīng)有了很多成功案例。使用超級賬本官方提供的Fabric-Node-SDK,執(zhí)行與網(wǎng)頁交互的相關(guān)操作。系統(tǒng)搭建軟件環(huán)境如表2 所示。該網(wǎng)絡(luò)采用couchdb 數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)存儲,在Ubuntu16.04 虛擬機環(huán)境下運行,在完成系統(tǒng)環(huán)境的搭建后,對上述設(shè)計的監(jiān)管模型以及系統(tǒng)架構(gòu)進行了基本的原型系統(tǒng)實現(xiàn)。
表2 系統(tǒng)搭建軟件環(huán)境
系統(tǒng)進行搭建部署后,通過設(shè)計的產(chǎn)品電子身份標識碼作為產(chǎn)品在系統(tǒng)中的身份,進行可追溯信息的上傳和查詢。以鏈中不同的成員節(jié)點身份,將有關(guān)的可追溯性信息進行上鏈,Web 界面上的信息上傳操作如圖6 所示。
圖6 上傳可追溯信息
原料供應(yīng)商、金屬加工商以及經(jīng)銷商可以發(fā)布產(chǎn)品信息并為生產(chǎn)的產(chǎn)品添加原料來源信息,還可以添加相關(guān)交易信息以及物流信息等。當交易發(fā)生時,鏈上的成員可以在系統(tǒng)中對產(chǎn)品信息、原料來源等可追溯性信息進行查詢和確認,節(jié)點成員可以根據(jù)所授予的權(quán)限查看產(chǎn)品信息,不同查看權(quán)限成員查詢的結(jié)果如圖7-8 所示。結(jié)果顯示,加密后的隱私信息僅可以被授權(quán)的節(jié)點查看,當未被授權(quán)的節(jié)點查看時只能得到密文數(shù)據(jù)。
圖7 授權(quán)節(jié)點信息查詢結(jié)果
圖8 未授權(quán)節(jié)點信息查詢結(jié)果
該文在完成系統(tǒng)搭建的前提下,使用caliper系統(tǒng)測試工具對系統(tǒng)進行性能測試,共進行了1 000 次接口壓力測試,結(jié)果均能成功調(diào)用,吞吐量可達224 TPS,能夠滿足日常需求。圖9 展示的是發(fā)出查詢命令后系統(tǒng)的響應(yīng)時間。圖中橫坐標表示實驗次序,縱坐標表示響應(yīng)時間。其中,對公開數(shù)據(jù)查詢的平均響應(yīng)時間為24 ms,對隱私數(shù)據(jù)查詢的平均響應(yīng)時間為58 ms。在實際操作過程中沒有出現(xiàn)系統(tǒng)崩潰或明顯卡頓等狀況,能夠較為流暢地完成對產(chǎn)品信息的發(fā)布、更新和查詢,滿足系統(tǒng)的設(shè)計及使用要求。
圖9 查詢響應(yīng)時間
該文分析了稀有金屬供應(yīng)鏈中存在的問題,比較了當前主流的區(qū)塊鏈平臺,針對產(chǎn)業(yè)鏈中存在的原料來源缺乏信任、監(jiān)管難度大、信息共享效率、隱私信息缺乏保護等問題,基于聯(lián)盟區(qū)塊鏈平臺設(shè)計實現(xiàn)了產(chǎn)品信息可追溯系統(tǒng)。利用區(qū)塊鏈技術(shù)的優(yōu)點,解決了稀有金屬供應(yīng)鏈中數(shù)據(jù)中心化、信息易被篡改、信息不透明、存儲安全性低等問題。在此基礎(chǔ)上,在系統(tǒng)的設(shè)計方面采用多通道設(shè)計將不同業(yè)務(wù)進行分隔,對需要上鏈的敏感數(shù)據(jù)進行加密處理,保證了信息共享過程中的隱私安全,最后通過實例對系統(tǒng)進行了展示,驗證了該方案的可行性。當前,系統(tǒng)仍處于試驗階段,很多功能設(shè)計仍需細化,未來將對數(shù)據(jù)的儲存和管理進行優(yōu)化。如何提高區(qū)塊鏈系統(tǒng)的存儲,降低長時間運行中節(jié)點上的存儲壓力,將是后續(xù)研究中應(yīng)著重解決的問題。