徐 暢 陳煥新 李正飛 韓林志 朱 波 龔麒鑒
(華中科技大學(xué)能源與動(dòng)力工程學(xué)院 武漢 430074)
互聯(lián)網(wǎng)、大數(shù)據(jù)與人工智能的快速發(fā)展為各行各業(yè)帶來(lái)了新的機(jī)遇和挑戰(zhàn)[1],“互聯(lián)網(wǎng)+”的模式也成為各行各業(yè)的研究熱點(diǎn)。有關(guān)空調(diào)領(lǐng)域的大數(shù)據(jù)和智能化已有很多研究成果[2-5],但由于數(shù)據(jù)存儲(chǔ)和共享機(jī)制的不完善,使得很多珍貴的運(yùn)行數(shù)據(jù)沒(méi)有得到及時(shí)的保存和共享流通,這是制約空調(diào)大數(shù)據(jù)和智能化進(jìn)一步發(fā)展的重要因素。
區(qū)塊鏈技術(shù)作為一種數(shù)據(jù)管理的底層技術(shù),通過(guò)構(gòu)建一個(gè)去中心化的分布式數(shù)據(jù)庫(kù),可以將存儲(chǔ)于數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行全網(wǎng)共識(shí),以達(dá)到對(duì)數(shù)據(jù)的完全可信、不可篡改和高度安全的有效管理。2008年,中本聰發(fā)表了《Bitcoin:A Peer-to-Peer Electronic Cash System》,使得區(qū)塊鏈技術(shù)以比特幣的身份被大眾所認(rèn)知[6-7]。2014年,以太坊平臺(tái)的搭建和智能合約的引入,標(biāo)志著區(qū)塊鏈2.0時(shí)代的到來(lái),使得區(qū)塊鏈技術(shù)作為一種更為先進(jìn)的數(shù)據(jù)管理模式被引入各行各業(yè),促進(jìn)各行業(yè)的智能化發(fā)展。其中基于區(qū)塊鏈的醫(yī)療系統(tǒng)電子病歷存儲(chǔ)平臺(tái)一直是近幾年的研究熱點(diǎn)之一。國(guó)內(nèi)最具代表性的是阿里健康區(qū)塊鏈與常州市合作醫(yī)聯(lián)體的試點(diǎn)項(xiàng)目[8],它是國(guó)內(nèi)首個(gè)醫(yī)療場(chǎng)景的成功應(yīng)用案例,并在逐漸擴(kuò)大其應(yīng)用范圍。在國(guó)外,“區(qū)塊鏈+醫(yī)療數(shù)據(jù)”的應(yīng)用層面則較為領(lǐng)先,A. Azaria等[9]利用以太坊區(qū)塊鏈,實(shí)現(xiàn)了名為MedRec的醫(yī)療、區(qū)塊鏈和大數(shù)據(jù)相結(jié)合的醫(yī)療信息共享平臺(tái)。Z. Shae等[10]開發(fā)了一種用于臨床試驗(yàn)和精準(zhǔn)醫(yī)療的區(qū)塊鏈平臺(tái)架構(gòu),確定了4個(gè)需要在傳統(tǒng)區(qū)塊鏈之上構(gòu)建的新系統(tǒng)架構(gòu)組件,并討論了其在區(qū)塊鏈平臺(tái)上面臨的技術(shù)挑戰(zhàn)。在研究層面, Fan Kai等[11]提出了基于區(qū)塊鏈的信息管理系統(tǒng)MedBlock來(lái)處理患者的信息,該框架改進(jìn)了共識(shí)算法,使其不存在較大的能耗和網(wǎng)絡(luò)擁塞,并且結(jié)合了定制的訪問(wèn)控制協(xié)議和對(duì)稱加密技術(shù),具有很高的信息安全性。T. Mikula等[12]提出一個(gè)基于超級(jí)賬本區(qū)塊鏈的身份認(rèn)證和訪問(wèn)管理的系統(tǒng)原型去完成對(duì)醫(yī)患電子版病歷的授權(quán)和身份認(rèn)證。H. Kaur等[13]將云環(huán)境與區(qū)塊鏈相結(jié)合,提出一種醫(yī)療電子病歷存儲(chǔ)和管理平臺(tái),由醫(yī)生、患者和健康保險(xiǎn)提供商三個(gè)主要元素組成。Yue Xiao等[14]介紹了一種健康數(shù)據(jù)控制通道,是一種基于區(qū)塊鏈技術(shù)的新型健康體系結(jié)構(gòu),使患者能夠輕松、安全地控制和共享他們的數(shù)據(jù)而不泄露。P. Zhang等[15]以區(qū)塊鏈為基礎(chǔ),從技術(shù)角度提供了可行性和預(yù)期能力方面的分布式醫(yī)療保健應(yīng)用程序(DApps)評(píng)估指標(biāo)。
綜上可知,區(qū)塊鏈技術(shù)已初步應(yīng)用于醫(yī)療領(lǐng)域的關(guān)鍵數(shù)據(jù)存儲(chǔ),它的存在打破了企業(yè)與企業(yè)之間、企業(yè)與個(gè)人之間和個(gè)人與個(gè)人之間的數(shù)據(jù)信任隔閡,使數(shù)據(jù)能像資源一樣高效流轉(zhuǎn)。醫(yī)療電子病歷是將人的醫(yī)療關(guān)鍵數(shù)據(jù)進(jìn)行電子檔案記錄,而在空調(diào)故障診斷領(lǐng)域,也可以將空調(diào)產(chǎn)品故障關(guān)鍵數(shù)據(jù)記錄為電子檔案,我們將記錄空調(diào)產(chǎn)品故障關(guān)鍵數(shù)據(jù)的電子檔案稱為空調(diào)產(chǎn)品電子病歷。對(duì)于空調(diào)產(chǎn)品電子病歷而言,也需要一種能夠達(dá)到完全可信、不可篡改的數(shù)據(jù)存儲(chǔ)平臺(tái),但目前并沒(méi)有針對(duì)該方面的研究。為此,本文首次提出一種基于區(qū)塊鏈技術(shù)的空調(diào)產(chǎn)品電子病歷共享方案,使空調(diào)的關(guān)鍵數(shù)據(jù)可以突破企業(yè)與企業(yè)之間的信任壁壘,最終形成企業(yè)與企業(yè)之間的數(shù)據(jù)完全信任流通。
區(qū)塊鏈作為一種分布式存儲(chǔ)的底層技術(shù),通過(guò)去中心化來(lái)保證數(shù)據(jù)不單只存儲(chǔ)在一個(gè)節(jié)點(diǎn)中,而是以一種超高冗余的方式存儲(chǔ)在所有共識(shí)節(jié)點(diǎn)當(dāng)中,所有節(jié)點(diǎn)對(duì)所存儲(chǔ)的數(shù)據(jù)達(dá)成共識(shí),從而保證任何單一或少許的節(jié)點(diǎn)無(wú)法更改區(qū)塊鏈中的數(shù)據(jù)。區(qū)塊鏈的服務(wù)框架不同于傳統(tǒng)的中心化服務(wù)框架,而是提供了一個(gè)點(diǎn)對(duì)點(diǎn)(peer to peer,P2P)的服務(wù)體系,即每個(gè)節(jié)點(diǎn)都能在全節(jié)點(diǎn)共識(shí)的基礎(chǔ)上參與數(shù)據(jù)的存儲(chǔ)、封裝和調(diào)用。區(qū)塊鏈框架模式與中心化框架模式如圖1和圖2所示。
圖1 區(qū)塊鏈模式
圖2 中心化模式
除了P2P技術(shù)以外,區(qū)塊鏈還引入了哈希計(jì)算、非對(duì)稱加密和共識(shí)算法等技術(shù),以保證區(qū)塊鏈數(shù)據(jù)在流通中的絕對(duì)安全。
哈希算法又稱單向散列函數(shù),該算法將任意長(zhǎng)度的二進(jìn)制值映射為較短的固定長(zhǎng)度的二進(jìn)制值,這個(gè)小的二進(jìn)制值稱為哈希碼[16]。本文所使用的SHA256是SHA密碼散列家族的一種,通過(guò)一定的算法,可將任意二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為256位的二進(jìn)制碼。其特點(diǎn)如下:
1) 對(duì)于任意長(zhǎng)度的二進(jìn)制文件,通過(guò)SHA256,均能生成一組256位的二進(jìn)制碼。
2) 可以通過(guò)文本數(shù)據(jù)x推出哈希碼SHA256(x),但是SHA256(x)不能逆推出文本數(shù)據(jù)x。
3) 任何文本文件都僅有唯一的哈希碼作為標(biāo)識(shí),哈希碼與文本數(shù)據(jù)一一對(duì)應(yīng)。
由于哈希計(jì)算具有固定長(zhǎng)度、計(jì)算不可逆和與輸入數(shù)據(jù)一一對(duì)應(yīng)的特點(diǎn),當(dāng)我們將上傳至平臺(tái)的數(shù)據(jù)按照一定規(guī)律整合后輸入給哈希算法,最終得出的哈希碼可以作為該數(shù)據(jù)的唯一標(biāo)識(shí),任何對(duì)數(shù)據(jù)微小的篡改均可使該哈希碼與之前大不相同,這樣就可極大提高數(shù)據(jù)的安全性。
圖4 區(qū)塊鏈數(shù)據(jù)封裝流程
表1 不同Nonce下生成的哈希碼
非對(duì)稱加密最早在1976年由W. Diffie等[17]提出,在傳統(tǒng)的對(duì)稱加密中,加密密碼和解密密碼是一致的,這就導(dǎo)致數(shù)據(jù)文件的密碼很容易在傳輸過(guò)程中被截取并破譯。非對(duì)稱加密是由一對(duì)公鑰和私鑰共同進(jìn)行文件加密,將公鑰和私鑰通過(guò)特定的算法關(guān)聯(lián)后,將私鑰自我保存且不在網(wǎng)上流通,又將公鑰發(fā)布于網(wǎng)上,在進(jìn)行重要的文件傳輸時(shí),發(fā)送者將用接收方的公鑰加密后的數(shù)據(jù)發(fā)送給接收方,接收方再用自己的私鑰進(jìn)行解密,這樣,在整個(gè)數(shù)據(jù)流通過(guò)程中,私鑰都不會(huì)在網(wǎng)上流通,從而保證了數(shù)據(jù)在流通過(guò)程中的安全性。公私鑰加密傳輸流程如圖3所示。
圖3 公私鑰加密傳輸流程
由于區(qū)塊鏈平臺(tái)并沒(méi)有一個(gè)中心化的服務(wù)端來(lái)處理信息,所以需要通過(guò)特定的共識(shí)算法“選舉”出一個(gè)節(jié)點(diǎn),用于處理一段時(shí)間內(nèi)的所有數(shù)據(jù)并封裝為一個(gè)區(qū)塊,然后廣播給全網(wǎng)進(jìn)行共識(shí)。
本文所采用的共識(shí)算法是工作量證明(proof of work, POW)算法,POW算法會(huì)提前設(shè)定一個(gè)整體的難度系數(shù)n,然后在所有區(qū)塊信息整合后添加一個(gè)名為Nonce且初始值為0的變量,再計(jì)算整個(gè)區(qū)塊的哈希碼。如表1所示,相同文本下不同Nonce值可以得到完全不同的哈希碼,若得出的256位哈希碼前n(難度系數(shù))項(xiàng)均為0,則判斷挖礦成功,否則就更換Nonce的值,直到產(chǎn)生滿足該難度系數(shù)的哈希碼為止。第一個(gè)創(chuàng)建出滿足條件的哈希碼的節(jié)點(diǎn)將被授權(quán)參與這次區(qū)塊的封裝,按照?qǐng)D4的流程封裝數(shù)據(jù)后會(huì)廣播全網(wǎng)絡(luò)使其達(dá)成全網(wǎng)共識(shí)。具體可參考文獻(xiàn)[18]。
當(dāng)前所有的區(qū)塊鏈大致可分為三類,即公有鏈、聯(lián)盟鏈和私有鏈[19],其特點(diǎn)分別如下:
1) 公有鏈:公有鏈的所有數(shù)據(jù)均向所有人公開,按照一定的規(guī)則,任何人均能隨時(shí)參與或退出公有鏈的封裝和數(shù)據(jù)共識(shí)的過(guò)程,任何人均有權(quán)限下載公有鏈上的所有數(shù)據(jù),且整條鏈上的數(shù)據(jù)均經(jīng)過(guò)全網(wǎng)共識(shí),保證了人與人之間在不相識(shí)的基礎(chǔ)上對(duì)數(shù)據(jù)流通的絕對(duì)信任。
2) 聯(lián)盟鏈:聯(lián)盟鏈參與者追求公平和透明的協(xié)作模式,且各節(jié)點(diǎn)沒(méi)有必須互信的前提,能實(shí)現(xiàn)數(shù)據(jù)的可信交換功能[20]。聯(lián)盟鏈的每個(gè)節(jié)點(diǎn)都與實(shí)體機(jī)構(gòu)單位一一對(duì)應(yīng),授權(quán)成功后能加入或退出網(wǎng)絡(luò)。聯(lián)盟鏈的數(shù)據(jù)是準(zhǔn)許系統(tǒng)內(nèi)成員讀寫和交易的行為。
3) 私有鏈:私有鏈作為僅有少數(shù)節(jié)點(diǎn)能被允許參與的區(qū)塊鏈,被用來(lái)突破少數(shù)人之間的數(shù)據(jù)信任,適用場(chǎng)景遠(yuǎn)沒(méi)有公有鏈和聯(lián)盟鏈廣泛。
由于私有鏈網(wǎng)絡(luò)僅在私有組織內(nèi)部使用,使用范圍較窄,所以私有鏈種類不做考慮。
公有鏈與聯(lián)盟鏈各有優(yōu)劣,聯(lián)盟鏈屬于半中心化的區(qū)塊鏈,被用于構(gòu)建聯(lián)盟內(nèi)部的信任映射,由于共識(shí)節(jié)點(diǎn)較少,所以存儲(chǔ)成本和共識(shí)消耗均遠(yuǎn)小于公有鏈,且在聯(lián)盟大部分成員達(dá)成一致時(shí)可對(duì)聯(lián)盟鏈中的數(shù)據(jù)加以修改,但安全性沒(méi)有公有鏈高,且不可在聯(lián)盟鏈外進(jìn)行信任映射。由于本空調(diào)產(chǎn)品電子病歷共享平臺(tái)是為了突破企業(yè)與企業(yè)、企業(yè)與個(gè)人、個(gè)人與個(gè)人之間的信任隔閡,所以采用公有鏈種類的區(qū)塊鏈框架。
圖5 空調(diào)產(chǎn)品電子病歷共享平臺(tái)框架
本文設(shè)計(jì)的區(qū)塊鏈平臺(tái)目前有三大功能模塊,分別是賬戶創(chuàng)建、空調(diào)產(chǎn)品電子病歷查詢和數(shù)據(jù)上傳,而由于本文的平臺(tái)是公有鏈,所以查詢電子病歷無(wú)需身份認(rèn)證,在用戶需要上傳數(shù)據(jù)時(shí),需先向服務(wù)端申請(qǐng)創(chuàng)建賬戶地址,創(chuàng)建后會(huì)獲取一個(gè)公鑰與一個(gè)賬戶地址,其中賬戶與公鑰對(duì)應(yīng)的私鑰相關(guān)聯(lián),并由自己保管。在上傳數(shù)據(jù)時(shí),除了要上傳電子病歷所需信息外,還需加入自己的地址信息,平臺(tái)將該地址信息進(jìn)行合法性認(rèn)證后,會(huì)調(diào)用其對(duì)應(yīng)私鑰,并將私鑰信息生成對(duì)應(yīng)的公鑰,接著將數(shù)據(jù)文件連同提交賬戶的公鑰信息一起進(jìn)行哈希計(jì)算,生成數(shù)據(jù)哈希碼后再連同私鑰信息進(jìn)行封裝,最終獲取該信息塊該賬戶下的數(shù)字簽名,以表示該電子病歷的信息真實(shí)由該賬戶上傳,具有不可偽造且不可否認(rèn)的特性。其中一個(gè)完整的區(qū)塊和一組空調(diào)產(chǎn)品電子病歷所含數(shù)據(jù)如表2所示。
表2 區(qū)塊和單組空調(diào)產(chǎn)品電子病歷所含數(shù)據(jù)
空調(diào)產(chǎn)品電子病歷共享平臺(tái)框架如圖5所示。在一定時(shí)間內(nèi),整個(gè)平臺(tái)獲取的信息數(shù)將被統(tǒng)一收集起來(lái),以數(shù)組的形式被暫存于節(jié)點(diǎn)中,當(dāng)該時(shí)段封裝區(qū)塊的節(jié)點(diǎn)被選出后,會(huì)將所有的數(shù)據(jù)連同時(shí)間、Nonce值、上一區(qū)塊哈希碼、該區(qū)塊哈希碼、區(qū)塊高度等信息進(jìn)行封裝,并達(dá)到全網(wǎng)共識(shí)。
本空調(diào)產(chǎn)品電子病歷共享平臺(tái)采用GO+JavaScript+HTML進(jìn)行前后端編寫,數(shù)據(jù)庫(kù)采用BoltDB數(shù)據(jù)庫(kù)。
本文所搭建的平臺(tái)的主頁(yè)面屬于引導(dǎo)頁(yè)面,分別導(dǎo)向注冊(cè)賬戶、查詢電子病歷信息和上傳數(shù)據(jù)三個(gè)功能模塊,主頁(yè)面如圖6所示。
圖6 空調(diào)產(chǎn)品電子病歷主頁(yè)
對(duì)于注冊(cè)賬戶模塊來(lái)說(shuō),由于該平臺(tái)屬于全網(wǎng)共享的區(qū)塊鏈平臺(tái)且不存在貨幣交易機(jī)制,所以本平臺(tái)簡(jiǎn)化了賬戶注冊(cè)模塊,并將賬戶地址與私鑰信息相關(guān)聯(lián),在使用賬戶地址時(shí)平臺(tái)會(huì)自動(dòng)調(diào)用其私鑰信息進(jìn)行驗(yàn)證,帳戶注冊(cè)頁(yè)面如圖7所示。
圖7 賬戶注冊(cè)頁(yè)面
當(dāng)我們獲取一個(gè)賬戶信息后,就可開始進(jìn)行數(shù)據(jù)上傳,在該時(shí)間段的區(qū)塊生成后,就可在信息查詢模塊中獲取該時(shí)間段的所有區(qū)塊信息,數(shù)據(jù)上傳和數(shù)據(jù)查詢頁(yè)面如圖8和圖9所示,區(qū)塊詳細(xì)信息如圖10所示。
在空調(diào)產(chǎn)品電子病歷查詢界面,會(huì)顯示所有區(qū)塊的當(dāng)前哈希碼和上一區(qū)塊哈希碼,使得整個(gè)區(qū)塊信息哈希碼成鏈狀分布,且在查詢信息時(shí)對(duì)單組信息還會(huì)顯示發(fā)布者公鑰信息與電子病歷的整體哈希碼,在數(shù)據(jù)層面任何微小的改變都會(huì)使哈希碼與之前大不相同,這樣就保證了數(shù)據(jù)的不可篡改,大大提高數(shù)據(jù)的可信度。
圖8 數(shù)據(jù)上傳頁(yè)面
圖9 空調(diào)產(chǎn)品電子病歷信息查詢頁(yè)面
區(qū)塊鏈技術(shù)同傳統(tǒng)中心化服務(wù)框架相比,是通過(guò)犧牲算力和承擔(dān)高度冗余的存儲(chǔ)成本來(lái)?yè)Q取數(shù)據(jù)的不可篡改和絕對(duì)安全可信的能力。所以對(duì)于任何區(qū)塊鏈平臺(tái)而言,其存儲(chǔ)成本和共識(shí)算法算力消耗一直是區(qū)塊鏈平臺(tái)研究的核心內(nèi)容。
著名的比特幣平臺(tái)的數(shù)據(jù)存儲(chǔ)量的規(guī)模從早些年的20 GB升至300 GB(2020年),而且目前依然保持著超高的增長(zhǎng)速度。如此高額的數(shù)據(jù)存儲(chǔ)成本為每個(gè)共識(shí)節(jié)點(diǎn)帶來(lái)了巨大的存儲(chǔ)負(fù)擔(dān)。所以本文將對(duì)該空凋產(chǎn)品電子病歷共享平臺(tái)進(jìn)行相關(guān)測(cè)試。其出塊時(shí)間和數(shù)據(jù)存儲(chǔ)成本如圖11和圖12所示。
圖11 難度系數(shù)16下POW出塊時(shí)間
圖12 平臺(tái)數(shù)據(jù)存儲(chǔ)成本分析
由圖11和圖12可知,難度系數(shù)16的POW算法出塊時(shí)間不穩(wěn)定,但是出塊時(shí)間范圍一般穩(wěn)定在10 s以內(nèi),在數(shù)據(jù)存儲(chǔ)成本方面,由于不涉及貨幣交易等繁瑣的交易數(shù)據(jù),而是單純的保存所上傳的電子病歷數(shù)據(jù),所以存儲(chǔ)成本很低,在上傳電子病例數(shù)在105以上時(shí),平均每個(gè)電子病歷數(shù)據(jù)所占空間約為2 kB,在保證數(shù)據(jù)絕對(duì)安全可信、不可篡改的基礎(chǔ)上,存儲(chǔ)成本依然較低。
本文首次提出了一種基于區(qū)塊鏈的空調(diào)產(chǎn)品電子病歷共享方案,旨在構(gòu)建一個(gè)去第三方信任去中心化的數(shù)據(jù)平臺(tái),得到如下結(jié)論:
1) 基于區(qū)塊鏈的空調(diào)產(chǎn)品電子病歷平臺(tái)上傳的任何數(shù)據(jù)都有唯一的哈希碼與其一一對(duì)應(yīng),且所有區(qū)塊都通過(guò)哈希碼鏈接,做鏈狀排列,任何篡改的舉措都會(huì)使整個(gè)區(qū)塊鏈的哈希碼與之前大不相同,保障了數(shù)據(jù)不可篡改。
2) 該平臺(tái)是全網(wǎng)共識(shí)的數(shù)據(jù)平臺(tái),任何人都只能按照平臺(tái)僅有的操作方法編寫查看區(qū)塊鏈的數(shù)據(jù),從而保證了數(shù)據(jù)在共享過(guò)程中不會(huì)受到任意一方支配。它使空調(diào)故障的關(guān)鍵數(shù)據(jù)突破了個(gè)人、企業(yè)之間的信任隔閡,達(dá)到絕對(duì)真實(shí)、完全可信且不可篡改的空調(diào)關(guān)鍵數(shù)據(jù)流通與存儲(chǔ)。
3) 由于本區(qū)塊鏈不涉及貨幣交易等繁瑣的交易數(shù)據(jù),使其在存儲(chǔ)成本上遠(yuǎn)小于包含交易內(nèi)容的區(qū)塊鏈平臺(tái)。