版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)構(gòu)建高等職業(yè)教育新目錄新專標電子與信息大類教材區(qū)塊鏈部署與運維第二章01創(chuàng)建區(qū)塊任務(wù)布置:學習區(qū)塊賬本基本概念。學習區(qū)塊整體結(jié)構(gòu)。認識創(chuàng)世區(qū)塊。編碼創(chuàng)建一個區(qū)塊。創(chuàng)建區(qū)塊從宏觀上講,賬本(Ledger)是具有一定格式的,以會計憑證為依據(jù),對所有經(jīng)濟業(yè)務(wù)進行序時分類記錄的若干賬頁組成的本籍,也就是通常我們所說的賬冊。區(qū)塊鏈表示一種特有的數(shù)據(jù)記錄格式。所謂的區(qū)塊就是數(shù)據(jù)塊的意思,每一個區(qū)塊之間通過某個標志連接起來,從而形成一條鏈,區(qū)塊鏈就是“區(qū)塊+鏈”。區(qū)塊賬本(Ledgerium)是一種分布式數(shù)字分類賬,以可驗證和永久的方式高效地記錄各方之間的交易。創(chuàng)建區(qū)塊
區(qū)塊賬本區(qū)塊賬本生態(tài)系統(tǒng)有三個主要組成部分:區(qū)塊賬本、身份認證平臺、區(qū)塊賬本文件存儲系統(tǒng)。區(qū)塊賬本擁有靈活多變的形式,可以獨立存在。創(chuàng)建區(qū)塊在區(qū)塊鏈中賬本層負責區(qū)塊鏈系統(tǒng)的信息存儲,包括收集交易數(shù)據(jù)、生成數(shù)據(jù)區(qū)塊、對本地數(shù)據(jù)進行合法性校驗,以及將校驗通過的區(qū)塊加到鏈上。賬本層將上一個區(qū)塊的簽名嵌入下一個區(qū)塊中組成塊鏈式數(shù)據(jù)結(jié)構(gòu),使數(shù)據(jù)完整性和真實性得到保障,這正是區(qū)塊鏈系統(tǒng)防篡改、可追溯特性的來源。典型的區(qū)塊鏈系統(tǒng)數(shù)據(jù)賬本設(shè)計采用了一種按時間順序存儲的塊鏈式數(shù)據(jù)結(jié)構(gòu)。創(chuàng)建區(qū)塊賬本層有兩種數(shù)據(jù)記錄方式,分別是基于資產(chǎn)和基于賬號的?;谫Y產(chǎn)的數(shù)據(jù)模型中,首先以資產(chǎn)為核心進行建模,然后記錄資產(chǎn)的所有權(quán),即所有權(quán)是資產(chǎn)的一個字段?;谫~號的數(shù)據(jù)模型中,建立賬號作為資產(chǎn)和交易的對象,資產(chǎn)是賬號下的一個字段。相比而言,基于賬號的數(shù)據(jù)模型可以更方便地記錄、查詢賬號相關(guān)信息,基于資產(chǎn)的數(shù)據(jù)模型可以更好地適應(yīng)并發(fā)環(huán)境。為了獲取高并發(fā)的處理性能,并且及時查詢到賬號的狀態(tài)信息,多個區(qū)塊鏈平臺正向兩種數(shù)據(jù)模型的混合模式發(fā)展。創(chuàng)建區(qū)塊區(qū)塊結(jié)構(gòu)真實的區(qū)塊鏈是一條長度不斷增長的鏈表結(jié)構(gòu),主要由區(qū)塊和哈希指針構(gòu)成。區(qū)塊是收納交易的容器,俗稱的礦工挖礦就是把交易打包到區(qū)塊中,然后把這個區(qū)塊告訴其他礦工:“嘿,各位礦友們,這些交易我已經(jīng)打包在這個塊里了,你們不用管這些交易了,繼續(xù)在我的后面打包其他交易到新的塊里吧”。創(chuàng)建區(qū)塊區(qū)塊鏈和區(qū)塊的結(jié)構(gòu)如圖2-1所示。創(chuàng)建區(qū)塊由圖2-1可知,區(qū)塊是區(qū)塊鏈的核心主體,一個區(qū)塊主要由兩部分組成:區(qū)塊頭和由交易列表構(gòu)成的區(qū)塊主體。具體可以用表2-1表示比特幣區(qū)塊整體結(jié)構(gòu)。創(chuàng)建區(qū)塊區(qū)塊鏈里的第一個區(qū)塊創(chuàng)建于2009年,被稱為創(chuàng)世區(qū)塊。它是區(qū)塊鏈里面所有區(qū)塊的共同祖先,這意味著你從任一區(qū)塊循序回溯,最終都將到達創(chuàng)世區(qū)塊。因為創(chuàng)世區(qū)塊已經(jīng)預(yù)先寫入到比特幣客戶端軟件里,這能確保創(chuàng)世區(qū)塊不會被改變。每一個節(jié)點都“知道”創(chuàng)世區(qū)塊的哈希值、結(jié)構(gòu)、被創(chuàng)建的時間和里面的每一個交易。創(chuàng)世區(qū)塊創(chuàng)建區(qū)塊因此,每個節(jié)點都把該區(qū)塊作為區(qū)塊鏈的首區(qū)塊,從而構(gòu)建了一個安全、可信的區(qū)塊鏈的根。創(chuàng)建區(qū)塊創(chuàng)世區(qū)塊是區(qū)塊鏈上的第一個區(qū)塊,比特幣區(qū)塊鏈的創(chuàng)世區(qū)塊信息如圖2-2所示。創(chuàng)建區(qū)塊中本聰挖出的比特幣創(chuàng)世區(qū)塊還包含這樣一句話“TheTimes03/Jan/2009Chancelloronbrinkofseeondbailoutforbanks"。這句話是《泰晤士報》當天的頭版文章標題,引用這句話既是對該區(qū)塊產(chǎn)生時間的說明,也可視為半開玩笑地提醒人們一個獨立的貨幣制度的重要性,同時告訴人們隨著比特幣的發(fā)展,一場前所未有的世界性貨幣革命將要到來。該消息由比特幣的創(chuàng)立者中本聰嵌入創(chuàng)世區(qū)塊中。創(chuàng)建區(qū)塊區(qū)塊結(jié)構(gòu)設(shè)計。創(chuàng)建區(qū)塊編碼創(chuàng)建區(qū)塊生成創(chuàng)世區(qū)塊。創(chuàng)建區(qū)塊生成區(qū)塊設(shè)計。創(chuàng)建區(qū)塊生成區(qū)塊鏈結(jié)構(gòu)設(shè)計。創(chuàng)建區(qū)塊運行區(qū)塊鏈代碼。創(chuàng)建區(qū)塊填寫任務(wù)評價表,如表2-2所示。創(chuàng)建區(qū)塊02生成Merkle樹任務(wù)場景區(qū)塊鏈中的交易都是一個個獨立的數(shù)據(jù),這些數(shù)據(jù)如何高效保存和查詢呢?利用Hash算法和Merkle樹,我們就可以將數(shù)據(jù)高效地組織在一起。通過Merkle樹最上端的Merkle根,就可以保證這些數(shù)據(jù)不被篡改并且可以利用生成路徑上的哈希值來判斷某一個數(shù)據(jù)是否屬于這個Merkle樹。生成Merkle樹Merkle樹是一種哈希二叉樹,它是一種用作快速歸納和校驗大規(guī)模數(shù)據(jù)完整性的數(shù)據(jù)結(jié)構(gòu),它是區(qū)塊鏈技術(shù)里主要使用的數(shù)據(jù)結(jié)構(gòu)原型。在比特幣網(wǎng)絡(luò)中,Merkle樹被用來歸納一個區(qū)塊中的所有交易,同時生成整個交易集合的根哈希,并且提供了一種校驗區(qū)塊是否存在某交易的高效途徑。Merkle樹基礎(chǔ)知識生成Merkle樹生成一棵完整的Merkle樹需要遞歸地對哈希節(jié)點(底層是交易哈希處理后的哈希節(jié)點)進行哈希操作,并將新生成的哈希節(jié)點插入Merkle樹中,直到只剩一個哈希節(jié)點,該節(jié)點就是Merkle樹的根。生成Merkle樹在比特幣的Merkle樹中兩次使用到了SHA256算法,因此其加密哈希算法也被稱為double-SHA256.Merkle樹(哈希二叉樹)如圖2-3所示。生成Merkle樹Merkle根哈希是區(qū)塊主體的核心濃縮,它是該區(qū)塊中所有交易構(gòu)成的哈希二叉樹的根的哈希值。Merkle樹是自底向上構(gòu)建的數(shù)據(jù)結(jié)構(gòu),所以可由根部搜尋到任何一個在該樹中的數(shù)據(jù),簡而言之就是通過Merkle根哈希可以搜尋出任何一筆存儲在該區(qū)塊中的交易。同時又使得區(qū)塊頭存儲的數(shù)據(jù)非常小,只有32字節(jié),為快速驗證交易(如SPV)提供了可能。生成Merkle樹如圖2-4所示就是比特幣完整區(qū)塊結(jié)構(gòu)。生成Merkle樹sha256哈希函數(shù)的使用:聲明使用UTF-8格式,并且引入哈希函數(shù)的包。編寫list_hashing函數(shù),使得數(shù)據(jù)列表中的每一個數(shù)據(jù)都能夠變?yōu)槠鋵?yīng)的哈希值。編寫catenate_hash函數(shù),將兩個數(shù)據(jù)拼接在一起后進行sha256哈希操作,以十六進制摘要的形式輸出。生成Merkle樹Merkle樹生成實現(xiàn)01020304建立MerkleTree類,編寫初始化函數(shù)。生成一棵Merkle樹編寫generate函數(shù),將本區(qū)塊所有數(shù)據(jù)都進行哈希操作后生成多層Merkle樹,輸出為每一層樹和樹的層數(shù)。測試Merkle樹是否正常運行。最后這個Merkle樹的根節(jié)點值就是存儲在本區(qū)塊頭的MerkleRoot,結(jié)果如下(結(jié)果由于隨機性一定會有不同,但是形式相同)。生成Merkle樹填寫任務(wù)評價表,如表2-3所示。生成Merkle樹03LevelDB數(shù)據(jù)存取任假設(shè)在某個業(yè)務(wù)場景中,存儲壓力較大,寫操作遠大于讀操作,并且讀操作集中在最近寫入的數(shù)據(jù)中,要求根據(jù)LevelDB的特點,編碼實現(xiàn)高效的業(yè)務(wù)數(shù)據(jù)存取操作。任務(wù)場景LevelDB數(shù)據(jù)存取任任務(wù)布置:學習賬本存儲基礎(chǔ)知識。學習LevelDB基礎(chǔ)知識。編碼實現(xiàn)LevelDB數(shù)據(jù)存取。LevelDB數(shù)據(jù)存取任賬本存儲以比特幣為代表的經(jīng)典區(qū)塊鏈核心客戶端使用Google的LevelDB存儲區(qū)塊鏈元數(shù)據(jù)。區(qū)塊被從遠及近有序地連接在這個鏈條里,每個區(qū)塊都指向前一個區(qū)塊。區(qū)塊鏈經(jīng)常被視為一個垂直的棧,第一個區(qū)塊作為棧底的首區(qū)塊,隨后每個區(qū)塊都被放置在之前的區(qū)塊之上。LevelDB數(shù)據(jù)存取任用棧來形象化地表示區(qū)塊依次堆疊這一概念后,我們便可以使用一些術(shù)語,例如,“高度”表示區(qū)塊與首區(qū)塊之間的距離,“頂部”或“頂端”表示最新添加的區(qū)塊。LevelDB數(shù)據(jù)存取任如圖2-5所示是比特幣區(qū)塊賬本存儲的邏輯結(jié)構(gòu)。LevelDB數(shù)據(jù)存取任LevelDB(默認的KV數(shù)據(jù)庫):支持鍵的查詢、組合鍵的查詢、鍵范圍查詢,是默認的狀態(tài)數(shù)據(jù)庫。LevelDB是采用C++編寫的一種高性能嵌入式數(shù)據(jù)庫,沒有獨立的數(shù)據(jù)庫進程,占用資源少,速度快。LevelDBLevelDB數(shù)據(jù)存取任基于鍵的基本操作包括:Put(key,value);Get(key);Delete(key)。它有如下一些特點:支持批量修改的原子操作。鍵和值可以是任意的字節(jié)數(shù)組。數(shù)據(jù)是按鍵排序后存儲的??梢宰远x排序方法。LevelDB數(shù)據(jù)存取任支持創(chuàng)建快照。支持對數(shù)據(jù)前向和后向的迭代操作。數(shù)據(jù)采用Snappy壓縮技術(shù)。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北省十堰市東風第五中學2025-2026學年七年級上學期10月月考數(shù)學試卷(含答案)
- 2025-2026學年廣東省揭陽市普寧市九年級(上)期末數(shù)學試卷(含答案)
- 微生物考試題及答案
- 2022公司員工年度工作總結(jié)(5篇)
- 七年級道德與法治(上冊)期中試卷及參考答案
- 班務(wù)工作總結(jié)(20篇)
- 讓生活更美好多彩的作文
- 復(fù)合鋼結(jié)構(gòu)技術(shù)發(fā)展要點
- 單位工程驗收技術(shù)方法
- 機械制圖試題
- 公路工程施工安全技術(shù)與管理課件 第09講 起重吊裝
- 企業(yè)管理 華為會議接待全流程手冊SOP
- 2026年城投公司筆試題目及答案
- 北京市東城區(qū)2025-2026學年高三上學期期末考試英語 有答案
- 2026年及未來5年市場數(shù)據(jù)中國激光干涉儀行業(yè)發(fā)展監(jiān)測及投資戰(zhàn)略規(guī)劃研究報告
- 人工智能技術(shù)在小學語文閱讀教學中的實踐應(yīng)用課題報告教學研究課題報告
- 國家電投集團江蘇公司招聘筆試題庫2026
- 2025人教版八年級英語上冊期末綜合檢測卷(含答案及聽力原文無聽力音頻)
- (一診)成都市2023級高三高中畢業(yè)班第一次診斷性檢測物理試卷(含官方答案)
- 兒童口腔科主任解析兒童口腔保健
- 西南交通大學本科畢業(yè)設(shè)計(論文)撰寫規(guī)范
評論
0/150
提交評論