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