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

?

基于區(qū)塊鏈的數(shù)據(jù)存儲方案的實(shí)現(xiàn)方法研究

2022-11-22 09:08:18張亞蘋楊少英
信息記錄材料 2022年9期
關(guān)鍵詞:哈希區(qū)塊服務(wù)器

張亞蘋,楊少英

(廣東科技學(xué)院 廣東 東莞 523000)

0 引言

根據(jù)有關(guān)部門的推測,預(yù)計(jì)在2025年時(shí)全世界的數(shù)據(jù)生產(chǎn)量會是2016年的10倍,數(shù)據(jù)預(yù)計(jì)達(dá)到163 ZB。如此龐大的數(shù)據(jù)增長促使數(shù)據(jù)存儲行業(yè)進(jìn)行改革發(fā)展,以指數(shù)形式增長的數(shù)據(jù)使得傳統(tǒng)的集中式數(shù)據(jù)存儲系統(tǒng)不堪重負(fù)。傳統(tǒng)的數(shù)據(jù)存儲系統(tǒng)幾乎均采取中心管理式的存儲方式,在如此大量的數(shù)據(jù)面前,傳統(tǒng)的數(shù)據(jù)存儲方案的集中管理可靠性低、擴(kuò)展性差、成本昂貴等缺點(diǎn)被不停放大,如此一來傳統(tǒng)的數(shù)據(jù)存儲系統(tǒng)也將逐漸退出歷史舞臺。

伴隨著云計(jì)算的橫空出世,分布式的數(shù)據(jù)存儲模式也隨之誕生。分布式的存儲服務(wù)器采用易于擴(kuò)張的系統(tǒng)架構(gòu),使用散布在各個(gè)位置的存儲服務(wù)器來共同存儲數(shù)據(jù),存儲數(shù)據(jù)的位置信息由特定的服務(wù)器進(jìn)行記錄[1]。 然而分布式存儲環(huán)境的不穩(wěn)定以及高度集中化的管理,使得用戶的數(shù)據(jù)面臨泄露和被非法入侵的問題。為了在提供一定的數(shù)據(jù)存儲服務(wù)能力的同時(shí)保障用戶隱私安全,基于區(qū)塊鏈的分布式存儲系統(tǒng)由此誕生。

比特幣的橫空出世使得其底層技術(shù)區(qū)塊鏈也首次踏入了21世紀(jì),無中心服務(wù)器管理的分布式存儲系統(tǒng)最大的特性就是安全、無第三方機(jī)構(gòu)參與,同時(shí)利用點(diǎn)對點(diǎn)通信網(wǎng)絡(luò)來實(shí)現(xiàn)性能高效、成本低廉等特性。與傳統(tǒng)的數(shù)據(jù)存儲方案相比,利用區(qū)塊鏈技術(shù)構(gòu)建的數(shù)據(jù)存儲方案可以有效地確保數(shù)據(jù)的完整性和有效性,同時(shí)區(qū)塊鏈也為全世界的數(shù)據(jù)存儲行業(yè)提供一個(gè)新的存儲方向從而緩解大量數(shù)據(jù)的存儲壓力[2]。

1 區(qū)塊鏈系統(tǒng)需求分析及關(guān)鍵技術(shù)

1.1 區(qū)塊鏈系統(tǒng)需求分析

本系統(tǒng)是基于區(qū)塊鏈實(shí)現(xiàn)的簡易數(shù)據(jù)存儲服務(wù)器,該系統(tǒng)可以較為良好地實(shí)現(xiàn)區(qū)塊鏈的基礎(chǔ)特性。存儲于該服務(wù)器中的數(shù)據(jù)具有不可篡改的特性,同時(shí)本系統(tǒng)是去中心化管理的,沒有服務(wù)器會對系統(tǒng)進(jìn)行維護(hù),因此在系統(tǒng)運(yùn)行時(shí)要確保應(yīng)用層的功能盡可能地簡便,而底層支持功能要盡可能地完善以保障系統(tǒng)的正常運(yùn)轉(zhuǎn)。系統(tǒng)應(yīng)用層的功能是:數(shù)據(jù)發(fā)送和數(shù)據(jù)展示功能。系統(tǒng)的底層支持功能主要有:提交數(shù)據(jù)(挖礦)、注冊節(jié)點(diǎn)、沖突解決等。綜上所述,本系統(tǒng)可以分為應(yīng)用層與底層支持兩個(gè)模塊,如圖1所示。

圖1 系統(tǒng)總體框圖

1.2 區(qū)塊鏈系統(tǒng)關(guān)鍵技術(shù)

1.2.1 點(diǎn)對點(diǎn)網(wǎng)絡(luò)通信

點(diǎn)對點(diǎn)網(wǎng)絡(luò)(peer-to-peer)又名對等式網(wǎng)絡(luò),是一個(gè)無服務(wù)器管理的開放式節(jié)點(diǎn)網(wǎng)絡(luò),網(wǎng)絡(luò)由各個(gè)節(jié)點(diǎn)共同維護(hù)。在點(diǎn)對點(diǎn)網(wǎng)絡(luò)中用戶可以作為節(jié)點(diǎn)參與整個(gè)服務(wù)器,節(jié)點(diǎn)可以同時(shí)作為前端與后端,前端為用戶提供相應(yīng)功能,后端則是在后臺作為服務(wù)器進(jìn)行使用。在對等式網(wǎng)絡(luò)中節(jié)點(diǎn)與節(jié)點(diǎn)之間無法直接進(jìn)行聯(lián)系,節(jié)點(diǎn)與節(jié)點(diǎn)之間的交互聯(lián)系必須依靠網(wǎng)絡(luò)來實(shí)現(xiàn)。在一個(gè)開放的點(diǎn)對點(diǎn)網(wǎng)絡(luò)中,每個(gè)節(jié)點(diǎn)都可以擁有完整的數(shù)據(jù),即便單點(diǎn)出現(xiàn)故障也很難影響整個(gè)系統(tǒng)的數(shù)據(jù)安全[3]。

1.2.2 數(shù)字加密技術(shù)

數(shù)字加密技術(shù)簡而言之就是將一段需要進(jìn)行保護(hù)的文件數(shù)據(jù)通過特定的算法手段將其變成一段無意義的數(shù)據(jù),文件接收者可以通過特定的算法對無意義的數(shù)據(jù)進(jìn)行還原,數(shù)據(jù)內(nèi)容在還原后不會發(fā)生變化,在文件數(shù)據(jù)的加密過程中可以有效地保護(hù)數(shù)據(jù)的安全。加密技術(shù)根據(jù)使用方法不同可以分為:對稱加密和非對稱加密。

1.2.3 共識機(jī)制

共識機(jī)制是區(qū)塊鏈技術(shù)關(guān)鍵的組件,在區(qū)塊鏈的分布式存儲管理中,由于缺乏中心服務(wù)器的管理,在新數(shù)據(jù)被寫入服務(wù)器后,節(jié)點(diǎn)之間更新數(shù)據(jù)的速度不一樣,共識機(jī)制的存在可以確保節(jié)點(diǎn)之間達(dá)成共識,可以確保節(jié)點(diǎn)之間存儲的數(shù)據(jù)具有一致性[4]。目前主流的共識機(jī)制有:工作量證明機(jī)制(POW)、權(quán)益證明機(jī)制(POS)、股份授權(quán)證明機(jī)制(DPOS)、驗(yàn)證池(POOL)。

1.2.4 區(qū)塊鏈技術(shù)

區(qū)塊鏈從原理上可以理解成是一個(gè)無中心服務(wù)器管理的分布式數(shù)據(jù)庫。區(qū)塊鏈由眾多合法的區(qū)塊共同連接而成,每個(gè)區(qū)塊都存儲著其自身的哈希值,區(qū)塊哈希值依據(jù)哈希算法不可逆地產(chǎn)生,因此每個(gè)區(qū)塊都有不同的特征值。同時(shí)每個(gè)區(qū)塊都存儲著上一個(gè)區(qū)塊的哈希值和區(qū)塊被創(chuàng)建時(shí)的時(shí)間戳,區(qū)塊鏈通過相鄰區(qū)塊的哈希值進(jìn)行連接。因而如果想要修改某一個(gè)區(qū)塊上的數(shù)據(jù),從理論上應(yīng)該修改3個(gè)及以上數(shù)量的區(qū)塊信息才可實(shí)現(xiàn)。但由于區(qū)塊鏈的分布式網(wǎng)絡(luò)的存在,數(shù)據(jù)篡改幾乎難以實(shí)現(xiàn),如果擁有具有修改區(qū)塊鏈數(shù)據(jù)的算力,通過篡改數(shù)據(jù)獲得的收益遠(yuǎn)不如在區(qū)塊鏈系統(tǒng)中合法“挖礦”獲得的獎(jiǎng)勵(lì)。公有鏈?zhǔn)峭耆_放的網(wǎng)絡(luò),其特點(diǎn)是任何用戶均可注冊加入該網(wǎng)絡(luò)。完全開放的公有鏈中不存在任何服務(wù)器或組織對節(jié)點(diǎn)網(wǎng)絡(luò)進(jìn)行管理,因此公有鏈的去中心化程度是三類區(qū)塊鏈中最高的。公有鏈的代表是出現(xiàn)時(shí)間最早,發(fā)展也最為成熟的比特幣交易系統(tǒng)[5]。

私有鏈?zhǔn)怯赡硞€(gè)機(jī)構(gòu)或個(gè)人控制的區(qū)塊鏈。用戶想要將數(shù)據(jù)寫入?yún)^(qū)塊或者創(chuàng)建新區(qū)塊,需得到機(jī)構(gòu)或相關(guān)節(jié)點(diǎn)的授權(quán)。私有鏈與公有鏈對比,交易的周期花費(fèi)的時(shí)間更短,交易的成本更為廉價(jià)。私有鏈在保護(hù)用戶數(shù)據(jù)這一方的性能也更加優(yōu)越,因?yàn)樗接墟湹膮^(qū)塊鏈信息不會對全網(wǎng)公開。聯(lián)盟鏈,是在多方機(jī)構(gòu)共同監(jiān)督下運(yùn)行的區(qū)塊鏈,由機(jī)構(gòu)控制網(wǎng)絡(luò)中的節(jié)點(diǎn),再利用節(jié)點(diǎn)來存儲區(qū)塊鏈中的數(shù)據(jù),多方組織機(jī)構(gòu)共同維護(hù)整條區(qū)塊鏈的利益。從本質(zhì)上而言,聯(lián)盟鏈算是一種特殊私有鏈,不過相對于普通的私有鏈,聯(lián)盟鏈的去中心化程度較高。聯(lián)盟鏈的代表為螞蟻金服于2020年推出的螞蟻聯(lián)盟鏈,其旨在通過一種更為簡便的方式來實(shí)現(xiàn)商業(yè)的聯(lián)盟鏈發(fā)展,幫助小微企業(yè)在不同的區(qū)塊鏈上開發(fā)更好的應(yīng)用以及智能合約。

2 區(qū)塊鏈系統(tǒng)設(shè)計(jì)

2.1 區(qū)塊鏈存儲系統(tǒng)開發(fā)環(huán)境

本系統(tǒng)基于Python語言進(jìn)行編碼開發(fā),前端網(wǎng)頁使用Python的Flask框架。Flask與Python有很好的兼容性,可以較為出色地完成網(wǎng)頁的開發(fā)。

Flask框架誕生于2010年,是一個(gè)用Python語言基于werkzeug工具箱編寫的輕量級Web開發(fā)框架。它主要面向內(nèi)容較少、周期較短的小項(xiàng)目。依賴其簡易的使用特性可以較為出色地完成本系統(tǒng)的框架搭建。

下面將對Flask中使用到的路由協(xié)議和Http常用的請求方法進(jìn)行簡單的描述。

2.1.1 路由(Route)

當(dāng)用戶在使用網(wǎng)頁發(fā)送數(shù)據(jù)時(shí),網(wǎng)頁會將用戶的請求轉(zhuǎn)交發(fā)送給程序?qū)嵗?,在程序?qū)嵗杏涊d了接收到不同請求時(shí)應(yīng)返回的數(shù)據(jù)內(nèi)容。由于程序?qū)嵗袩o法直接處理多種類型的請求,需要一個(gè)中介進(jìn)行信息的轉(zhuǎn)換,可以使得程序?qū)嵗诮邮盏骄W(wǎng)頁發(fā)送的請求時(shí),可以直接返回相應(yīng)的內(nèi)容。這個(gè)進(jìn)行信息轉(zhuǎn)換的中介便是路由,在路由中存儲了各種請求與對應(yīng)的特定函數(shù)的關(guān)系表,在FLASK中使用route()來將用戶的請求轉(zhuǎn)換成程序?qū)嵗械暮瘮?shù)。

2.1.2 Http的常用請求方法

Http協(xié)議是一個(gè)使用范圍最大的Internet協(xié)議,目前主流的請求方式有8種,分別是GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。

下面將對GET、POST、PUT方法進(jìn)行簡單的介紹。

GET方法是利用特定的URI在特定的服務(wù)器中發(fā)出請求信息,可以簡單理解為GET方法是用于請求獲取指定的資源。GET請求是可以被瀏覽器進(jìn)行記錄保存的,當(dāng)發(fā)生遺漏時(shí),用戶可以在瀏覽器的歷史訪問記錄中找回GET請求。GET請求只能用于向指定資源請求獲取數(shù)據(jù),請求長度也存成一定的限制。

POST方法可以將數(shù)據(jù)發(fā)送至指定的資源中,使得服務(wù)器創(chuàng)建新的資源或者修改已有的資源。與上述的GET請求不同,瀏覽器無法記錄POST請求,請求的內(nèi)容也不存在限制。

PUT方法,PUT請求的功能也是向服務(wù)器進(jìn)行信息的發(fā)送。PUT方法與POST方法的不同之處在于,POST請求每次都會讓服務(wù)器創(chuàng)建一個(gè)文件,而PUT請求只是請求服務(wù)器將資源進(jìn)行更新??梢院唵卫斫鉃?,PUT請求用于更新資源,POST請求用于創(chuàng)建資源。

2.2 創(chuàng)建區(qū)塊

區(qū)塊鏈中任何一個(gè)區(qū)塊都需包含上一個(gè)區(qū)塊的哈希值、本區(qū)塊的哈希值、數(shù)據(jù)內(nèi)容、時(shí)間戳這四項(xiàng)最為基礎(chǔ)的信息。區(qū)塊如圖2所示。

圖2 區(qū)塊框圖

初始區(qū)塊(祖先區(qū)塊):祖先區(qū)塊是區(qū)塊鏈最初始的一環(huán),它后面連接著眾多區(qū)塊。祖先區(qū)塊的區(qū)塊信息中不含上一區(qū)塊的哈希值,這是最為關(guān)鍵的不同之處。區(qū)塊連接圖如3所示。

圖3 區(qū)塊連接圖

2.3 工作量證明機(jī)制(POW)

本系統(tǒng)采用簡單的工作量證明機(jī)制,系統(tǒng)需計(jì)算出一段滿足系統(tǒng)需求的數(shù)字。計(jì)算難度設(shè)置在計(jì)算出一段特殊數(shù)字中開頭數(shù)字為0的數(shù)量,程序思想采用窮舉法實(shí)現(xiàn)。程序如下所示:

計(jì)算出一串特殊的數(shù)字后,需對該數(shù)字再次進(jìn)行驗(yàn)證,驗(yàn)證通過后才能確認(rèn)這一段特殊數(shù)字的有效性。驗(yàn)證的方法是直接驗(yàn)證特殊數(shù)字是否滿足設(shè)置的難度要求,驗(yàn)證規(guī)則是判斷數(shù)字0的數(shù)量是否大于或等于難度要求的數(shù)量。

程序示例:guessHash[:4]=='0000',這段程序中數(shù)字0的數(shù)量可以進(jìn)行改變,比特幣系統(tǒng)也同樣使用這類最為簡便直接有效的驗(yàn)證方法。但比特幣的難度是處于動態(tài)的自我調(diào)節(jié)中,由系統(tǒng)進(jìn)行自動調(diào)整計(jì)算難度。比特幣系統(tǒng)會根據(jù)在目前算力環(huán)境下所花費(fèi)的時(shí)間進(jìn)行調(diào)整。截至今天計(jì)算難度已經(jīng)達(dá)到21.87T,需計(jì)算出前17位數(shù)字為0的特殊數(shù)字(哈希值)。具體實(shí)現(xiàn)流程圖如圖4所示。

圖4 POW模塊程序流程框圖

3 區(qū)塊鏈系統(tǒng)實(shí)現(xiàn)

本系統(tǒng)采用Python的Flask框架來實(shí)現(xiàn)添加API接口,API接口是后端負(fù)責(zé)接收請求、響應(yīng)純數(shù)據(jù)的端口。對于區(qū)塊鏈系統(tǒng)而言,實(shí)現(xiàn)新交易數(shù)據(jù)、查詢顯示數(shù)據(jù)、注冊節(jié)點(diǎn)模塊、解決沖突模塊都是非常關(guān)鍵。在所實(shí)現(xiàn)的技術(shù)領(lǐng)域上應(yīng)當(dāng)將區(qū)塊鏈的整體設(shè)計(jì)與模塊化的實(shí)現(xiàn)關(guān)聯(lián)起來,讓系統(tǒng)表現(xiàn)得更加充分。

3.1 提交新交易模塊

創(chuàng)建一個(gè)接口供于提交新數(shù)據(jù),提交的數(shù)據(jù)包括作者及其數(shù)據(jù)。首先獲取信息數(shù)據(jù),將獲取的內(nèi)容轉(zhuǎn)換成JSON格式。再確認(rèn)接收的數(shù)據(jù)是否滿足“作者+內(nèi)容”的數(shù)據(jù)格式,若滿足則將其添加至新數(shù)據(jù),不滿足則返回提交數(shù)據(jù)不符合規(guī)則的提示。

3.2 查詢顯示數(shù)據(jù)

創(chuàng)建一個(gè)API,該API的功能用于返回區(qū)塊鏈中的交易內(nèi)容。這個(gè)接口可以獲取完整的區(qū)塊鏈內(nèi)容,并將其按照時(shí)間順序進(jìn)行顯示。

3.3 注冊節(jié)點(diǎn)模塊

注冊節(jié)點(diǎn)不同于上述的提交交易模塊和顯示數(shù)據(jù)模塊,注冊節(jié)點(diǎn)是POST請求,不是GET請求。用戶需使用Postman軟件或者curl來實(shí)現(xiàn)注冊節(jié)點(diǎn)。注冊節(jié)點(diǎn)需要注意注冊節(jié)點(diǎn)的格式,其格式需滿足要求。

3.4 解決沖突模塊

服務(wù)器網(wǎng)絡(luò)處于一個(gè)動態(tài)的變化之中,不斷有新區(qū)塊的產(chǎn)生,當(dāng)網(wǎng)絡(luò)中的節(jié)點(diǎn)確認(rèn)的區(qū)塊數(shù)量發(fā)生分歧時(shí),需要一個(gè)解決沖突的方案。方案采用最為簡便有效的方法,最長鏈唯一有效制。模塊思想是尋求最長的鏈,并將出現(xiàn)問題節(jié)點(diǎn)的鏈的長度二者進(jìn)行比較,鏈的長度較長的一方有效,將取代另一方。由此,沖突模塊能夠讓區(qū)塊鏈系統(tǒng)形成協(xié)調(diào)作用。

4 總結(jié)

系統(tǒng)基于一個(gè)單機(jī)網(wǎng)絡(luò),無法實(shí)現(xiàn)其他設(shè)備對系統(tǒng)的訪問,在后續(xù)可以考慮設(shè)計(jì)局域網(wǎng)絡(luò)實(shí)現(xiàn)接入同一個(gè)網(wǎng)絡(luò)均可訪問的功能;系統(tǒng)處于一個(gè)開放的輸入環(huán)境,用戶輸入的昵稱是操作者個(gè)人進(jìn)行輸入的,無法有效地驗(yàn)證其身份。由于用戶的不確定性身份,無法在系統(tǒng)中實(shí)現(xiàn)數(shù)字簽名的功能;新注冊的節(jié)點(diǎn)無法實(shí)現(xiàn)單獨(dú)挖礦的功能,故新注冊的節(jié)點(diǎn)只能進(jìn)行查看區(qū)塊鏈的操作,在后續(xù)的改善中希望可以實(shí)現(xiàn)新注冊節(jié)點(diǎn)實(shí)現(xiàn)“挖礦”的操作。

猜你喜歡
哈希區(qū)塊服務(wù)器
區(qū)塊鏈:一個(gè)改變未來的幽靈
科學(xué)(2020年5期)2020-11-26 08:19:12
區(qū)塊鏈:主要角色和衍生應(yīng)用
科學(xué)(2020年6期)2020-02-06 08:59:56
通信控制服務(wù)器(CCS)維護(hù)終端的設(shè)計(jì)與實(shí)現(xiàn)
區(qū)塊鏈+媒體業(yè)的N種可能
傳媒評論(2018年4期)2018-06-27 08:20:12
讀懂區(qū)塊鏈
得形忘意的服務(wù)器標(biāo)準(zhǔn)
計(jì)算機(jī)網(wǎng)絡(luò)安全服務(wù)器入侵與防御
基于OpenCV與均值哈希算法的人臉相似識別系統(tǒng)
基于維度分解的哈希多維快速流分類算法
基于同態(tài)哈希函數(shù)的云數(shù)據(jù)完整性驗(yàn)證算法
南京市| 宾阳县| 尉犁县| 霍林郭勒市| 宁南县| 林周县| 德州市| 新平| 古蔺县| 塔河县| 会同县| 海晏县| 武乡县| 拜泉县| 夏津县| 孝感市| 乃东县| 九寨沟县| 正安县| 西充县| 兴安县| 青州市| 宝应县| 福海县| 渑池县| 长丰县| 磐安县| 柞水县| 海安县| 新源县| 湘乡市| 高邑县| 凌云县| 玉龙| 安溪县| 新安县| 金昌市| 贵南县| 蓝田县| 巴中市| 随州市|