国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于區(qū)塊鏈的持久標(biāo)識符系統(tǒng)①

2020-03-22 07:41:52孫善鵬王毅蒙郭志斌
關(guān)鍵詞:標(biāo)識符事務(wù)解析

孫善鵬,田 野,李 琢,王毅蒙,劉 佳,王 姝,郭志斌

1(中國科學(xué)院 計(jì)算機(jī)網(wǎng)絡(luò)信息中心,北京 100190)

2(中國科學(xué)院大學(xué),北京 100049)

3(中國工業(yè)互聯(lián)網(wǎng)研究院,北京 100102)

在包括科學(xué)數(shù)據(jù)、工業(yè)數(shù)據(jù)在內(nèi)的若干領(lǐng)域中,數(shù)據(jù)總量迅速增長,據(jù)IDC 預(yù)測[1],2025年全球數(shù)據(jù)存儲總量將達(dá)到175 ZB,其中大量價值數(shù)據(jù)需要被長期保存并分享,這就需要為數(shù)據(jù)本身賦予某種名稱,使用戶可以通過名稱對數(shù)據(jù)本身進(jìn)行訪問.

對于在線數(shù)據(jù)而言,往往通過URL 對其進(jìn)行命名并藉由DNS 及相應(yīng)Web 服務(wù)向用戶提供數(shù)據(jù)訪問能力,在這種方式下可以通過人為管理URL 到數(shù)據(jù)的映射來保證用戶通過特定URL 訪問數(shù)據(jù)的穩(wěn)定性[2],但當(dāng)數(shù)據(jù)服務(wù)面臨遷移、合并時,通過原URL進(jìn)行數(shù)據(jù)訪問不可避免會遇到訪問失敗問題,這就需要為其賦予持久化標(biāo)識符將數(shù)據(jù)對象身份與其Web位置相分離以允許通過標(biāo)識符明確指代對應(yīng)數(shù)據(jù)對象,從而保證標(biāo)識符持久可解析,為了達(dá)成這一目的,出現(xiàn)了包括Handle、ARK、PRUL 在內(nèi)的超過10 種標(biāo)識符系統(tǒng)嘗試為數(shù)據(jù)提供名稱及解析服務(wù),但隨著時間推移,其中部分系統(tǒng)不再提供服務(wù),造成這種情況的主要原因一方面是其標(biāo)識符系統(tǒng)結(jié)構(gòu)過于依賴于中心化基礎(chǔ)設(shè)施[3],另一方面是標(biāo)識符服務(wù)提供者大多未找到合適的盈利模式以至于不可持續(xù)發(fā)展.因此需要加強(qiáng)現(xiàn)有標(biāo)識符系統(tǒng)的解析服務(wù)長期可用性與標(biāo)識符數(shù)據(jù)完整性,最終保證標(biāo)識符解析持久性,同時由于現(xiàn)有標(biāo)識符系統(tǒng)服務(wù)規(guī)模普遍較小,無法像DNS 系統(tǒng)一樣提供廣泛的緩存基礎(chǔ)設(shè)施,所以在標(biāo)識符解析流程中還需通過與客戶端物理位置接近的服務(wù)節(jié)點(diǎn)為客戶端提供解析服務(wù),以加速標(biāo)識符解析速度.

因此我們設(shè)計(jì)了基于區(qū)塊鏈的持久標(biāo)識符系統(tǒng),并兼容現(xiàn)有標(biāo)識符解析系統(tǒng)進(jìn)行了初步實(shí)現(xiàn):通過基于區(qū)塊鏈的存儲層使多節(jié)點(diǎn)間互相形成冗余,允許提供多節(jié)點(diǎn)解析服務(wù)以避免單點(diǎn)服務(wù)失效以保持解析服務(wù)的持久性,并通過多節(jié)點(diǎn)中的近地節(jié)點(diǎn)服務(wù)優(yōu)化標(biāo)識符解析速度,同時通過區(qū)塊鏈鏈?zhǔn)浇Y(jié)構(gòu)及其共識機(jī)制保證標(biāo)識符數(shù)據(jù)安全性.

本文余下章節(jié)中,第1 部分將介紹持久性標(biāo)識符和區(qū)塊鏈的相關(guān)研究工作,第2 部分將介紹基于區(qū)塊鏈的持久標(biāo)識符,第3 部分將對所提方案進(jìn)行系統(tǒng)設(shè)計(jì)并于第4 部分中進(jìn)行系統(tǒng)實(shí)驗(yàn)結(jié)果分析,第5 部分對基于區(qū)塊鏈的持久性標(biāo)識符的下一步發(fā)展以及挑戰(zhàn)做了簡要分析并總結(jié)全文.

1 相關(guān)工作

如何保證標(biāo)識符解析服務(wù)持久性及數(shù)據(jù)正確性一直是域名、身份隱私及數(shù)據(jù)領(lǐng)域研究者長期關(guān)注的問題.

Namecoin[4]基于區(qū)塊鏈提供了類似DNS 解析的功能,通過向類比特幣[5]系統(tǒng)的交易事務(wù)數(shù)據(jù)中添加額外信息來將.bit 域名映射到指定位置,借助于區(qū)塊鏈系統(tǒng)的去中心化特性避免網(wǎng)絡(luò)審查以保證域名解析服務(wù)持久性從而允許信息自由發(fā)布,但由于Namecoin 易于遭受51%攻擊,Ali 等重新設(shè)計(jì)了可跨鏈的Blockstack系統(tǒng)[6],以保證域名解析數(shù)據(jù)源可靠性,雖然Namecoin及Blockstack 對DNS 解析服務(wù)持久性及數(shù)據(jù)源可靠性做出了初步嘗試,但其與現(xiàn)有域名系統(tǒng)相互獨(dú)立,需要用戶使用另外的解析系統(tǒng).HandShake[7]基于區(qū)塊鏈系統(tǒng)通過鏈上具有根區(qū)數(shù)據(jù)的完全節(jié)點(diǎn)代替現(xiàn)有DNS根區(qū)文件與根區(qū)服務(wù)器,從而對DNS 頂級域進(jìn)行管理,同時使用輕量級節(jié)點(diǎn)用于資源證明,從而希望能與現(xiàn)有DNS 體系兼容形成完整的DNS 解析體系,但該系統(tǒng)僅為代替根區(qū)服務(wù).

此外,PPK 技術(shù)社區(qū)在2015年設(shè)計(jì)了基于比特幣的奧丁號(Open Data Index Name,ODIN)[8],它使用區(qū)塊號+塊內(nèi)序號作為標(biāo)識符來唯一確定一個區(qū)塊內(nèi)事務(wù),如600 000.100 表示將標(biāo)識符信息寫入第600 000塊內(nèi)第100 條事務(wù),從而使解析可以直接定位到區(qū)塊中具體的數(shù)據(jù).W3C 工作組也在2014年開始進(jìn)行去中心化標(biāo)識符的討論[9],并在2019年成立了去中心化標(biāo)識符工作組發(fā)布了首個公開工作草案[10],以期設(shè)計(jì)一種符合URI 規(guī)范的可驗(yàn)證的去中心化標(biāo)識符以獨(dú)立于任何中心化驗(yàn)證機(jī)構(gòu).

為了解決持久標(biāo)識符系統(tǒng)單點(diǎn)故障問題,Bolikowski等[11]提出了將標(biāo)識符及其對應(yīng)數(shù)據(jù)與擁有者公鑰信息保存在區(qū)塊鏈中的持久標(biāo)識符生成和管理方案,試圖通過區(qū)塊鏈系統(tǒng)解決單點(diǎn)故障對標(biāo)識符壽命及長期保存造成的影響,但在該方案中每個區(qū)塊僅存放單一用戶的標(biāo)識符,這將導(dǎo)致每區(qū)塊數(shù)據(jù)密度過低對存儲資源造成了浪費(fèi).Golodoniuc 等[12]設(shè)計(jì)了一種類似P2P文件共享網(wǎng)絡(luò)基于DHT 式結(jié)構(gòu)以Magnet Link 作為名稱的持久標(biāo)識符系統(tǒng),期望在所有級別上去中心化來增加系統(tǒng)容錯能力從而保證其可靠性.Sicilia 等[13]對持久標(biāo)識符模型進(jìn)行建模并描述了如何將標(biāo)識符及其元數(shù)據(jù)存儲于IPFS[14]及以太坊[15]為標(biāo)識符提供持久化服務(wù).

上述工作初步闡述了如何通過去中心化系統(tǒng)增加系統(tǒng)可靠性從而保證標(biāo)識符解析持久性,但這些工作都對標(biāo)識符系統(tǒng)進(jìn)行了重新設(shè)計(jì),無法在兼容現(xiàn)有系統(tǒng)的情況下,使客戶端直接遷移到去中心化的標(biāo)識符解析系統(tǒng).

2 基于區(qū)塊鏈的持久標(biāo)識符模型

傳統(tǒng)標(biāo)識符系統(tǒng)解析服務(wù)在解析流程中依賴于系統(tǒng)的分布式結(jié)構(gòu)而具有一定的魯棒性,但最終解析行為往往依賴于單一數(shù)據(jù)源,這使得解析服務(wù)面臨著末端服務(wù)單點(diǎn)失效導(dǎo)致解析失敗的可能,現(xiàn)有系統(tǒng)主要依靠構(gòu)建冗余服務(wù)來解決這一問題.同時,雖然標(biāo)識符系統(tǒng)協(xié)議可能在數(shù)據(jù)報(bào)文中定義了消息憑據(jù)通過類似DNSSEC的機(jī)制提供簽名驗(yàn)證能力來保證解析數(shù)據(jù)在其傳輸過程中的真實(shí)性與完整性,但當(dāng)數(shù)據(jù)源被攻擊后,無法保證數(shù)據(jù)本身的安全性從而解析錯誤的標(biāo)識符數(shù)據(jù).

而基于區(qū)塊鏈作為標(biāo)識存儲層為成員間數(shù)據(jù)一致性做出了保證,使系統(tǒng)參與節(jié)點(diǎn)間形成冗余,當(dāng)用戶發(fā)起解析請求時,所有系統(tǒng)參與節(jié)點(diǎn)皆可完成對請求的響應(yīng),這樣就避免了單節(jié)點(diǎn)崩潰或不再服務(wù)所導(dǎo)致的該節(jié)點(diǎn)命名空間內(nèi)標(biāo)識符解析失效情況.同時當(dāng)單節(jié)點(diǎn)崩潰事故發(fā)生后,崩潰節(jié)點(diǎn)只需重新接入?yún)^(qū)塊鏈網(wǎng)絡(luò),待區(qū)塊鏈數(shù)據(jù)同步完成后掃描全部數(shù)據(jù)重建標(biāo)識符索引,即可再次提供服務(wù).在數(shù)據(jù)安全性上,區(qū)塊鏈的鏈?zhǔn)浇Y(jié)構(gòu)也簡化了數(shù)據(jù)正確性驗(yàn)證流程,增加了攻擊者的數(shù)據(jù)篡改成本,同時結(jié)合具體系統(tǒng)所采用的共識機(jī)制保證正確數(shù)據(jù)的一致性同步,保障了存儲節(jié)點(diǎn)內(nèi)標(biāo)識符數(shù)據(jù)的安全性.

2.1 模型概述

為了兼容現(xiàn)有標(biāo)識符系統(tǒng),圖1中基于區(qū)塊鏈的持久標(biāo)識符模型總體上分為標(biāo)識符系統(tǒng)訪問層、區(qū)塊鏈服務(wù)層兩層結(jié)構(gòu).現(xiàn)有標(biāo)識符系統(tǒng)訪問層繼續(xù)保持對外提供標(biāo)識符解析與管理服務(wù)的能力,區(qū)塊鏈服務(wù)層則基于智能合約為標(biāo)識系統(tǒng)訪問層提供區(qū)塊鏈存儲服務(wù)及對塊內(nèi)標(biāo)識符數(shù)據(jù)進(jìn)行操作的能力,同時基于共識算法為節(jié)點(diǎn)間數(shù)據(jù)一致性提供保障.

圖1 基于區(qū)塊鏈的持久標(biāo)識符模型

2.2 區(qū)塊概述

由于對現(xiàn)有標(biāo)識符系統(tǒng)訪問層進(jìn)行重用,所以將不會直接基于區(qū)塊鏈為用戶提供標(biāo)識符管理能力,因此不會將管理者密鑰等數(shù)據(jù)直接存儲至區(qū)塊結(jié)構(gòu)中,具體結(jié)構(gòu)如圖2所示.

圖2 持久標(biāo)識符的區(qū)塊設(shè)計(jì)

圖2中每個區(qū)塊將存儲多個操作符事務(wù)數(shù)據(jù)以增加區(qū)塊利用率,并存儲基于事務(wù)數(shù)據(jù)形成的Merkle Tree 根節(jié)點(diǎn)值作為當(dāng)前區(qū)塊Hash 值,該值是基于當(dāng)前區(qū)塊內(nèi)所有事務(wù)數(shù)據(jù)的Hash 值構(gòu)造而成(如圖2右側(cè)所示),同時每一區(qū)塊將存儲前一區(qū)塊Hash 值以形成鏈?zhǔn)浇Y(jié)構(gòu),從而允許對數(shù)據(jù)完整性與正確性進(jìn)行驗(yàn)證,若某事務(wù)數(shù)據(jù)被攻擊者修改后,將影響包括被篡改數(shù)據(jù)所在區(qū)塊Hash 值及其后的所有區(qū)塊中的前繼Hash值,若當(dāng)前區(qū)塊鏈鏈長度為L,被攻擊區(qū)塊號為X,X塊內(nèi)事務(wù)數(shù)據(jù)量為M,則攻擊者篡改單節(jié)點(diǎn)內(nèi)某一標(biāo)識符數(shù)據(jù)的時間復(fù)雜度T為l og2M+1+L?X.

針對區(qū)塊事務(wù)內(nèi)的標(biāo)識符數(shù)據(jù)而言,在其生命周期內(nèi)將經(jīng)歷如圖3所示的狀態(tài)轉(zhuǎn)換,主要會涉及3 種狀態(tài),包括標(biāo)識符發(fā)布、標(biāo)識符修改、標(biāo)識符刪除.

圖3 標(biāo)識符生命周期狀態(tài)轉(zhuǎn)換圖

具體地講,3 種狀態(tài)總共涉及5 種操作:創(chuàng)建標(biāo)識符、新增值、更改值、刪除值、刪除標(biāo)識符.為了緩解區(qū)塊鏈存儲壓力,不應(yīng)在鏈上存儲每次標(biāo)識符操作后完整標(biāo)識符數(shù)據(jù),而是存儲當(dāng)前操作造成的數(shù)據(jù)變化,即進(jìn)行增量式的存儲,因此當(dāng)標(biāo)識符被創(chuàng)建時,存儲其初始數(shù)據(jù),而當(dāng)進(jìn)行后續(xù)操作時,并不完全重新存儲全部標(biāo)識符數(shù)據(jù),而僅需存儲變更數(shù)據(jù)同時附帶指向上一版本標(biāo)識符的指針即可.

上述標(biāo)識符操作中,標(biāo)識符創(chuàng)建和刪除僅會被執(zhí)行一次或0 次,其余標(biāo)識符值相關(guān)操作次數(shù)雖然與值數(shù)據(jù)變更頻度有關(guān),但對于單個標(biāo)識符而言,其不同類型的操作次數(shù)有限且較少的,這為增量存儲但快速組合成完整標(biāo)識符數(shù)據(jù)提供了有利條件,因此一條事務(wù)數(shù)據(jù)具體包括:

(1)標(biāo)識符;

(2)前繼標(biāo)識符數(shù)據(jù)位置;

(3)標(biāo)識符值.

基于增量式標(biāo)識符存儲使對標(biāo)識符修改記錄進(jìn)行內(nèi)容追溯成為可能,當(dāng)數(shù)據(jù)標(biāo)識符使用者將元數(shù)據(jù)存儲在標(biāo)識符系統(tǒng)中時,即可根據(jù)歷史元數(shù)據(jù)生成相應(yīng)的數(shù)據(jù)描述變化信息,允許數(shù)據(jù)科學(xué)家從數(shù)據(jù)關(guān)系等角度對其進(jìn)行進(jìn)一步的分析.

但通常情況下單個標(biāo)識符數(shù)據(jù)量較少,若將每次操作都封裝成單個事務(wù)寫入?yún)^(qū)塊則會面臨事務(wù)結(jié)構(gòu)數(shù)據(jù)(事務(wù)頭、簽名等)比事務(wù)內(nèi)有效負(fù)載數(shù)據(jù)更大的情況,因此應(yīng)設(shè)計(jì)某種策略將符合策略的標(biāo)識符數(shù)據(jù)批量封裝至同一事務(wù)內(nèi)以節(jié)省頻繁存儲事務(wù)結(jié)構(gòu)信息帶來的存儲空間浪費(fèi),本文中事務(wù)封裝策略通過事務(wù)結(jié)構(gòu)大小ST與事務(wù)負(fù)載大小SP確定,當(dāng)SP/ST>1 時將會封裝當(dāng)前所有等待數(shù)據(jù)至同一事務(wù)中寫入?yún)^(qū)塊.

3 基于區(qū)塊鏈的標(biāo)識符系統(tǒng)實(shí)現(xiàn)

現(xiàn)有持久標(biāo)識符系統(tǒng)大多基于Handle 系統(tǒng)[16–18]提供服務(wù),雖然該系統(tǒng)被設(shè)計(jì)為半中心化結(jié)構(gòu),使系統(tǒng)中某單節(jié)點(diǎn)臨時失效或完全不可用的情況下不會影響到系統(tǒng)整體解析流程的平穩(wěn)、不間斷運(yùn)行,但這種單點(diǎn)失效情況依然影響了該節(jié)點(diǎn)所負(fù)責(zé)的命名空間內(nèi)標(biāo)識符的可解析性,本節(jié)將在接下來闡述如何將Handle 系統(tǒng)移植到基于Hyperledger Fabric[19]的區(qū)塊鏈之上以使其成為在存儲層面可去中心化的系統(tǒng).

3.1 系統(tǒng)結(jié)構(gòu)

為了兼容現(xiàn)有Handle 系統(tǒng),首先需要使其保持現(xiàn)有的GHR、LHS 式層級結(jié)構(gòu),以保證用戶進(jìn)行標(biāo)識符解析時解析流程不被改變.其次對于傳統(tǒng)Handle 服務(wù)提供者而言,依賴于Key-Value 數(shù)據(jù)庫或關(guān)系型數(shù)據(jù)庫提供對Handle 及其值的單節(jié)點(diǎn)存儲服務(wù),這種單節(jié)點(diǎn)存儲及訪問服務(wù)存在的不可靠性帶來了使解析服務(wù)崩潰風(fēng)險,而當(dāng)數(shù)據(jù)存儲層遷移至區(qū)塊鏈之上后,區(qū)塊鏈參與節(jié)點(diǎn)將得益于全局一致性賬本互為冗余,同時可以提供多節(jié)點(diǎn)全量標(biāo)識符解析服務(wù).從系統(tǒng)結(jié)構(gòu)上看,考慮到現(xiàn)有Handle 節(jié)點(diǎn)間服務(wù)的互相獨(dú)立,應(yīng)允許原有的Primary 節(jié)點(diǎn)、Multi-Primary 節(jié)點(diǎn)、Mirror節(jié)點(diǎn)都可以與基于區(qū)塊鏈的Handle 節(jié)點(diǎn)同時共存于整個體系之中,最終系統(tǒng)整體結(jié)構(gòu)如圖4所示.

以Hyperledger Fabric 作為區(qū)塊鏈服務(wù)為例,持久化標(biāo)識符聯(lián)盟中的每個參與成員都將在各自的Handle服務(wù)中集成Fabric Peer 節(jié)點(diǎn)以代替原有數(shù)據(jù)存儲系統(tǒng),將各自身份注冊至MSP 之中,以確保對區(qū)塊鏈系統(tǒng)的操作權(quán)限,并基于Raft 協(xié)議使參與成員提供排序服務(wù),其區(qū)塊鏈網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示.

3.2 存儲層次結(jié)構(gòu)

對于一個具體的標(biāo)識符服務(wù)節(jié)點(diǎn)而言,其標(biāo)識符注冊數(shù)量通常處于較大的數(shù)量級,所以對于每個標(biāo)識符服務(wù)都需要具有類似標(biāo)識符目錄的機(jī)制對當(dāng)前服務(wù)節(jié)點(diǎn)管理的標(biāo)識符進(jìn)行索引從而允許解析服務(wù)快速的定位標(biāo)識符數(shù)據(jù)所在區(qū)塊以讀取數(shù)據(jù),因此將索引數(shù)據(jù)存儲于Hyperledger Fabric 世界狀態(tài)數(shù)據(jù)庫中,使其與具體區(qū)塊鏈數(shù)據(jù)文件分離,如圖6所示.

圖4 包含基于區(qū)塊鏈服務(wù)的Handle 系統(tǒng)結(jié)構(gòu)

圖5 區(qū)塊鏈網(wǎng)絡(luò)結(jié)構(gòu)

圖6 存儲層次結(jié)構(gòu)

為了不影響Handle 系統(tǒng)用戶的現(xiàn)有信息系統(tǒng),基于區(qū)塊鏈的標(biāo)識符系統(tǒng)將繼續(xù)遵循Handle 協(xié)議規(guī)范規(guī)定的Handle 標(biāo)識符數(shù)據(jù)結(jié)構(gòu)以提供完整的Handle 數(shù)據(jù)存儲,基于2.2 節(jié)中所描述的方案進(jìn)行標(biāo)識符數(shù)據(jù)存儲,其中Handle 號及最新數(shù)據(jù)存儲在世界狀態(tài)數(shù)據(jù)庫之中,因此事務(wù)內(nèi)有效數(shù)據(jù)僅包括:

(1)前繼標(biāo)識符信息位置(除創(chuàng)建標(biāo)識符操作外),包括事務(wù)ID與在該事務(wù)中的寫集下標(biāo);

(2)Handle 值列表,包括Index、Type、Value、TTL、Timestamp、Reference、admin_read、admin_write、pub_read、pub_write.

3.3 標(biāo)識符事務(wù)

以12346/abc為例,其具體事務(wù)存儲示例如圖7.

圖7(a)代表handle 號為12346/abc的handle 被創(chuàng)建,其handle 值包括一條Index為1的URL 類型的值http://hdl.handle.net,其TTL為24 小時,創(chuàng)建時間為927314334000,引用為空,管理員可讀且可寫,公眾可讀但不可寫.

圖7(b)代表對標(biāo)識符12346/abc 添加一條新值,它的前繼操作存儲在事務(wù)ID為100的事務(wù)內(nèi)寫集下標(biāo)為1的位置,值內(nèi)容是Index為2的DES 類型的值“Handle resolver”,其TTL為24 小時,創(chuàng)建時間為927314335000,引用為空,管理員可讀且可寫,公眾可讀但不可寫.

圖7(c)代表是對標(biāo)識符12346/abc 中Index為2的值進(jìn)行修改,其前繼操作存儲在事務(wù)ID為101的事務(wù)內(nèi)寫集下標(biāo)為1的位置,具體值被修改為“A Handle resolver”.

圖7(d)為刪除12346/abc 中Index為2的值,其前繼操作存儲在事務(wù)ID為102的事務(wù)內(nèi)寫集下標(biāo)為1的位置.

圖7 標(biāo)識符操作事務(wù)

3.4 標(biāo)識符解析與操作

Handle 系統(tǒng)具有GHR/LHS 兩層結(jié)構(gòu),并且基于Handle 協(xié)議規(guī)范具有詳細(xì)的數(shù)據(jù)交互流程設(shè)計(jì),因此不論在解析還是操作流程上都應(yīng)遵循基本的Handle交互模式.

(1)標(biāo)識符解析流程

解析基本流程如圖8所示.

當(dāng)用戶通過解析器向系統(tǒng)發(fā)起標(biāo)識符解析請求時:①首先會通過解析器向GHR 請求LHS 服務(wù)地址;②接著GHR 將返回負(fù)責(zé)用戶欲解析的標(biāo)識符前綴信息,其中包含了所有參與區(qū)塊鏈的成員節(jié)點(diǎn)信息,③接下來解析器將向獲取到的LHS 發(fā)送具體解析請求;④LHS 接收到解析請求后首先檢索緩存,若命中則直接返回標(biāo)識符數(shù)據(jù);⑤若不命中則調(diào)用存儲層;⑥觸發(fā)當(dāng)前節(jié)點(diǎn)集成的Fabric 服務(wù)的標(biāo)識符檢索智能合約;⑦合約將檢索世界狀態(tài)數(shù)據(jù)庫得到最新標(biāo)識符狀態(tài)數(shù)據(jù),若該數(shù)據(jù)標(biāo)志位非新建標(biāo)志或刪除標(biāo)志則說明檢索到的僅為最新增量數(shù)據(jù);⑧于是需要依據(jù)最新增量數(shù)據(jù)的前繼數(shù)據(jù)索引字段去區(qū)塊鏈存儲中相應(yīng)的區(qū)塊檢索歷史數(shù)據(jù)繼而組合出完整標(biāo)識符數(shù)據(jù);⑨之后將其寫入緩存并返回給訪問層,其后訪問層基于用戶是否具有相應(yīng)值條目的讀取權(quán)限篩選出最終數(shù)據(jù),以響應(yīng)解析器的請求.

(2)標(biāo)識符操作流程

當(dāng)解析器發(fā)起標(biāo)識符操作請求時,整體流程與解析請求流程類似,但首先需經(jīng)歷操作權(quán)限驗(yàn)證,其中標(biāo)識符創(chuàng)建與標(biāo)識符值修改/刪除流程略有不同:

①標(biāo)識符創(chuàng)建:當(dāng)請求到達(dá)Handle 系統(tǒng)后,若請求為標(biāo)識符創(chuàng)建請求則首先根據(jù)Handle 規(guī)范驗(yàn)證其權(quán)限.

②標(biāo)識符值修改/刪除:首先進(jìn)行標(biāo)識符檢索,其后根據(jù)標(biāo)識符數(shù)據(jù)進(jìn)行權(quán)限驗(yàn)證.

圖8 解析請求流程示意圖

權(quán)限驗(yàn)證通過后將觸發(fā)當(dāng)前節(jié)點(diǎn)智能合約,節(jié)點(diǎn)成功背書后,即可將數(shù)據(jù)寫入緩存提供服務(wù),以保證服務(wù)時效性.其后當(dāng)前節(jié)點(diǎn)Orderer 服務(wù)將數(shù)據(jù)發(fā)送至當(dāng)前的Raft Leader 處,Leader 將該請求包含的Handle 數(shù)據(jù)依照前文第3 節(jié)所述格式打包成事務(wù),同步至其它LHS的對等節(jié)點(diǎn)中.

4 實(shí)驗(yàn)與分析

4.1 實(shí)驗(yàn)環(huán)境與方案

實(shí)驗(yàn)環(huán)境主要采用一臺CPU 規(guī)格為AMD R5 3500U,內(nèi)存規(guī)格為DDR4 2133 MHz,硬盤規(guī)格為WDC SN520的主機(jī)作為宿主機(jī),使用VirtualBox 6.0 進(jìn)行虛擬化提供運(yùn)行環(huán)境,基于Handle Software v9.2與Hyperledger Fabric v1.4 進(jìn)行基于區(qū)塊鏈的標(biāo)識符系統(tǒng)開發(fā),對照組為基于BerkeleyDB 及MySQL的Handle 系統(tǒng).

上述基于Hyperledger Fabric的系統(tǒng)中包含由5 個LHS 節(jié)點(diǎn)以組成持久標(biāo)識符區(qū)塊鏈系統(tǒng),在進(jìn)行測試時,使用單客戶端10 線程,每個線程發(fā)送基于TCP發(fā)送2000 次請求,每個請求之間有10 毫秒的延遲以避免客戶端主機(jī)端口耗盡,同時停用標(biāo)識符系統(tǒng)緩存.測試項(xiàng)目主要包括標(biāo)識符解析性能測試、標(biāo)識符操作性能測試、標(biāo)識符服務(wù)單點(diǎn)失效測試、標(biāo)識符服務(wù)內(nèi)存消耗測試、標(biāo)識符存儲資源消耗測試.

4.2 實(shí)驗(yàn)分析

4.2.1 標(biāo)識符解析性能測試

在標(biāo)識符解析性能實(shí)驗(yàn)中,測試腳本通過向系統(tǒng)解析預(yù)先創(chuàng)建的標(biāo)識符來進(jìn)行解析性能測試,測試結(jié)果如表1所示.

表1 解析性能測試

從表1中可見基于Hyperledger Fabric的Handle系統(tǒng)標(biāo)識符解析吞吐量略低,其平均解析響應(yīng)時間慢于基于其他存儲層的Handle 系統(tǒng),這意味著對于需要高性能的標(biāo)識符解析場景而言,仍需進(jìn)一步優(yōu)化標(biāo)識符解析流程同時需提供高效的緩存服務(wù)以減少標(biāo)識符解析時的區(qū)塊鏈區(qū)塊文件的查詢次數(shù).

4.2.2 標(biāo)識符操作性能測試

在標(biāo)識符操作性能實(shí)驗(yàn)中,測試腳本通過向系統(tǒng)批量創(chuàng)建標(biāo)識符來進(jìn)行操作性能測試,測試結(jié)果如表2所示.

表2 操作性能測試

可見基于Hyperledger Fabric的Handle 系統(tǒng)對的標(biāo)識符操作響應(yīng)時間慢于基于其他存儲層的Handle系統(tǒng),需要進(jìn)一步優(yōu)化標(biāo)識符存儲流程以提供多級數(shù)據(jù)寫入策略來保證系統(tǒng)對標(biāo)識符操作的及時響應(yīng).

4.2.3 標(biāo)識符單點(diǎn)失效測試

為了進(jìn)行單點(diǎn)失效測試,在實(shí)驗(yàn)中將設(shè)置5 個持久標(biāo)識符服務(wù)參與節(jié)點(diǎn),分別編號A~E,在節(jié)點(diǎn)運(yùn)行過程中,對標(biāo)識符服務(wù)進(jìn)行持續(xù)解析請求,在此過程中隨機(jī)反復(fù)停止并恢復(fù)節(jié)點(diǎn)的服務(wù),行為示例如表3所示,解析客戶端持續(xù)統(tǒng)計(jì)解析成功率,結(jié)果如表4所示.測試結(jié)果表明基于區(qū)塊鏈的標(biāo)識符解析系統(tǒng)通過互冗余為任一參與方LHS 所管理的前綴命名空間內(nèi)標(biāo)識符提供多節(jié)點(diǎn)的解析服務(wù)可以有效避免單一LHS的解析服務(wù)單點(diǎn)失效所帶來的解析失敗問題.

表3 單點(diǎn)失效測試行為示例

表4 單點(diǎn)失效解析測試

4.2.4 標(biāo)識符存儲資源消耗測試

基于區(qū)塊鏈的標(biāo)識符系統(tǒng)存儲了所有標(biāo)識符歷史數(shù)據(jù),同時每條數(shù)據(jù)都被打包成事務(wù)以組成區(qū)塊,這將存儲更多的事務(wù)及區(qū)塊結(jié)構(gòu)信息,所以會比傳統(tǒng)Handle系統(tǒng)消耗更多的存儲資源,存儲資源消耗對比如圖9所示,標(biāo)識符存儲受事務(wù)及區(qū)塊結(jié)構(gòu)數(shù)據(jù)影響較大,可按需進(jìn)一步考量存儲策略及數(shù)據(jù)壓縮策略以節(jié)省存儲資源.

圖9 存儲資源消耗對比圖

5 結(jié)論與展望

本文闡述了一種基于區(qū)塊鏈的持久標(biāo)識符系統(tǒng)并基于Handle 系統(tǒng)對其進(jìn)行了初步實(shí)現(xiàn).通過對已有標(biāo)識符系統(tǒng)訪問層的兼容,使現(xiàn)有系統(tǒng)從技術(shù)上獲得了延續(xù)性,同時通過區(qū)塊鏈系統(tǒng)的分布式一致性賬本優(yōu)勢使原有系統(tǒng)獲得更多的數(shù)據(jù)完整性與解析服務(wù)長期可用性,從而保障標(biāo)識符解析持久性.然而,基于區(qū)塊鏈的持久標(biāo)識符系統(tǒng)具有大量的標(biāo)識符服務(wù)參與成員,且參與成員的標(biāo)識符注冊量較多,這將對其成員服務(wù)節(jié)點(diǎn)造成過多的存儲壓力,在接下來研究中我們將繼續(xù)探究如何對壓縮標(biāo)識符數(shù)據(jù)同時改善事務(wù)打包策略或基于鏈外存儲方式,以期節(jié)省存儲資源,同時優(yōu)化解析流程從而保持高性能的解析能力.

猜你喜歡
標(biāo)識符事務(wù)解析
淺析5G V2X 通信應(yīng)用現(xiàn)狀及其側(cè)鏈路標(biāo)識符更新技術(shù)
“事物”與“事務(wù)”
基于分布式事務(wù)的門架數(shù)據(jù)處理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
基于底層虛擬機(jī)的標(biāo)識符混淆方法
三角函數(shù)解析式中ω的幾種求法
河湖事務(wù)
睡夢解析儀
電競初解析
商周刊(2017年12期)2017-06-22 12:02:01
數(shù)字美術(shù)館“數(shù)字對象唯一標(biāo)識符系統(tǒng)”建設(shè)需求淺議
相機(jī)解析
泗洪县| 宜阳县| 安龙县| 宾阳县| 兴文县| 松阳县| 左权县| 普兰店市| 四子王旗| 巴林左旗| 台东县| 浦县| 潞城市| 长沙市| 乌兰县| 金溪县| 镇巴县| 屏东县| 疏勒县| 土默特左旗| 潢川县| 佛冈县| 濮阳市| 陕西省| 华宁县| 长乐市| 阳泉市| 清镇市| 太湖县| 吐鲁番市| 车致| 枝江市| 应用必备| 蒲江县| 额济纳旗| 沾化县| 景泰县| 邓州市| 天峨县| 西林县| 太康县|