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