冷澤琪, 譚振江, 周 偉, 劉佳琳
(吉林師范大學 計算機學院, 吉林 四平 136000)
根據(jù)市場需求調(diào)研得知,從2008年到2020年,假藥、假疫苗等事件層出不窮[1]。國民對醫(yī)藥的需求逐年遞增。假藥、劣藥不僅給成年人帶來了短暫性甚至是終身性的傷害,對老人和兒童也造成不可避免的創(chuàng)傷。因此,醫(yī)藥的質(zhì)量安全成為國民最關心的問題之一,而基于區(qū)塊鏈的溯源服務可以解決這一痛點問題。BlockVerify自2015年開始在倫敦提供對奢侈品、鉆石和醫(yī)藥的溯源服務,提供的鑒別類型包括偽造品、調(diào)換品、被偷商品以及虛假交易[2];李娜等人設計了一種對數(shù)字證書的追溯平臺,能夠有效地對數(shù)字證書和電子簽名進行追溯,從而達到防篡改的目的[3];劉金鵬等人提出一種基于區(qū)塊鏈的二維碼技術,應用于食品接觸材料中塑料包裝的溯源,加深了區(qū)塊鏈技術對食品接觸材料領域的研究[4];徐步龍等人對醫(yī)院門急診輸液藥房供應藥品進行了統(tǒng)計分析,未標注藥品追溯碼的藥品占11.8%,進而提出了一種基于區(qū)塊鏈的解決建議[5]。
對于醫(yī)藥安全首先考慮的就是醫(yī)藥數(shù)據(jù)的真實性。醫(yī)藥追溯系統(tǒng)可以實現(xiàn)對藥品生產(chǎn)、運輸、銷售等各個環(huán)節(jié)有關藥品質(zhì)量安全的數(shù)據(jù)進行真實可靠地記錄和傳遞[6]。當前我國主要有二種醫(yī)藥追溯方式:一種是藥企自己建立的藥物追溯系統(tǒng);另一種是第三方平臺提供的追溯服務。無論是哪種溯源方式,數(shù)據(jù)均來自利益相關方存入的中心數(shù)據(jù),那么就存在為了利益篡改數(shù)據(jù)的風險。同時,第三方服務與藥企存在著企業(yè)因技術、人員等問題過于依賴于第三方服務、不能較好約束其行為的弊端。從上述分析可知,在目前大部分的溯源案例中,追溯信息仍存在不完整,且部分有追溯的產(chǎn)品價格比正常產(chǎn)品高出一倍,使得消費者望而卻步。藥物的安全和國民的健康存在巨大的安全隱患。
區(qū)塊鏈是一個數(shù)據(jù)集,把數(shù)據(jù)打包成多區(qū)塊,每一個區(qū)塊是一個區(qū)塊鏈數(shù)據(jù)集的子集[7]。區(qū)塊與區(qū)塊之間的數(shù)據(jù)相互關聯(lián)形成邏輯上的鏈式結構。針對現(xiàn)有的醫(yī)藥安全需求很高,而傳統(tǒng)系統(tǒng)數(shù)據(jù)真實性較低,見表1。如果將區(qū)塊鏈技術應用到醫(yī)藥領域上,能夠實現(xiàn)對醫(yī)藥的原料采購、生產(chǎn)、加工、流通等各個環(huán)節(jié)的全程追溯,能夠解決各企業(yè)之間“信息孤島”的問題,從而減輕醫(yī)藥的監(jiān)管難度。
表1 傳統(tǒng)溯源與區(qū)塊鏈溯源對比
區(qū)塊鏈分為塊頭和塊身。塊頭主要包括:區(qū)塊編號、時間戳、父哈希和Nonce值等元數(shù)據(jù),塊身的主要功能是存儲數(shù)據(jù)。每一個區(qū)塊只能以附加的形式加入,新增的區(qū)塊與上一個區(qū)塊只能通過哈希值(父哈希)鏈接,以“鏈”形式不斷增加的區(qū)塊就形成了區(qū)塊鏈。區(qū)塊鏈由所有參與節(jié)點共同維護,每一個節(jié)點可以通過定期與鄰居節(jié)點交換信息使全局賬本保持同步[8]。
區(qū)塊鏈分為3類:公有鏈、私有鏈和聯(lián)盟鏈。公有鏈對來自互聯(lián)網(wǎng)的任何人都是公開的,參與者多為匿名,所有人都可以加入公有鏈網(wǎng)絡進行交易,獲取完整的賬本記錄和競爭記賬權等權利;私有鏈由集中管理者管理限制,只有內(nèi)部少數(shù)人可以使用,信息不公開,私有區(qū)塊鏈與中心式記賬差異并不明顯;聯(lián)盟鏈通常由多個組織或機構共同參與管理,并事先選取一些預選節(jié)點參與其共識過程[9],比較典型的是超級賬本項目。聯(lián)盟鏈具有交易速度快、可擴展性強等特點。本文選擇Hyperledger Fabric 超級賬本2.0作為底層開發(fā)平臺。
智能合約的主要思想是將合約條款轉化為計算機協(xié)議,在去可信第三方的環(huán)境中,讓此協(xié)議作為合約各方的信任代理,從而高效安全地履行合約[10]。智能合約分為3個階段:合約生成、合約發(fā)布和合約執(zhí)行[8]。具體功能見表2。
區(qū)塊鏈技術以密碼學作為安全保障基礎,由二個關鍵部分組成,即哈希算法和默克爾樹。哈希算法是哈希函數(shù)去計算區(qū)塊的頭部信息或者交易信息的哈希值,將哈希值存儲在區(qū)塊中,下一區(qū)塊存儲上一區(qū)塊的哈希值,形成完整的區(qū)塊鏈結構[11];默克爾樹是一個標準的二叉樹,如果樹上的一個節(jié)點被修改,那么該節(jié)點以下的信息將全部更新,擁有可溯源的特點。
表2 智能合約各部分功能
(1)Hash算法。哈希算法是一種單向密碼算法,把長度不一的明文以不可逆的方式映射為長度固定的密文,密文即哈希值。常用的哈希算法有SHA-256、SHA-512等。大部分區(qū)塊鏈使用的是SHA-256算法。
(2)Merkle樹。由一個根節(jié)點、若干非葉子節(jié)點和葉子節(jié)點組成。它的葉子節(jié)點存儲的是當前區(qū)塊體中每一筆交易的哈希值,非葉子節(jié)點是對應子節(jié)點哈希值鏈接之后再進行哈希運算的哈希值[12],非葉子節(jié)點之間兩兩組合并重復運算,最終得出Merkle根。其優(yōu)點見表3。
表3 Merkle的優(yōu)點
從四川省“毒膠囊”事件、山東省非法疫苗案、再到天津市假藥的“鬼市”和揚州假藥事件,醫(yī)藥安全是目前最重要的問題之一。對于醫(yī)藥安全,首先考慮的是醫(yī)藥數(shù)據(jù)的真實性。傳統(tǒng)的溯源系統(tǒng)的中心數(shù)據(jù)存在因利益等因素而被人為篡改的風險,很難保障醫(yī)藥數(shù)據(jù)的完整性和真實性。而區(qū)塊鏈技術的分布式存儲、賬本公開透明等優(yōu)勢,能夠保證所有節(jié)點共同監(jiān)督與維護,為追溯數(shù)據(jù)提供了可靠性。國內(nèi)成熟的基于區(qū)塊鏈技術的醫(yī)藥追溯系統(tǒng)寥寥無幾,區(qū)塊鏈技術應用到醫(yī)藥領域具有很好的適用性與廣闊的發(fā)展前景。
落地的區(qū)塊鏈追溯案例很多,但大部分存在數(shù)據(jù)不完整的問題,在醫(yī)藥的供應鏈下游節(jié)點,很少參與到記錄追蹤中,從而缺失了醫(yī)藥的追溯的必然環(huán)節(jié)。本文提出的醫(yī)藥追溯區(qū)塊鏈包括提供安全性的塊頭和存儲醫(yī)藥數(shù)據(jù)信息的塊體。區(qū)塊頭包括版本號、上一醫(yī)藥塊的哈希值、當前的時間戳、Nonce等信息,每一個醫(yī)藥區(qū)塊按照時間戳的順序鏈接成醫(yī)藥區(qū)塊鏈,鏈囊括了所有的歷史交易記錄,因此提供了完整的醫(yī)藥追溯。
本文采用區(qū)塊鏈技術與RFID電子標簽技術相結合,整體上來說,消費者通過掃描RFID標簽得到溯源全程的數(shù)據(jù)。醫(yī)藥追溯系統(tǒng)的驗證流程如圖1所示。
圖1 藥物追溯流程
改變傳統(tǒng)的溯源模式有助于提高醫(yī)藥安全性,結合區(qū)塊鏈技術不可篡改、開透明等特點,本文建立了新型追溯系統(tǒng)組織架構。如圖2所示。以醫(yī)藥為例,從藥材原料廠、制藥企業(yè)、運輸、存儲和銷售全程記錄追蹤,讓消費者不再覺得追溯只是“噱頭”。
圖2 追溯范圍改進
追溯系統(tǒng)的區(qū)塊鏈網(wǎng)絡共分為4層:數(shù)據(jù)層、合約層、業(yè)務層和應用層,如圖3所示。數(shù)據(jù)層中提供分布式賬本維護、私有數(shù)據(jù)庫維護,合約層即智能合約層,設計了現(xiàn)醫(yī)藥在供應鏈上下游流轉過程中的追溯,對醫(yī)藥數(shù)據(jù)結構體和智能合約功能接口,包括醫(yī)藥生產(chǎn)合約、醫(yī)藥運輸合約、醫(yī)藥銷售合約等調(diào)用功能。業(yè)務層是應用程序的后端服務,設計了RESTful的接口、用戶管理、Node.js.jdk,提供醫(yī)藥監(jiān)測管理服務。應用層包括發(fā)布醫(yī)藥信息、用戶登記、查詢和節(jié)點注冊等功能,可以實現(xiàn)用戶賬戶管理和業(yè)務操作的功能。
除了藥企自建的追溯系統(tǒng)外,第三方平臺掌握著錄入追溯系統(tǒng)的全部藥物信息,一旦發(fā)生數(shù)據(jù)泄露事件,將嚴重影響到藥企之間的公平競爭。為防止將系統(tǒng)內(nèi)部的藥物數(shù)據(jù)外泄,本文提出了多鏈業(yè)務架構,進行了授權節(jié)點和未授權節(jié)點賬本對比,如圖4所示。當同行企業(yè)存在隱私需求時,非授權節(jié)點PEER1不可訪問該隱私數(shù)據(jù),而授權節(jié)點則可以在不被影響的情況下繼續(xù)訪問該醫(yī)藥數(shù)據(jù)。本文設計的多鏈業(yè)務架構可以實現(xiàn)不同權限的節(jié)點訪問的副本隔離,從而達到同行企業(yè)的隱私要求。
本文提出的基于區(qū)塊鏈的醫(yī)藥追溯系統(tǒng)實現(xiàn)了一個原型系統(tǒng)。本文以復方氯酚烷胺片為例,實現(xiàn)的功能包括:藥廠發(fā)布醫(yī)藥生產(chǎn)信息,發(fā)布醫(yī)藥的運輸信息,發(fā)布醫(yī)藥的銷售信息。消費者查詢醫(yī)藥的生產(chǎn)信息和運輸信息以及銷售信息。
(1)藥企發(fā)布醫(yī)藥的生產(chǎn)信息。發(fā)布醫(yī)藥信息是錄入系統(tǒng)的重要環(huán)節(jié)之一,藥企在發(fā)布信息時,將根據(jù)某一醫(yī)藥編號來補充完善。發(fā)布醫(yī)藥的生產(chǎn)信息界面如圖5所示。
圖3 區(qū)塊鏈網(wǎng)絡各層架構
圖4 多鏈業(yè)務授權與未授權節(jié)點對比
(2)藥企發(fā)布醫(yī)藥的運輸和銷售信息。本文提供追溯全程服務,包括錄入生產(chǎn)、流通和銷售的信息。在每個錄入環(huán)節(jié)中提供了相關工作人員證明的新服務點,目的是當出現(xiàn)問題時,責任可以落實到個人。 發(fā)布醫(yī)藥的運輸和銷售信息界面如圖6、圖7所示。
(3)消費者查詢醫(yī)藥的生產(chǎn)信息。在為消費者提供的查詢服務中,只需輸入醫(yī)藥編號,即可查到該藥物生產(chǎn)、流通、銷售數(shù)據(jù)等的全部信息??梢跃唧w到生產(chǎn)日期、廠商和地址等,查詢醫(yī)藥的生產(chǎn)信息界面如圖8所示。
圖5 發(fā)布醫(yī)藥生產(chǎn)信息界面
在查詢醫(yī)藥的流通和銷售中,包括追溯到的發(fā)貨方、出庫證明人員、物流和藥店地址等數(shù)據(jù)信息。利用區(qū)塊鏈技術對醫(yī)藥全面記錄,有利于消費者對醫(yī)藥質(zhì)量的信任,如圖9和圖10所示。
圖6 發(fā)布醫(yī)藥流通信息
圖7 發(fā)布醫(yī)藥銷售信息
圖8 查詢醫(yī)藥生產(chǎn)信息
圖9 查詢醫(yī)藥流通信息
圖10 查詢醫(yī)藥銷售信息
區(qū)塊鏈技術賦予了追溯行業(yè)新的活力。利用聯(lián)盟鏈的數(shù)據(jù)公開透明與隱私保護,本系統(tǒng)通過數(shù)據(jù)的同步驗證,更新狀態(tài)數(shù)據(jù)庫,再通過每個交易請求的身份驗證和有效的加密機制,能夠將追溯的全部過程信息落實到個人,以便追責。它保障了追溯到的信息安全可靠,解決了一直以來的“難追溯”、“追溯信息不全”等問題。具有很高的擴展性,在醫(yī)藥以及其他領域中可以發(fā)揮更好的作用。