999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

具有區塊鏈結構的數據庫

2020-08-13 07:17:51任晉宏肖攸安黃文禹
軟件 2020年6期
關鍵詞:數據庫

任晉宏 肖攸安 黃文禹

摘 ?要: 區塊鏈是一種鏈式存儲數據結構,它的特點是對于數據修改有固有抵抗力,但在檢索方面有著較大的弊端。傳統SQL數據庫中由于開放數據訪問和復雜的網絡安全破壞機制所提供的易變環境,數據極易被篡改且無法被直接檢測到。本文通過借鑒區塊鏈技術思想,設計10區塊鏈結構數據表為傳統關系型數據庫賦予區塊鏈的防篡改、防偽特性,在保證數據可信的同時擁有較高的檢索速度。

關鍵詞: 區塊鏈;數據庫;防篡改;數據可信

中圖分類號: TP311 ? ?文獻標識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2020.06.013

本文著錄格式:任晉宏,肖攸安,黃文禹,等. 具有區塊鏈結構的數據庫[J]. 軟件,2020,41(06)6367

【Abstract】: Block chain is a kind of chained storage data structure, which has inherent resistance to data modification, but it has great disadvantages in retrieving information. Due to the volatile environment provided by open data access and complex network security failure mechanism in traditional SQL database, data is easily tampered and cannot be directly detected. In this essay, by referring to the block chain technology, the data table with blockchain structure is designed to give the block chain 25tamper-proof and anti-counterfeiting features to the traditional relational database, so as to ensure the data credibility and at the same time have a high retrieval speed.

【Key words】: Blockchain; Database; Tamper proof storage; Reliable data

0 ?引言

隨著Bitcoin、Ethereum、Ripple等加密貨幣的興起,其底層的區塊鏈技術不斷發展并受到各領域的密切關注[1]。區塊鏈技術規定了區塊鏈的數據定義,以比特幣為例,每個區塊由區塊頭和區塊體兩部分組成,區塊體中存放了自前一區塊之后發生的多筆交易;區塊頭中存放了前塊哈希(PreBlockHash)、隨機數(Nonce)、Merkle根(MerkleRoot)等[2]。區塊鏈是用于數據存儲并保證數據可信的鏈式數據結構。

區塊鏈的特點和它的缺點一樣突出,由于其較差的數據格式,它在搜索查詢方面不盡如人意。例如,比特幣中一個事物的發布、驗證和最終的確認可能需要1個小時甚至更久的時間[3]。傳統SQL數據庫不但有數據結構化的特點,還有快速查詢處理的優勢,但它不能抵抗數據修改。

為了實現同時具備區塊鏈對數據的固有抵抗力和高效的查詢速度,本文借鑒區塊鏈技術設計了區塊鏈結構的數據庫,通過對數據庫表增設hash、prehash等字段并結合數字簽名技術、哈希算法使其符合區塊鏈數據結構。數據庫中每條記錄可視作一個區塊,每個區塊的哈希值都包含前一區塊的哈希值,每個區塊的哈希不僅是為區塊數據提供篡改阻力的元數據,也是指向前一區塊的哈希指針;每個區塊中的數字簽名為數據提供了防偽證明。關系型數據庫中的數據庫表可視為一條區塊鏈,多張表可視為多條區塊鏈,可針對單張表進行數據校驗,驗證數據完整性。

1 ?區塊鏈結構數據庫

1.1 ?區塊鏈數據結構

區塊鏈中的每個區塊都通過散列值連接到前一個區塊,每個區塊主要由區塊頭和包含交易數據的區塊體組成[2]。區塊鏈的數據結構如表1所示。

區塊鏈中的前后區塊通過哈希值進行連接,哈希值是對交易數據和前一區塊的哈希值進行Hash運算得到的結果。為了生成區塊X,區塊X-1必須先于區塊X生成,所以區塊鏈可以在時間上向前遍歷檢測數據是否被篡改[4]。若要對區塊鏈上的數據進行篡改,則必須從初始寫入數據的區塊到當前時刻的所有區塊進行篡改。

1.2 ?面向關系型數據庫的區塊鏈數據結構

區塊鏈中的信息在邏輯上可分為兩部分,一部分為是要存儲的數據,另一部分是為存儲數據提供篡改阻力的元數據[4]。本文對Sql數據庫表的字段進行了設計,如表1.2所示,數據庫表的字段分為區塊頭(Blockhead)和數據(Data)兩部分:區塊頭中的字段有包含區塊編號id,前一區塊哈希(prev_ hash)、時間戳(timestamp)、本次交易哈希(hash)和交易簽名(signature);數據中的字段根據需存儲數據設計。數據庫中的每一張表可以視為一條區塊鏈,多張表可視為多條鏈,一張表中的每條數據可視為一個區塊。每個區塊中的Hash是由對本區塊的所有數據和前一區塊的Hash經過哈希運算得到,所以每個區塊的Hash都指向前一區塊。由此數據庫表中每條記錄構成一條區塊鏈,這樣每個新的區塊就會包含前一區塊的信息。

1.3 ?數據存儲流程

本文設計了區塊鏈處理器完成數據的寫入、讀取、修改、刪除和校驗功能。數據存儲過程如圖1所示,在接收到交易數據Data后,后臺連接數據庫獲取當前最新記錄的哈希值并賦值給Prehash字段,對Data、Prehash和當前系統時間Timestamp一起進行哈希運算生成Data的摘要值Hash,然后使用發送者的私鑰對Hash簽名,最后將Data、Prehash、Timestamp、Hash和Signature一起寫入數據庫中。

為保證區塊鏈完整性,不允許直接在數據庫中修改或刪除數據。為了符合多應用場景,有修改需求的需重新向后臺提交,在數據庫中生成一條有相同Id的新記錄。用戶查詢數據時,后臺會根據時間戳將最新記錄返回給用戶。若想要刪除數據,將各個字段賦值null,提交給后臺即可。

1.4 ?數據校驗流程

圖2為數據的校驗過程,首先在數據庫中檢索最新記錄的數據,然后對數據進行哈希運算,將運算結果與數據中的哈希值對比,若不匹配,則說明區塊X中的哈希值被篡改;然后根據數據中的preHash字段在數據庫中檢索上條記錄,若返回空值,則說明上條記錄被刪除或數據中的preHash被篡改;當檢測到preHash為空或檢測到數據被篡改時,結束循壞,將結果返回給用戶。

2 ?區塊鏈處理器

區塊鏈處理器對存儲數據進行編碼,以區塊的形式存入數據庫中,并對數據庫中區塊鏈結構數據進行校驗,驗證數據是否被篡改。

2.1 ?數據存儲算法

根據區塊鏈數據結構定義,數據庫表結構定義如下:

CREATE TABLE Blockchain

Field0 varchar(32),

Field1 varchar(32),

Field2 varchar(32),

prev_hash varchar(256), ? ? ? ? ? ? ?//前一區塊哈希

hash varchar(256), ? ? ? ? ? ? ? ? //該區塊哈希

timestamp timestamp, ? ? ? ? ? ? ?//時間戳

signature varchar(256) ? ? ? ? ? //交易簽名

);

接收到交易數據data后,區塊鏈處理器首先判斷數據庫表最新區塊是否為空,若為空,則對prehash賦值為null;否則獲取當前最新區塊的哈希值賦值給prehash,然后對data、時間戳timestamp和prehash一起進行哈希運算,生成新區塊的哈希值,最后將新區塊寫入數據庫中。

算法1.數據插入算法

輸入:交易數據data

//客戶端加密

1. String preHash = 當前數據庫中最新記錄的摘要值hash;

2. String hash = hashEncrypt(data,timestamp, preHash);

3. signature = RSAEncrypt(hash,privateKey);

4. sendMessage(data,hash,preHash,timestamp, signature);

//服務器端解密,存入數據庫

//hash1為對signature解密后的結果,hash為客戶端發送的哈希值

5. data,hash,preHash,timestamp,signature = receive(data,hash,preHash,timestamp,signature);

6. hash1 = RSADecrypt(signature,publicKey);

7. if(compareHash(hash,hash1)){

8. ? ?//將數據寫入數據庫中

9. }else{

10. ? ?//返回錯誤信息

11. }

算法1的第1行~第4行是有客戶端對數據使用哈希算法生成哈希值,使用用戶私鑰對數據的哈希值進行數字簽名,并發送給服務器端。

第5行是服務器端接收客戶端發送的數據。

第6行是使用用戶公鑰對簽名signature解密。

第7行~第11行是判斷解密哈希與發送的哈希值是否匹配。

2.2 ?數據校驗算法

數據校驗算法用于保證數據完整性,數據完整性遭到破壞的可能情況有兩種:部分區塊被刪除和區塊內數據被篡改。針對這兩種情況我們提出以下算法判別數據完整性。

算法2 ?校驗算法

輸入:無

輸出:數據未被篡改,返回null;檢測異常返回檢測出的第一條異常數據。

1. Data data = 當前最新區塊數據;

2. String preHash = data.getPrehash();

3. while (preHash != null){

4. ? ? try{

5. ? ? ? ? dataPre = 前一區塊哈希值;

6. ? ? ? ? } catch (Exception e){

7. ? ? ? ? return JsonData.buildError(-2,"前一區塊數據被刪除",data.getId());

8. ? ? ? ? }

9. ? ? String checkHash=HashUtils.genHash(data); ? ? ?//計算當前區塊的哈希值

10. ? ?String hash=data.getHash();

11. ? ?if(checkHash!=hash){

12. ? ? ? ?return Jsondata.buildError(-3,"數據被篡改");

13. ? ?}

14. ? ?preHash = dataPre.hash();

15. ? ?if(preHash = null){

16. ? ? ? ?return Jsondata.buildSucess();

17. ? ?}

18. }

算法2是在時間順序上向前遍歷,第3行代碼用于判別當前區塊是否為初始區塊。

第4行~第8行代碼通過當前區塊存儲的prehash檢索前一區塊數據,若檢索失敗,說明前一區塊數據被刪除。

第9行~第13行代碼通過對當前區塊存儲信息重新進行哈希運算來判別當前區塊的數據是否被篡改。

第15行~第17行代碼通過判斷prehash是否為null來確認該鏈是否校驗完成。

3 ?實驗

3.1 ?試驗1 篡改數據測試

將數據庫中訂單號為201910204291的區塊信息進行修改,使用校驗算法對發生篡改的區塊鏈進行校驗,查驗數據完整性,查驗結果如圖3所示。

刪除數據庫中訂單號為201910019023的區塊的前一區塊,使用校驗算法對這條區塊鏈進行校驗,查驗數據完整性,查驗結果如圖4所示。

3.2 ?試驗2 數據校驗性能測試

本文使用被動檢測機制保證數據可信,交易數據按照時間順序寫入數據庫中,交易信息校驗過程中要獲取當前交易數據和上一條數據的哈希值,使用算法重新當前交易的哈希值并與數據庫中存儲的哈希值相比較。我們測試在每條數據大小為322B,10000-50000條數據量情況下的校驗速度,如圖5所示,在10000-50000條數據范圍內,數據校驗速度與數據量大小成線性關系,在可接受的時間內保證數據可信。

3.3 ?試驗3 數據版本對查詢速率的影響

為保證數據以區塊鏈的鏈式結構存儲,不允許直接對數據庫中的數據進行修改或刪除,為滿足對修改和刪除的需求,我們通過在數據庫寫入有著相同主鍵的新記錄完成修改和刪除功能,在查詢數據時僅顯示時間戳最新的數據。我們設計了實驗測試數據版本數對查詢速率的影響,在10000條數據環境下,查詢大小為297b大小的數據。實驗結果如圖6所示,在修改24次數據后,單次查詢速度與修改4次數據后的單次查詢速度并未有明顯差距,說明版本數對數據查詢速率影響極低。

4 ?結論

本文借鑒區塊鏈思想提出了在關系型數據庫中以區塊鏈的鏈式結構存儲數據的方法和被動檢測機制,以此保證數據可信和數據檢索速率。通過實驗測試,實驗數據表明在保證數據可信的基礎上同時具有較高的數據檢索速率;在一定數據量范圍內,數據量與校驗速度呈線性關系,可只對關鍵字段進行加密處理,減少算法運行時間,提高校驗速度,之后會在此基礎上進一步研究提高校驗速率的方法。

參考文獻

[1] 焦通, 申德榮, 聶鐵錚, 寇月, 李曉華, 于戈. 區塊鏈數據庫: 一種可查詢且防篡改的數據庫[J]. 軟件學報, 2019, 30(9): 2671-2685.

[2] 邵奇峰, 金澈清, 張召, 錢衛寧, 周傲英, 區塊鏈技術: 架構及進展[OL]. (2017-11-15)[2019-12-03]. http://kns. cnki. net/kcms/detail/11. 1826. TP. 20171115. 2302. 006. html.

[3] Muhammad Muzammal, Qiang Qu, Bulat Nasrulin. Renovating blockchain with distributed databases: An open source system[J]. Future Generation Computer Systems, 2019, 90: 105-117.

[4] MANIFOLD TECHNOLOGY, INC, MENLO PARK, CA (US). BLOCKCHAIN-ENHANCED DATABASE[P]. US 2017/0228371, A1. Aug. 10, 201.

[5] Conaghy T, Marques R, Müller A, Jonghe DD, McConaghy TT, McMullen G, Henderson R, Bellemare S, Granzotto A. ?BigchainDB: A scable blockchain database[OL]. (2016-06-08) [2019-12-03]. https://www.bigchaindb.com/whitepaper.

[6] 騰訊FiT, 騰訊研究院. 騰訊區塊鏈方案白皮書[Z]. WhitePaper, 2017.

[7] 蔣東東. 寶武集團區塊鏈可信電子倉單系統的研發[D]. 西安: 西安工程大學, 2018.

[8] 葛利潔. 基于區塊鏈技術的交易信息存儲與查詢系統的設計與實現[D]. 北京: 北京郵電大學, 2018.

[9] 北京眾享比特科技有限公司. 基于區塊鏈的數據庫應用平臺技術白皮書[Z]. WhitePaper, 2017.

[10] 張偲. 區塊鏈技術原理、應用及建議[J]. 軟件, 2016, 37(11): 51-54.

[11] 尚永強. 計算機網絡信息安全中數據加密技術的探討[J]. 軟件, 2018, 39(12): 198-201.

猜你喜歡
數據庫
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
兩種新的非確定數據庫上的Top-K查詢
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
數據庫
財經(2015年3期)2015-06-09 17:41:31
數據庫
財經(2014年21期)2014-08-18 01:50:18
數據庫
財經(2014年6期)2014-03-12 08:28:19
數據庫
財經(2013年6期)2013-04-29 17:59:30
主站蜘蛛池模板: 国产精品国产主播在线观看| 亚洲精品天堂自在久久77| 亚洲成人黄色网址| 亚洲第一成年网| 欧美激情成人网| 亚洲欧美成人综合| 欧美色香蕉| 日韩精品欧美国产在线| 亚洲欧洲日产国码无码av喷潮| 性视频久久| 2021国产在线视频| 9啪在线视频| 福利视频一区| 久久天天躁夜夜躁狠狠| 中文字幕天无码久久精品视频免费| 超碰色了色| 久久77777| 国产欧美精品午夜在线播放| 秋霞一区二区三区| 69视频国产| 久久久久人妻一区精品| 国产人成在线视频| 一级片免费网站| 精品伊人久久久香线蕉 | 久久大香香蕉国产免费网站| 伊在人亚洲香蕉精品播放| 波多野一区| 国产在线视频自拍| 丁香六月激情综合| 国产jizz| 青草视频在线观看国产| 日韩免费毛片| 日韩精品一区二区三区免费在线观看| 日韩国产综合精选| 免费在线国产一区二区三区精品| 国产精品播放| 欧洲亚洲欧美国产日本高清| 在线不卡免费视频| 亚洲视屏在线观看| 国产福利微拍精品一区二区| 被公侵犯人妻少妇一区二区三区| 亚洲精品视频免费| 91精品网站| 91精品国产91久久久久久三级| 色综合久久综合网| 国产幂在线无码精品| 青青青视频蜜桃一区二区| 久久精品国产一区二区小说| 成年午夜精品久久精品| 九九免费观看全部免费视频| 一级毛片在线直接观看| 亚洲第一色网站| m男亚洲一区中文字幕| 亚洲日韩精品伊甸| 成人免费网站久久久| 国产JIZzJIzz视频全部免费| 99热最新网址| 国产在线拍偷自揄拍精品| 男人天堂伊人网| 国产在线无码av完整版在线观看| 欧洲极品无码一区二区三区| 日韩不卡免费视频| 97色伦色在线综合视频| 国产激情无码一区二区APP| 亚洲无码四虎黄色网站| 亚洲AⅤ综合在线欧美一区| 欧美三级视频网站| 亚洲国产理论片在线播放| 免费人欧美成又黄又爽的视频| 国产一级特黄aa级特黄裸毛片| 日本成人一区| 暴力调教一区二区三区| 国产亚洲美日韩AV中文字幕无码成人 | 久久黄色影院| 国产精品 欧美激情 在线播放 | 九九这里只有精品视频| 在线免费看黄的网站| 无码内射在线| 91色综合综合热五月激情| 在线免费看黄的网站| 国产日韩欧美一区二区三区在线 | 91免费精品国偷自产在线在线|