吳源昊,解 大,王 宇
1(上海交通大學(xué) 電子信息與電氣工程學(xué)院,上海 200240)
2(華東建筑設(shè)計(jì)研究院,上海 200070)
近期,我國(guó)發(fā)生新型冠狀病毒感染的肺炎疫情,根據(jù)中華人民共和國(guó)國(guó)家衛(wèi)生健康委員會(huì)公告[1],將新型冠狀病毒感染的肺炎納入《中華人民共和國(guó)傳染病防治法》規(guī)定的乙類傳染病,并采取甲類傳染病的預(yù)防、控制措施.
根據(jù)2013年修訂的《中華人民共和國(guó)傳染病防治法》第四章規(guī)定,采取甲類傳染病的預(yù)防、控制措施時(shí),對(duì)病人、病原攜帶者,予以隔離治療,隔離期限根據(jù)醫(yī)學(xué)檢查結(jié)果確定;對(duì)疑似病人,確診前在指定場(chǎng)所單獨(dú)隔離治療;對(duì)醫(yī)療機(jī)構(gòu)內(nèi)的病人、病原攜帶者、疑似病人的密切接觸者,在指定場(chǎng)所進(jìn)行醫(yī)學(xué)觀察和采取其他必要的預(yù)防措施.拒絕隔離治療或者隔離期未滿擅自脫離隔離治療的,可以由公安機(jī)關(guān)協(xié)助醫(yī)療機(jī)構(gòu)采取強(qiáng)制隔離治療措施.
與流行傳染病患者密切接觸的人,自身被感染的風(fēng)險(xiǎn)很高,并且有可能進(jìn)一步傳染他人.因此,追蹤并觀察這些密切接觸者有助于這些高危人群第一時(shí)間得到護(hù)理和治療,并防止病毒進(jìn)一步擴(kuò)展,這也是流行病控制的關(guān)鍵[2].大數(shù)據(jù)能夠在對(duì)接觸者追蹤、數(shù)據(jù)預(yù)測(cè)和流行病學(xué)傳播模型建立等方面具有重要的意義.利用大數(shù)據(jù)的手段對(duì)確診病例、疑似病例人員進(jìn)行追蹤、監(jiān)管,在保護(hù)個(gè)人隱私的情況下,挖掘其人員流動(dòng)信息,篩查同行人員,從而對(duì)密切接觸人群進(jìn)行重點(diǎn)觀察和隔離預(yù)防,對(duì)防止傳染病疫情擴(kuò)散將大有幫助.
2月4日工信部發(fā)布《充分發(fā)揮人工智能賦能效用協(xié)力抗擊新型冠狀病毒感染的肺炎疫情倡議書》,2月26日國(guó)家衛(wèi)健委公布《近期防控新型冠狀病毒感染的肺炎工作方案》要求利用大數(shù)據(jù)等技術(shù)開展人員追蹤.
基于區(qū)塊鏈技術(shù),以地點(diǎn)坐標(biāo)為區(qū)塊建立基礎(chǔ)鏈來(lái)做數(shù)據(jù)的記錄,并以被監(jiān)測(cè)人員為區(qū)塊建立虛擬鏈來(lái)做數(shù)據(jù)的校驗(yàn)和查詢,組成雙重區(qū)塊鏈;利用用戶在網(wǎng)絡(luò)平臺(tái)等環(huán)境下的動(dòng)作記錄來(lái)反映其位置信息,并存儲(chǔ)在區(qū)塊鏈中.由此建立人員流動(dòng)信息監(jiān)管系統(tǒng),并授予公安機(jī)關(guān)和疾控中心查詢權(quán)限,能高效地查到確診患者、疑似病例或是疫區(qū)流出人員的流動(dòng)軌跡和密切接觸者,有效展開疫情防控工作.
在當(dāng)前技術(shù)條件下,通過(guò)基站數(shù)據(jù)(手機(jī)定位)、支付數(shù)據(jù)(微信、支付寶、銀聯(lián)等)、出行數(shù)據(jù)(列車、航班、住宿)、城市公共安全視頻監(jiān)控(人臉識(shí)別)等建立大數(shù)據(jù)融合平臺(tái),通過(guò)區(qū)塊鏈技術(shù)實(shí)現(xiàn)各部門各行業(yè)各地區(qū)的數(shù)據(jù)融合,充分利用物聯(lián)網(wǎng)設(shè)備的邊緣計(jì)算能力、充分利用資源.區(qū)塊鏈技術(shù)保證了大量數(shù)據(jù)在傳輸過(guò)程和存儲(chǔ)過(guò)程中的可靠性、自動(dòng)化、便捷性.
以大寫字母BM 表示系統(tǒng)協(xié)議,如代碼、節(jié)點(diǎn)、網(wǎng)絡(luò)及其對(duì)等交互.
以小寫字母bm 表示個(gè)人身份,即對(duì)個(gè)人身份的信息作定義,如某一個(gè)人的身份證以及所對(duì)應(yīng)的護(hù)照ID、手機(jī)號(hào)碼、車輛車牌號(hào)碼、支付寶賬戶、微信賬戶、銀行卡號(hào)、人臉識(shí)別認(rèn)證信息、所屬單位一卡通等能確定個(gè)人身份的信息,確定其為區(qū)塊鏈中的某一個(gè)人,定義為bitman.
一個(gè)transaction 記為tx 表示某個(gè)人在某一確定時(shí)間的人員流動(dòng)信息記錄,從A 地流動(dòng)至B 地.
txid 是transaction ID 的縮寫,即系統(tǒng)協(xié)議引用人員流動(dòng)信息的哈希值.
某個(gè)坐標(biāo)節(jié)點(diǎn)(coordinate),如居住地、商場(chǎng)/商店、某個(gè)醫(yī)院/學(xué)校辦公樓的某個(gè)區(qū)域、飛機(jī)航班、高鐵班次,作為一個(gè)坐標(biāo)節(jié)點(diǎn)的地址,即為區(qū)塊鏈(Blockchain)中的區(qū)塊.
Yuanhao 表示某個(gè)坐標(biāo)節(jié)點(diǎn)中bitman 人口數(shù)量,1 btm = 1 bm(Y).
一個(gè)人員流動(dòng)信息(transaction)的周期[3]為:
1)當(dāng)某人從A 地流動(dòng)至B 地,某坐標(biāo)地發(fā)出人員流動(dòng)信息交換請(qǐng)求;
2)廣播人員交換請(qǐng)求到P2P 網(wǎng)絡(luò);
3)驗(yàn)證人員流動(dòng)信息的正確性;
4)多個(gè)人員流動(dòng)信息組成一個(gè)區(qū)塊;
5)新的區(qū)塊加入到一個(gè)已經(jīng)存在的區(qū)塊鏈中;
6)人員流動(dòng)信息確定完成.
人員流動(dòng)信息記錄原理如圖1所示.
圖1 人員流動(dòng)信息記錄原理
記錄人員流動(dòng)信息時(shí),如何確定一個(gè)人的身份,也就是如何證明“你是你”的問(wèn)題.為了證明一個(gè)人到過(guò)一個(gè)地方,可以把所有可以證明身份的信息,如身份證號(hào)、護(hù)照號(hào)、手機(jī)號(hào)、擁有車輛的車牌號(hào)、微信賬戶、支付寶賬戶、銀行卡信息、人臉識(shí)別認(rèn)證信息等,人員的這些身份信息為私鑰;將這些信息全部綁定至身份證號(hào)或護(hù)照號(hào),身份證號(hào)或護(hù)照號(hào)是區(qū)塊鏈中的公鑰;再生成一個(gè)屬于個(gè)人的身份哈希,作為公鑰的哈希值,也就是在區(qū)塊鏈網(wǎng)絡(luò)中用于保存和查詢的值.不同環(huán)境的人員監(jiān)控措施如表1所示.
當(dāng)某個(gè)坐標(biāo)地址(coordinate)讀取到個(gè)人信息時(shí),如某人在酒店用身份證+人臉識(shí)別進(jìn)行登記、在辦公地出入口刷門禁卡或用身份證進(jìn)行訪客登記、在某商店/飯店消費(fèi)時(shí)使用微信付款,此時(shí)系統(tǒng)會(huì)生成一個(gè)坐標(biāo)地址,并在區(qū)塊鏈系統(tǒng)中廣播.
此系統(tǒng)實(shí)現(xiàn)的基礎(chǔ)是監(jiān)控設(shè)備(如攝像頭、讀卡器等)的物聯(lián)網(wǎng)化[4],監(jiān)控設(shè)備必須是帶網(wǎng)絡(luò)地址的物聯(lián)網(wǎng)設(shè)備,并具有一定的邊緣計(jì)算能力,可以保持互聯(lián)網(wǎng)連接狀態(tài)[5].
表1 不同環(huán)境的人員監(jiān)控措施
當(dāng)某人從A 地流動(dòng)到B 地,記錄一個(gè)人員流動(dòng)信息的tx,需由B 地確認(rèn)人員信息后,再由A 地使用簽名算法對(duì)人員流出進(jìn)行確認(rèn),人員流動(dòng)信息確認(rèn)過(guò)程如圖2所示.
圖2 人員流動(dòng)信息確認(rèn)過(guò)程
圖2是某人從A 地到B 地流動(dòng)時(shí),兩地對(duì)單次人員流動(dòng)信息進(jìn)行確認(rèn)的過(guò)程.A 地和B 地是網(wǎng)絡(luò)中的兩個(gè)不同的位置節(jié)點(diǎn),當(dāng)某人從A 地轉(zhuǎn)移到B 地時(shí),在轉(zhuǎn)出A 地時(shí)A 地廣播了這個(gè)消息,B 地在獲取此人的身份信息后在網(wǎng)絡(luò)中查詢了此人的轉(zhuǎn)出地,確認(rèn)此人原先所在地是A 地并請(qǐng)求與A 地連接通信.然后A 地對(duì)B 地發(fā)送此人的流出請(qǐng)求和流動(dòng)信息,B 地收到A 地的信息,且發(fā)送給A 地此人流動(dòng)到B 地的信息.
兩地發(fā)送的信息中包含了此人的身份信息(對(duì)應(yīng)的身份證號(hào))、到達(dá)時(shí)間、兩地坐標(biāo)信息等.為了讓A、B 兩地同時(shí)確認(rèn)此人從A 地流動(dòng)到B 地,并在網(wǎng)絡(luò)中取得認(rèn)可,需要有一個(gè)轉(zhuǎn)入/轉(zhuǎn)出簽名和確認(rèn)的過(guò)程:A 地把轉(zhuǎn)出人員請(qǐng)求、轉(zhuǎn)出人員身份信息、A 地坐標(biāo)地址、人員轉(zhuǎn)入的地址(B 地坐標(biāo)地址)等打包作為待簽名數(shù)據(jù),并附上A 地的轉(zhuǎn)出簽名,發(fā)送給B 地;B 地確認(rèn)后,附上B 地的轉(zhuǎn)入簽名,一個(gè)完整的人員流動(dòng)信息即創(chuàng)建成功,該信息也可以發(fā)送給網(wǎng)絡(luò)中其他節(jié)點(diǎn)進(jìn)行驗(yàn)證.
例如人員甲,從A 地轉(zhuǎn)出,在某時(shí)某刻到達(dá)B 地,則B 地和A 地所發(fā)布的人員流動(dòng)信息如圖3所示.
圖3 人員流動(dòng)信息的發(fā)布
此時(shí),區(qū)塊鏈對(duì)應(yīng)的相關(guān)區(qū)塊會(huì)對(duì)發(fā)布的信息做校驗(yàn),如圖4所示.
圖4 人員流動(dòng)信息校驗(yàn)
如果校驗(yàn)時(shí)發(fā)現(xiàn)人員流動(dòng)信息有矛盾之處,如A地發(fā)布的是北京到上海的列車信息且此刻列車沒(méi)有到達(dá),而B 地發(fā)布的是到達(dá)廣州的航班信息,那么此次的人員流動(dòng)信息是矛盾不成立的,校驗(yàn)失敗則不能在系統(tǒng)中記錄此次人員流動(dòng)信息.如果A、B 兩地的人員身份一致且信息沒(méi)有矛盾,則校驗(yàn)通過(guò)并在系統(tǒng)中記錄這一次人員流動(dòng)信息.
通過(guò)這個(gè)過(guò)程,某個(gè)人員流動(dòng)的單位信息在系統(tǒng)中建立完成.
傳統(tǒng)的數(shù)字貨幣的區(qū)塊鏈,區(qū)塊的主體是賬本,交易時(shí)是由賬本的節(jié)點(diǎn)向全網(wǎng)廣播交易記錄,數(shù)字貨幣的交易也只記錄交易數(shù)額.
而人員流動(dòng)信息監(jiān)管系統(tǒng)的區(qū)塊鏈,由于查詢和校驗(yàn)的需求,可由以坐標(biāo)地點(diǎn)為區(qū)塊的基礎(chǔ)鏈和以被監(jiān)測(cè)人員為區(qū)塊的虛擬鏈組成雙重區(qū)塊鏈.
人員流動(dòng)信息由坐標(biāo)地點(diǎn)來(lái)發(fā)布,每一個(gè)具體的坐標(biāo)位置,如一間辦公室、一輛車、一架飛機(jī)、一節(jié)車廂甚至一個(gè)公共場(chǎng)所的走廊,都可以作為一個(gè)坐標(biāo)位置的節(jié)點(diǎn),成為在區(qū)塊鏈中的一個(gè)塊(block).每個(gè)區(qū)塊需要完整記錄當(dāng)前地點(diǎn)的人員流動(dòng)記錄,形成一個(gè)分布式的數(shù)據(jù)庫(kù),以地點(diǎn)為區(qū)塊的基礎(chǔ)區(qū)塊鏈如圖5所示.當(dāng)人員在某個(gè)區(qū)域內(nèi)流動(dòng)時(shí),系統(tǒng)能進(jìn)行自動(dòng)記錄,并進(jìn)行快速的自動(dòng)校驗(yàn);當(dāng)人員在跨區(qū)域流動(dòng)時(shí),機(jī)場(chǎng)、火車站、高速收費(fèi)站等重點(diǎn)位置的設(shè)備需進(jìn)行高優(yōu)先級(jí)的確認(rèn)校驗(yàn),有必要時(shí)采用人工錄入等手段.通過(guò)各地分布式數(shù)據(jù)庫(kù)記錄人員的位置信息,把區(qū)域內(nèi)和跨地區(qū)的流動(dòng)信息完整地儲(chǔ)存在區(qū)塊鏈中[5,6].
圖5 以地點(diǎn)為區(qū)塊的基礎(chǔ)區(qū)塊鏈
每個(gè)參與到人員流動(dòng)信息監(jiān)管系統(tǒng)區(qū)塊鏈中的位置節(jié)點(diǎn),如某個(gè)班次的高鐵/航班、某個(gè)酒店/商場(chǎng)/辦公樓等,可以是由業(yè)主自行申請(qǐng)的,也可以是政府通過(guò)政策強(qiáng)制執(zhí)行的.用戶通過(guò)調(diào)用平臺(tái)層的API,發(fā)布自己的站點(diǎn)服務(wù),這是為了讓系統(tǒng)用戶能便捷地訪問(wèn)其他用戶在系統(tǒng)平臺(tái)上的資源.平臺(tái)的系統(tǒng)合約由主管部門(疾控中心或者公安機(jī)關(guān))構(gòu)建,合約必須是考慮到今后系統(tǒng)使用時(shí)能解決各種狀況的智能合約,通過(guò)P2P 網(wǎng)絡(luò)擴(kuò)散到每個(gè)節(jié)點(diǎn),并存入?yún)^(qū)塊鏈.智能合約定期進(jìn)行自動(dòng)機(jī)狀態(tài)檢查,將滿足條件的事物進(jìn)行驗(yàn)證,達(dá)成共識(shí)后自動(dòng)執(zhí)行并通知用戶[6].
每個(gè)節(jié)點(diǎn)的地點(diǎn)位置為使用系統(tǒng)的私鑰,通過(guò)注冊(cè)申請(qǐng)后,由主管部門頒發(fā)登錄賬號(hào),作為登錄系統(tǒng)的公鑰,再通過(guò)公鑰的哈希值,也就是在區(qū)塊鏈網(wǎng)絡(luò)中用于保存和查詢的值,就可以生成節(jié)點(diǎn)所處的網(wǎng)絡(luò)地址,整個(gè)過(guò)程中除了哈希生成坐標(biāo)地址是可逆的,其他都是不可逆的,鏈入?yún)^(qū)塊鏈過(guò)程如圖6所示.
圖6 鏈入?yún)^(qū)塊鏈過(guò)程
此處的私鑰、公鑰不同于傳統(tǒng)金融貨幣區(qū)塊鏈的公鑰和私鑰,傳統(tǒng)區(qū)塊鏈的私鑰是私密的,且匿名的.但本系統(tǒng)的私鑰和公鑰都是實(shí)名的,私鑰被實(shí)名綁定到公鑰,便于查詢系統(tǒng)中的人員信息.私鑰信息由該節(jié)點(diǎn)的管理者保存,并由系統(tǒng)的管理部門備份.系統(tǒng)中私鑰和公鑰只是一種登錄系統(tǒng)或記錄信息的工具,并不需要傳統(tǒng)區(qū)塊鏈的私鑰和公鑰之間采用SECP256K 等加密方式,而是要采取實(shí)名認(rèn)證的處理方式,由管理部門介入,采取必要的措施并確認(rèn).由于系統(tǒng)中的信息涉及公民的隱私,為了防止信息泄露和濫用,保護(hù)隱私,不僅需要在技術(shù)層面上把系統(tǒng)的信息安全和加密方式做好層層防護(hù),還需要通過(guò)相關(guān)的政策法規(guī)來(lái)對(duì)系統(tǒng)的使用和信息進(jìn)行有力監(jiān)管.
此時(shí)生成一個(gè)以位置節(jié)點(diǎn)為賬本的區(qū)塊,每個(gè)區(qū)塊的結(jié)構(gòu)分為兩部分,即區(qū)塊頭和區(qū)塊體.
區(qū)塊頭包含version、prevBlockHash、merkleRoot、time 和attribute.version 記錄了區(qū)塊頭的版本號(hào),用于跟蹤軟件/協(xié)議的更新;prevBlockHash 記錄了該區(qū)塊的上一個(gè)區(qū)塊的Hash 地址;merkleRoot 記錄了該區(qū)塊中交易的merkle 樹根的哈希值;time 記錄了該區(qū)塊的創(chuàng)建時(shí)間戳;attribute 記錄了該區(qū)塊對(duì)應(yīng)的節(jié)點(diǎn)位置屬性.
區(qū)塊體的內(nèi)容是該區(qū)塊的人員流動(dòng)信息,包括人員流動(dòng)數(shù)量和人員流動(dòng)數(shù)據(jù).區(qū)塊體共分為3 部分:numTransactionsBytes、numTransactions 和transactions.numTransactionsBytes 記錄了流動(dòng)信息占用的字節(jié)數(shù);numTransactions 記錄了區(qū)塊內(nèi)的流動(dòng)信息數(shù)量;transactions 記錄了區(qū)塊內(nèi)保存的多個(gè)人員的流動(dòng)信息.
每個(gè)區(qū)塊中,把定位、時(shí)間、人員等信息保存在區(qū)塊體內(nèi),并生成一個(gè)區(qū)塊頭,用以鏈接前一區(qū)塊和后一區(qū)塊,節(jié)點(diǎn)位置區(qū)塊的生成和結(jié)構(gòu)如圖7所示.當(dāng)每一個(gè)新區(qū)塊生成時(shí),都會(huì)被打上時(shí)間戳,被保存在區(qū)塊頭內(nèi),最終依照區(qū)塊生成時(shí)間的先后順序相連組成區(qū)塊鏈,每個(gè)獨(dú)立節(jié)點(diǎn)又通過(guò)P2P 網(wǎng)絡(luò)建立聯(lián)系,這樣就為信息數(shù)據(jù)的記錄形成了一個(gè)去中心化的分布式時(shí)間戳服務(wù)系統(tǒng)[7,8].區(qū)塊頭內(nèi)還保存了API 的版本號(hào),當(dāng)系統(tǒng)發(fā)布軟件/協(xié)議更新時(shí),可以自動(dòng)更新下載.區(qū)塊體內(nèi)主要記錄人員流動(dòng)信息的內(nèi)容.
圖7 節(jié)點(diǎn)位置區(qū)塊的生成和結(jié)構(gòu)
以區(qū)、縣為基礎(chǔ)單位,組成地區(qū)區(qū)塊鏈;再以省、市為單位,組成聯(lián)合區(qū)塊鏈;在各行業(yè)內(nèi)部,如鐵路、空運(yùn)、公交、商業(yè)、金融等行業(yè),組成行業(yè)區(qū)塊鏈,人員流動(dòng)信息監(jiān)測(cè)管理系統(tǒng)區(qū)塊鏈架構(gòu)如圖8所示.
圖8 人員流動(dòng)信息監(jiān)測(cè)管理系統(tǒng)區(qū)塊鏈架構(gòu)
當(dāng)不同的行業(yè)和地區(qū)產(chǎn)生多重區(qū)塊鏈時(shí),可采用跨鏈技術(shù)實(shí)現(xiàn)跨鏈訪問(wèn)[9],如側(cè)鏈/中繼(sidechains/relays)、以太坊聯(lián)盟區(qū)塊網(wǎng)絡(luò)(Ethereum)、哈希鎖定(Hash-locking)等技術(shù),實(shí)現(xiàn)不同鏈中的信息轉(zhuǎn)移和使用[10].一鏈套一鏈,一環(huán)扣一環(huán),形成高效的人員流動(dòng)信息監(jiān)管系統(tǒng).
如果這個(gè)人員流動(dòng)信息監(jiān)管系統(tǒng)不是采用區(qū)塊鏈技術(shù),而是基于傳統(tǒng)集散式的系統(tǒng)形式,不僅在物理上需要建設(shè)多層級(jí)的控制中心、數(shù)據(jù)中心,且不同行業(yè)、不同部門之間的數(shù)據(jù)協(xié)調(diào)、信息統(tǒng)一都需要很長(zhǎng)時(shí)間來(lái)實(shí)現(xiàn),不同的管理部門也難以發(fā)布統(tǒng)一的系統(tǒng).
采用區(qū)塊鏈系統(tǒng),各單位都可以采用分布式系統(tǒng),利用已有設(shè)備進(jìn)行邊緣計(jì)算[11],不同行業(yè)和部門之間只要采用跨鏈技術(shù)就可以整合信息內(nèi)容,節(jié)省了大量的建設(shè)和協(xié)調(diào)時(shí)間.
通過(guò)系統(tǒng)中發(fā)布的人員流動(dòng)信息,以被監(jiān)測(cè)人員為區(qū)塊,再組成虛擬鏈,便于查詢?nèi)藛T流動(dòng)的路徑歷史,也便于人員流動(dòng)信息正確性的校驗(yàn).以人員不同時(shí)間段的位置信息為區(qū)塊組成鏈,再以每個(gè)人的流動(dòng)記錄組成鏈,以人員為區(qū)塊的虛擬區(qū)塊鏈如圖9所示.
圖9 以人員為區(qū)塊的虛擬區(qū)塊鏈
虛擬鏈的節(jié)點(diǎn)本身不發(fā)布信息,也沒(méi)有實(shí)體的計(jì)算機(jī)節(jié)點(diǎn),由只被動(dòng)接受基礎(chǔ)鏈的廣播數(shù)據(jù)而生成,數(shù)據(jù)集中生成和保存在管理機(jī)構(gòu)的系統(tǒng)數(shù)據(jù)庫(kù)中.通過(guò)區(qū)塊鏈的模式記錄數(shù)據(jù),是為了滿足數(shù)據(jù)的可添加性,增強(qiáng)自我糾錯(cuò)能力.
在圖9中,某人員#B 的子區(qū)塊鏈,以其在時(shí)間#1—時(shí)間#2—時(shí)間#3 這樣的時(shí)間順序構(gòu)成子區(qū)塊鏈,人員子區(qū)塊鏈的區(qū)塊結(jié)構(gòu)如圖10所示.
圖10 人員子區(qū)塊鏈的區(qū)塊結(jié)構(gòu)
圖10中,區(qū)塊頭的時(shí)間戳直接記錄了區(qū)塊生成的時(shí)間,區(qū)塊頭還保存了人員身份信息;區(qū)塊體中則記錄了某一次的人員流動(dòng)記錄的地點(diǎn)信息.因此這條鏈的作用除了記錄信息,還有校驗(yàn)區(qū)塊鏈正確性的作用.
當(dāng)此子區(qū)塊鏈生成了一段時(shí)間(24 h 或1 周)并經(jīng)過(guò)校驗(yàn)得到了正確的鏈以后,可以把整條鏈中的人員流動(dòng)信息打包到以人員為區(qū)塊的虛擬區(qū)塊鏈中進(jìn)行記錄(如圖9),人員在這段時(shí)間的流動(dòng)信息在區(qū)塊體中打包,再添加區(qū)塊頭形成區(qū)塊鏈結(jié)構(gòu),此區(qū)塊鏈的主要作用是查詢.記錄完畢形成新的區(qū)塊以后,就可把原有的子區(qū)塊鏈刪除,而每經(jīng)過(guò)這樣一個(gè)周期,子區(qū)塊鏈的信息數(shù)據(jù)就被添加到人員區(qū)塊鏈的區(qū)塊體中.
在此虛擬鏈的區(qū)塊中,人員的身份信息即為私鑰,綁定至身份證件號(hào)作為區(qū)塊鏈中的公鑰;再生成一個(gè)屬于個(gè)人的身份哈希,作為公鑰的哈希值.以人員為區(qū)塊的虛擬鏈區(qū)塊結(jié)構(gòu)如圖11所示,區(qū)塊頭記錄了時(shí)間戳、版本號(hào)、人員身份等內(nèi)容,區(qū)塊體內(nèi)則記錄了此人員在不同時(shí)間所在的地點(diǎn)位置信息.
圖11 以人員為區(qū)塊的虛擬鏈區(qū)塊結(jié)構(gòu)
這樣就生成了人員#A—人員#B—人員#C 這樣的以人員為區(qū)塊的虛擬區(qū)塊鏈(圖9).
某些情況,如個(gè)人車輛被他人使用、一卡通/門禁卡借給他人、人臉識(shí)別錯(cuò)誤等,都會(huì)產(chǎn)生錯(cuò)誤的人員流動(dòng)信息,為了解決這一問(wèn)題,可以采用對(duì)比驗(yàn)證區(qū)塊長(zhǎng)度的算法,每個(gè)人員流動(dòng)信息都需要廣播請(qǐng)求到P2P網(wǎng)絡(luò).通過(guò)區(qū)塊鏈中的最長(zhǎng)鏈原則(the longest chain rule),驗(yàn)證此節(jié)點(diǎn)是否真有此人,驗(yàn)證是否為真實(shí)人員所在地,這個(gè)驗(yàn)證過(guò)程可以通過(guò)智能合約完成.
例如,甲已經(jīng)從辦公室下班,甲的公司門禁卡借給正在加班的同事乙,晚上乙在辦公室刷甲的公司門禁卡,但此時(shí)甲已經(jīng)乘坐地鐵下班,通過(guò)支付寶賬號(hào)在地鐵站支付進(jìn)出站,并在家附近的商場(chǎng)入口被人臉識(shí)別攝像頭探測(cè)到.在乙再次刷甲的門禁卡的相近時(shí)刻,甲在某餐廳用刷臉支付消費(fèi),并回家用小區(qū)門禁卡刷卡.那么甲的人員流動(dòng)軌跡已經(jīng)被多個(gè)區(qū)塊鏈節(jié)點(diǎn)所記錄,此時(shí)乙刷甲門禁卡的動(dòng)作明顯不是甲本人的行為,這個(gè)錯(cuò)誤的人員流動(dòng)信息就不能通過(guò)校驗(yàn),最長(zhǎng)鏈原則校驗(yàn)過(guò)程如圖12所示.
圖12 最長(zhǎng)鏈原則校驗(yàn)過(guò)程
最長(zhǎng)鏈校驗(yàn)的周期可以設(shè)定為24 h,每24 h 確定一個(gè)人的流動(dòng)軌跡是比較合理的.
考慮系統(tǒng)中產(chǎn)生錯(cuò)誤流動(dòng)信息的場(chǎng)景,如果系統(tǒng)中收到錯(cuò)誤的tx 請(qǐng)求,則做出如下計(jì)算論證系統(tǒng)準(zhǔn)確性.定義正確的定位請(qǐng)求為正確者(鏈);錯(cuò)誤的定位請(qǐng)求為錯(cuò)誤者(鏈),根據(jù)中本聰[3]的推導(dǎo)進(jìn)行計(jì)算.
正確鏈和錯(cuò)誤鏈之間的競(jìng)爭(zhēng)可以描述為二項(xiàng)式隨機(jī)游動(dòng).成功事件是正確鏈被擴(kuò)展一個(gè)區(qū)塊,使其領(lǐng)先優(yōu)勢(shì)增加1;失敗事件是錯(cuò)誤鏈被擴(kuò)展一個(gè)區(qū)塊,差距減少1.錯(cuò)誤者從給定差額中追趕正確者,可以計(jì)算出錯(cuò)誤鏈趕上正確鏈的概率.
p為正確節(jié)點(diǎn)找到下一個(gè)塊的概率;q為錯(cuò)誤節(jié)點(diǎn)找到下一個(gè)塊的概率;qz為錯(cuò)誤者從后面的z個(gè)塊追上來(lái)的可能性,滿足:
系統(tǒng)將等待的請(qǐng)求添加到塊中,并在其后鏈接z塊.系統(tǒng)不知道錯(cuò)誤者的確切進(jìn)度,但假設(shè)正確的塊占用了每個(gè)塊的平均預(yù)期時(shí)間,錯(cuò)誤者的潛在進(jìn)度將是具有預(yù)期值的泊松分布為:
為了得到錯(cuò)誤者仍然可以追上的概率,將其每一個(gè)進(jìn)度的泊松密度乘以從該點(diǎn)追上的概率為:
重新排列避免無(wú)限求和,有:
校驗(yàn)計(jì)算流程如圖13所示.
圖13 校驗(yàn)計(jì)算流程
系統(tǒng)產(chǎn)生錯(cuò)誤的概率如表2所示,錯(cuò)誤的概率隨z(錯(cuò)誤鏈比正確鏈落后的數(shù)量)呈指數(shù)下降.
表2 產(chǎn)生錯(cuò)誤塊的概率q=0.1 時(shí)系統(tǒng)產(chǎn)生錯(cuò)誤的概率
也就是說(shuō),如果正確者數(shù)量比錯(cuò)誤者數(shù)量多10 個(gè),錯(cuò)誤請(qǐng)求的概率是0.1,錯(cuò)誤鏈能成功的概率只有百萬(wàn)分之1.2.
但如果系統(tǒng)產(chǎn)生錯(cuò)誤,如錯(cuò)誤塊占據(jù)數(shù)據(jù)優(yōu)勢(shì)時(shí),系統(tǒng)需采用自動(dòng)和人工的管理方式進(jìn)行糾正.在數(shù)據(jù)錄入時(shí),如果物聯(lián)網(wǎng)設(shè)備具有人工智能判斷信息正確性的能力,如某個(gè)transaction 錄入信息正確的概率很低,此時(shí)該設(shè)備應(yīng)該及時(shí)發(fā)出錯(cuò)誤警報(bào),或給相鄰或相關(guān)節(jié)點(diǎn)發(fā)出確認(rèn)信息,再對(duì)數(shù)據(jù)的正確性做重復(fù)校驗(yàn).當(dāng)錯(cuò)誤數(shù)據(jù)被區(qū)塊鏈記錄,由于區(qū)塊鏈系統(tǒng)的特殊性,要再采取自動(dòng)糾正就比較困難,此時(shí)就需要采用人工處理的方式進(jìn)行糾正.通過(guò)人工糾正時(shí),需要同時(shí)由轉(zhuǎn)入和轉(zhuǎn)出地的各相關(guān)部門確認(rèn),相關(guān)部門協(xié)調(diào)后再向系統(tǒng)管理部門申請(qǐng)修改,系統(tǒng)中數(shù)據(jù)的修改權(quán)限只有系統(tǒng)的管理部門才能持有,是系統(tǒng)的最高權(quán)限,能夠保證系統(tǒng)的正確性.
由于人員流動(dòng)信息的數(shù)據(jù)量非常龐大,每一個(gè)人員流動(dòng)信息如果要全網(wǎng)廣播、全網(wǎng)做驗(yàn)證不僅難以實(shí)現(xiàn),也會(huì)造成巨大的資源浪費(fèi).為保證系統(tǒng)的實(shí)時(shí)性和可擴(kuò)展性,可采取以下幾點(diǎn)方法:
(1)每一個(gè)人員流動(dòng)信息的驗(yàn)證,根據(jù)地理位置,在各區(qū)域內(nèi)驗(yàn)證和廣播.可以根據(jù)實(shí)際情況和數(shù)據(jù)量大小,以區(qū)縣或者街道為范圍,或以某個(gè)行業(yè)(如酒店、交通客運(yùn))為范圍進(jìn)行廣播.
(2)人員跨區(qū)域流動(dòng)時(shí),通過(guò)某些重要節(jié)點(diǎn)時(shí),觸發(fā)跨區(qū)域的廣播和驗(yàn)證[12],并在兩個(gè)區(qū)域(省、市、區(qū))數(shù)據(jù)庫(kù)中做數(shù)據(jù)的發(fā)收和備份,例如通過(guò)高速收費(fèi)站,乘坐航班,乘坐鐵路列車等.
(3)由于各行業(yè)的特殊性,不同行業(yè)的API 通過(guò)各主管部門發(fā)布,每個(gè)行業(yè)根據(jù)自身的特點(diǎn)和條件建立分布式數(shù)據(jù)庫(kù),形成多個(gè)區(qū)塊鏈網(wǎng)絡(luò).通過(guò)側(cè)鏈技術(shù),將不同行業(yè)的人員流動(dòng)信息實(shí)現(xiàn)流通.
(4)以人員為區(qū)塊的虛擬鏈,按地理位置儲(chǔ)存在各地區(qū)的數(shù)據(jù)庫(kù)中,并在人員跨區(qū)流動(dòng)時(shí)做到多地備份.分布式數(shù)據(jù)庫(kù)不僅利于數(shù)據(jù)的安全性,對(duì)人員流動(dòng)信息的廣播、校驗(yàn)、記錄的范圍也可進(jìn)行控制.
(5)利用分片技術(shù),將區(qū)塊鏈網(wǎng)絡(luò)按地理位置劃分區(qū)域網(wǎng)絡(luò),提高系統(tǒng)運(yùn)行速度和數(shù)據(jù)整體吞吐量.
(6)各地區(qū)各行業(yè)的區(qū)塊鏈形成聯(lián)盟網(wǎng)絡(luò),定期進(jìn)行數(shù)據(jù)整理,公安機(jī)關(guān)和疾控中心可以通過(guò)聯(lián)盟網(wǎng)絡(luò)全網(wǎng)查詢數(shù)據(jù).
舉一個(gè)實(shí)際應(yīng)用案例如下:
甲從武漢乘坐2020年1月20日的GX0X0 號(hào)列車抵達(dá)上海,在中午12 點(diǎn)離開上?;疖囌?通過(guò)滴滴打車乘坐車牌號(hào)為滬F54321 的出租車到達(dá)上海大悅城,與朋友乙一起乘坐摩天輪欣賞上海的繁華景色.然后甲發(fā)現(xiàn)身體不適,找到上海的朋友丙開車帶其至醫(yī)院檢查,確診甲已感染新型冠狀病毒肺炎,甲被疾控中心采取隔離措施并進(jìn)行治療,一同來(lái)醫(yī)院的丙也被采取隔離措施.此時(shí)甲的丈夫正從武漢駕駛甲的車輛(車牌號(hào)為鄂AXXXXX)經(jīng)過(guò)高速公路收費(fèi)站來(lái)到河南.
此案例中,甲在系統(tǒng)中是以身份證號(hào)為420100XX XXXXXX1234 的虛擬載體bitman,GX0X0 號(hào)列車為block 坐標(biāo)節(jié)點(diǎn)A,滬F54321 的出租車為節(jié)點(diǎn)B,大悅城摩天輪為節(jié)點(diǎn)C,醫(yī)院為節(jié)點(diǎn)D,湖北至河南的某高速公路收費(fèi)站為節(jié)點(diǎn)E.
甲在火車站進(jìn)出站檢票時(shí),節(jié)點(diǎn)A 已經(jīng)完成了甲的轉(zhuǎn)入轉(zhuǎn)出記錄;甲在使用滴滴打車時(shí),打車系統(tǒng)關(guān)聯(lián)了甲的支付寶,并記錄了其行程,完成了節(jié)點(diǎn)B 的人員監(jiān)測(cè)記錄;甲在進(jìn)入商場(chǎng)游玩時(shí),乘坐的摩天輪通過(guò)微信APP 掃碼,完成了節(jié)點(diǎn)C 的人員監(jiān)測(cè)記錄;到達(dá)醫(yī)院以后,甲使用身份證就醫(yī)時(shí)完成了節(jié)點(diǎn)D 的記錄.由于A—B—C—D 在區(qū)塊鏈的合約中被證實(shí)是真實(shí)有效的,甲的車輛在經(jīng)過(guò)收費(fèi)站時(shí)節(jié)點(diǎn)E 的請(qǐng)求沒(méi)有校驗(yàn)通過(guò),在區(qū)塊鏈中無(wú)效.
疾控中心調(diào)出甲在區(qū)塊鏈中的節(jié)點(diǎn)歷史,甲的歷史為A—B—C—D,各時(shí)間點(diǎn)的歷史由區(qū)塊鏈系統(tǒng)自動(dòng)生成,系統(tǒng)通過(guò)Merkletree 的搜索方式,快速找到了甲30 天內(nèi)的流動(dòng)歷史,并確定了節(jié)點(diǎn)B 滬F54321 的出租車的司機(jī)、節(jié)點(diǎn)C 中當(dāng)時(shí)和甲一起乘坐摩天輪的朋友乙、節(jié)點(diǎn)A 中和甲同時(shí)乘坐GX0X0 號(hào)列車同一車廂的50 名乘客,在區(qū)塊鏈中共計(jì)52 人次,成為其密切接觸者.疾控中心通過(guò)區(qū)塊鏈中記錄的名單,找了這些密切接觸者并采取隔離措施.
利用基于區(qū)塊鏈技術(shù)建立的人員流動(dòng)信息大數(shù)據(jù)庫(kù),建立針對(duì)目標(biāo)人員的出行軌跡進(jìn)行精確篩查,分析其人員流動(dòng)歷史軌跡.借此針對(duì)疫情防控,對(duì)接當(dāng)?shù)氐拇_診病例、疑似病例人員名單,政府、公安等相關(guān)部門在保護(hù)個(gè)人隱私的情況下,分析、篩選人員的出行歷史軌跡,篩查到訪區(qū)域,從而對(duì)這些區(qū)域進(jìn)行重點(diǎn)觀察、人員隔離和消毒處理.
(1)區(qū)塊鏈系統(tǒng)有別于傳統(tǒng)系統(tǒng),有去中心化的特點(diǎn)[13]:傳統(tǒng)系統(tǒng)需要層層布置,但是人員流動(dòng)信息監(jiān)管系統(tǒng)涉及的部門很多,如果需要協(xié)調(diào)公安、衛(wèi)生、交通、酒店、物業(yè)、物流等各部門、各單位系統(tǒng),那么系統(tǒng)架設(shè)會(huì)碰到非常多的困難.而區(qū)塊鏈系統(tǒng)只需要疾控中心或公安部門下發(fā)應(yīng)用層的API 并建立智能合約,通過(guò)節(jié)點(diǎn)把有效數(shù)據(jù)上傳至互聯(lián)網(wǎng)即可,系統(tǒng)架設(shè)效率高[14],也省去了大量硬件翻新的成本.
(2)區(qū)塊鏈具有一致性、不可篡改性和實(shí)時(shí)性,區(qū)塊鏈采用分布式數(shù)據(jù)庫(kù),并實(shí)時(shí)備份,只要不能掌控全部數(shù)據(jù)節(jié)點(diǎn)的51%,就無(wú)法肆意操控、修改人員流動(dòng)信息記錄的數(shù)據(jù),這使區(qū)塊鏈本身變得相對(duì)安全,避免了主觀人為的數(shù)據(jù)變更.這一特性極大地增強(qiáng)了區(qū)塊鏈的安全性,并提高了系統(tǒng)響應(yīng)速度.
(3)區(qū)塊鏈具有可添加性、擁有性和可提供性的特點(diǎn).新用戶只要安裝管理單位下發(fā)的API,即可鏈入大系統(tǒng),隨時(shí)投入使用.而傳統(tǒng)系統(tǒng)在增加設(shè)備節(jié)點(diǎn)時(shí),還需考慮總機(jī)容量和大系統(tǒng)的物理改造.
(4)人員流動(dòng)信息監(jiān)管系統(tǒng)的區(qū)塊鏈與普通區(qū)塊鏈也是不同的:普通區(qū)塊鏈具有匿名性,而此系統(tǒng)必須是實(shí)名的;普通區(qū)塊鏈的所有用戶都可以下載任意一處賬本的交易記錄,而此系統(tǒng)的數(shù)據(jù)涉及個(gè)人隱私,只有具有管理部門(如CDC 和公安機(jī)關(guān))授權(quán)的單位才能擁有查詢權(quán)限.所以管理員的API 和用戶的API 有所區(qū)分,用戶單位只有登錄和錄入信息權(quán)限,管理部門才有查詢權(quán)限,當(dāng)系統(tǒng)中發(fā)生一些錯(cuò)誤需要人工糾正時(shí),需要多個(gè)相關(guān)管理部門確認(rèn)才能得到修改權(quán)限.
發(fā)生新型冠狀病毒感染的肺炎疫情后,監(jiān)測(cè)疫區(qū)人員流動(dòng)信息,隔離確診病患和疑似病例的密切接觸者的工作刻不容緩,尋找每個(gè)確診病例的感染源對(duì)傳染病防控也有重要作用.建立基于區(qū)塊鏈技術(shù)的人員流動(dòng)信息監(jiān)管系統(tǒng),是借助大數(shù)據(jù)信息化的手段進(jìn)行信息收集的有效方式,為今后的傳染病防控也能起到重要作用.
在當(dāng)前時(shí)代環(huán)境下將邊緣計(jì)算和區(qū)塊鏈技術(shù)相結(jié)合,實(shí)現(xiàn)人員流動(dòng)的監(jiān)控系統(tǒng).利用用戶在網(wǎng)絡(luò)平臺(tái)等環(huán)境下的動(dòng)作記錄來(lái)反映到對(duì)應(yīng)的位置信息,并存儲(chǔ)在區(qū)塊鏈中.利用分布式邊緣計(jì)算網(wǎng)絡(luò)和區(qū)塊鏈技術(shù)相結(jié)合,可以充分利用邊緣設(shè)備的計(jì)算能力,充分利用資源,而區(qū)塊鏈技術(shù)保證了數(shù)據(jù)在傳輸過(guò)程以及存儲(chǔ)過(guò)程的可靠性,并在某個(gè)區(qū)域內(nèi)系統(tǒng)自動(dòng)進(jìn)行記錄,具有較大的便捷性.