冷澤琪, 譚振江, 周 偉, 劉佳琳
(吉林師范大學 計算機學院, 吉林 四平 136000)
根據市場需求調研得知,從2008年到2020年,假藥、假疫苗等事件層出不窮[1]。國民對醫藥的需求逐年遞增。假藥、劣藥不僅給成年人帶來了短暫性甚至是終身性的傷害,對老人和兒童也造成不可避免的創傷。因此,醫藥的質量安全成為國民最關心的問題之一,而基于區塊鏈的溯源服務可以解決這一痛點問題。BlockVerify自2015年開始在倫敦提供對奢侈品、鉆石和醫藥的溯源服務,提供的鑒別類型包括偽造品、調換品、被偷商品以及虛假交易[2];李娜等人設計了一種對數字證書的追溯平臺,能夠有效地對數字證書和電子簽名進行追溯,從而達到防篡改的目的[3];劉金鵬等人提出一種基于區塊鏈的二維碼技術,應用于食品接觸材料中塑料包裝的溯源,加深了區塊鏈技術對食品接觸材料領域的研究[4];徐步龍等人對醫院門急診輸液藥房供應藥品進行了統計分析,未標注藥品追溯碼的藥品占11.8%,進而提出了一種基于區塊鏈的解決建議[5]。
對于醫藥安全首先考慮的就是醫藥數據的真實性。醫藥追溯系統可以實現對藥品生產、運輸、銷售等各個環節有關藥品質量安全的數據進行真實可靠地記錄和傳遞[6]。當前我國主要有二種醫藥追溯方式:一種是藥企自己建立的藥物追溯系統;另一種是第三方平臺提供的追溯服務。無論是哪種溯源方式,數據均來自利益相關方存入的中心數據,那么就存在為了利益篡改數據的風險。同時,第三方服務與藥企存在著企業因技術、人員等問題過于依賴于第三方服務、不能較好約束其行為的弊端。從上述分析可知,在目前大部分的溯源案例中,追溯信息仍存在不完整,且部分有追溯的產品價格比正常產品高出一倍,使得消費者望而卻步。藥物的安全和國民的健康存在巨大的安全隱患。
區塊鏈是一個數據集,把數據打包成多區塊,每一個區塊是一個區塊鏈數據集的子集[7]。區塊與區塊之間的數據相互關聯形成邏輯上的鏈式結構。針對現有的醫藥安全需求很高,而傳統系統數據真實性較低,見表1。如果將區塊鏈技術應用到醫藥領域上,能夠實現對醫藥的原料采購、生產、加工、流通等各個環節的全程追溯,能夠解決各企業之間“信息孤島”的問題,從而減輕醫藥的監管難度。

表1 傳統溯源與區塊鏈溯源對比
區塊鏈分為塊頭和塊身。塊頭主要包括:區塊編號、時間戳、父哈希和Nonce值等元數據,塊身的主要功能是存儲數據。每一個區塊只能以附加的形式加入,新增的區塊與上一個區塊只能通過哈希值(父哈希)鏈接,以“鏈”形式不斷增加的區塊就形成了區塊鏈。區塊鏈由所有參與節點共同維護,每一個節點可以通過定期與鄰居節點交換信息使全局賬本保持同步[8]。
區塊鏈分為3類:公有鏈、私有鏈和聯盟鏈。公有鏈對來自互聯網的任何人都是公開的,參與者多為匿名,所有人都可以加入公有鏈網絡進行交易,獲取完整的賬本記錄和競爭記賬權等權利;私有鏈由集中管理者管理限制,只有內部少數人可以使用,信息不公開,私有區塊鏈與中心式記賬差異并不明顯;聯盟鏈通常由多個組織或機構共同參與管理,并事先選取一些預選節點參與其共識過程[9],比較典型的是超級賬本項目。聯盟鏈具有交易速度快、可擴展性強等特點。本文選擇Hyperledger Fabric 超級賬本2.0作為底層開發平臺。
智能合約的主要思想是將合約條款轉化為計算機協議,在去可信第三方的環境中,讓此協議作為合約各方的信任代理,從而高效安全地履行合約[10]。智能合約分為3個階段:合約生成、合約發布和合約執行[8]。具體功能見表2。
區塊鏈技術以密碼學作為安全保障基礎,由二個關鍵部分組成,即哈希算法和默克爾樹。哈希算法是哈希函數去計算區塊的頭部信息或者交易信息的哈希值,將哈希值存儲在區塊中,下一區塊存儲上一區塊的哈希值,形成完整的區塊鏈結構[11];默克爾樹是一個標準的二叉樹,如果樹上的一個節點被修改,那么該節點以下的信息將全部更新,擁有可溯源的特點。

表2 智能合約各部分功能
(1)Hash算法。哈希算法是一種單向密碼算法,把長度不一的明文以不可逆的方式映射為長度固定的密文,密文即哈希值。常用的哈希算法有SHA-256、SHA-512等。大部分區塊鏈使用的是SHA-256算法。
(2)Merkle樹。由一個根節點、若干非葉子節點和葉子節點組成。它的葉子節點存儲的是當前區塊體中每一筆交易的哈希值,非葉子節點是對應子節點哈希值鏈接之后再進行哈希運算的哈希值[12],非葉子節點之間兩兩組合并重復運算,最終得出Merkle根。其優點見表3。

表3 Merkle的優點
從四川省“毒膠囊”事件、山東省非法疫苗案、再到天津市假藥的“鬼市”和揚州假藥事件,醫藥安全是目前最重要的問題之一。對于醫藥安全,首先考慮的是醫藥數據的真實性。傳統的溯源系統的中心數據存在因利益等因素而被人為篡改的風險,很難保障醫藥數據的完整性和真實性。而區塊鏈技術的分布式存儲、賬本公開透明等優勢,能夠保證所有節點共同監督與維護,為追溯數據提供了可靠性。國內成熟的基于區塊鏈技術的醫藥追溯系統寥寥無幾,區塊鏈技術應用到醫藥領域具有很好的適用性與廣闊的發展前景。
落地的區塊鏈追溯案例很多,但大部分存在數據不完整的問題,在醫藥的供應鏈下游節點,很少參與到記錄追蹤中,從而缺失了醫藥的追溯的必然環節。本文提出的醫藥追溯區塊鏈包括提供安全性的塊頭和存儲醫藥數據信息的塊體。區塊頭包括版本號、上一醫藥塊的哈希值、當前的時間戳、Nonce等信息,每一個醫藥區塊按照時間戳的順序鏈接成醫藥區塊鏈,鏈囊括了所有的歷史交易記錄,因此提供了完整的醫藥追溯。
本文采用區塊鏈技術與RFID電子標簽技術相結合,整體上來說,消費者通過掃描RFID標簽得到溯源全程的數據。醫藥追溯系統的驗證流程如圖1所示。

圖1 藥物追溯流程
改變傳統的溯源模式有助于提高醫藥安全性,結合區塊鏈技術不可篡改、開透明等特點,本文建立了新型追溯系統組織架構。如圖2所示。以醫藥為例,從藥材原料廠、制藥企業、運輸、存儲和銷售全程記錄追蹤,讓消費者不再覺得追溯只是“噱頭”。

圖2 追溯范圍改進
追溯系統的區塊鏈網絡共分為4層:數據層、合約層、業務層和應用層,如圖3所示。數據層中提供分布式賬本維護、私有數據庫維護,合約層即智能合約層,設計了現醫藥在供應鏈上下游流轉過程中的追溯,對醫藥數據結構體和智能合約功能接口,包括醫藥生產合約、醫藥運輸合約、醫藥銷售合約等調用功能。業務層是應用程序的后端服務,設計了RESTful的接口、用戶管理、Node.js.jdk,提供醫藥監測管理服務。應用層包括發布醫藥信息、用戶登記、查詢和節點注冊等功能,可以實現用戶賬戶管理和業務操作的功能。
除了藥企自建的追溯系統外,第三方平臺掌握著錄入追溯系統的全部藥物信息,一旦發生數據泄露事件,將嚴重影響到藥企之間的公平競爭。為防止將系統內部的藥物數據外泄,本文提出了多鏈業務架構,進行了授權節點和未授權節點賬本對比,如圖4所示。當同行企業存在隱私需求時,非授權節點PEER1不可訪問該隱私數據,而授權節點則可以在不被影響的情況下繼續訪問該醫藥數據。本文設計的多鏈業務架構可以實現不同權限的節點訪問的副本隔離,從而達到同行企業的隱私要求。
本文提出的基于區塊鏈的醫藥追溯系統實現了一個原型系統。本文以復方氯酚烷胺片為例,實現的功能包括:藥廠發布醫藥生產信息,發布醫藥的運輸信息,發布醫藥的銷售信息。消費者查詢醫藥的生產信息和運輸信息以及銷售信息。
(1)藥企發布醫藥的生產信息。發布醫藥信息是錄入系統的重要環節之一,藥企在發布信息時,將根據某一醫藥編號來補充完善。發布醫藥的生產信息界面如圖5所示。

圖3 區塊鏈網絡各層架構

圖4 多鏈業務授權與未授權節點對比
(2)藥企發布醫藥的運輸和銷售信息。本文提供追溯全程服務,包括錄入生產、流通和銷售的信息。在每個錄入環節中提供了相關工作人員證明的新服務點,目的是當出現問題時,責任可以落實到個人。 發布醫藥的運輸和銷售信息界面如圖6、圖7所示。
(3)消費者查詢醫藥的生產信息。在為消費者提供的查詢服務中,只需輸入醫藥編號,即可查到該藥物生產、流通、銷售數據等的全部信息??梢跃唧w到生產日期、廠商和地址等,查詢醫藥的生產信息界面如圖8所示。

圖5 發布醫藥生產信息界面
在查詢醫藥的流通和銷售中,包括追溯到的發貨方、出庫證明人員、物流和藥店地址等數據信息。利用區塊鏈技術對醫藥全面記錄,有利于消費者對醫藥質量的信任,如圖9和圖10所示。

圖6 發布醫藥流通信息

圖7 發布醫藥銷售信息

圖8 查詢醫藥生產信息

圖9 查詢醫藥流通信息

圖10 查詢醫藥銷售信息
區塊鏈技術賦予了追溯行業新的活力。利用聯盟鏈的數據公開透明與隱私保護,本系統通過數據的同步驗證,更新狀態數據庫,再通過每個交易請求的身份驗證和有效的加密機制,能夠將追溯的全部過程信息落實到個人,以便追責。它保障了追溯到的信息安全可靠,解決了一直以來的“難追溯”、“追溯信息不全”等問題。具有很高的擴展性,在醫藥以及其他領域中可以發揮更好的作用。