sponsored links

Merkle tree--默克爾樹

hello,大家好,我們第四期的區塊鏈技術分享來啦,這一次讓大家久等了

~~

Merkle tree--默克爾樹

這一期我們分享merkle tree——默克爾樹。看到本期文章標題的時候,可能大部分人已經這樣了

Merkle tree--默克爾樹

雖然默克爾樹大家很陌生,但是提到默克爾樹相關的應用,大部分程式設計師肯定接觸過。merkle tree 最大的應用場合就是在點對點網路,Git 版本控制系統、IPFS 協議、比特幣以及以太坊等等。同時merkle tree也是區塊鏈面試大機率會被問到的問題,所以這一期我們就來聊一下比特幣網路中的merkle tree。

merkle tree的資料結構

merkle tree是計算機科學家Ralph Merkle在1987年發明的。就是這位大佬(找不到好看的圖了,大家將就看)

Merkle tree--默克爾樹

論文題目是《A digital signature based on a conventional encryption function》翻譯成中文大概的意思是:基於常規加密函式的數字簽名,旨在構建更好的數字簽名。這個是merkle tree的起源。

那麼在比特幣網路中,merkle tree是如何應用的?

在區塊鏈網路中,所有的區塊呈鏈狀連線。

Merkle tree--默克爾樹

每個區塊展開可以分為區塊頭block header和區塊體block body。關於區塊頭block header的欄位解釋,請參考區塊鏈技術之雜湊指標。

Merkle tree--默克爾樹

根據上面的圖可以看出,所有的交易都儲存在block body裡面,block body就是一顆merkle tree,並且只有葉子節點儲存的是交易,也就是圖中的tx(transaction),因此葉子節點也被稱為data block,非葉子節點儲存的都是雜湊值。

Merkle tree--默克爾樹

merkle tree就是一個hash二叉樹,父節點是兩個子節點的double sha256的結果,葉子節點就是交易的content的double sha256結果;

最下面那一層就是交易資料data block,每一個交易都可以計算出一個hash,從而層層向上,得到merkle root。

但是由於blockchain裡面都merkle運算要求葉子節點是偶數,所以,當一個區塊內包含當交易數量為奇數時,把最後一個交易複製一份,湊成偶數。

最後就是把merkle root儲存在區塊頭中,交易資料被儲存在區塊體中,其實中間當那些hash並沒有被儲存,它們只是運算過程資料。

默克爾樹大多用來進行完整性驗證,比如分散式環境下,從多臺主機獲取資料,怎麼驗證獲取的資料是否正確呢,只要驗證Merkle樹根雜湊一致,即可。

例如,上圖中tx1資料塊被篡改了,那麼錯誤會傳導到計算hash(tx1),接著傳導到計算hash(hash(tx1)+hash(tx2)),最後傳導到根雜湊,導致根雜湊的不一致。因此,任何底層資料塊(data blocks)的變化,最終都會傳導到根雜湊,也就是區塊頭中的默克爾根。


merkle proof

那麼說了這麼多,merkle tree到底有什麼用呢?

Merkle tree--默克爾樹

在比特幣網路中,merkle tree一個重要的用途就是提供merkle proof

在解釋merkle proof之前,我們先講一下比特幣網路中的節點。

2.1 什麼是節點?

在加密貨幣中,凡是連線到該網路的任何計算機,都被稱為節點

在區塊鏈中,存在一種冗餘備份的現象。

如果所有節點都需要儲存全網的所有交易及其他資料資訊,則不可避免的會出現一些弊端,比如,使用者想建立一個自己的區塊鏈節點進行專案開發,而不需要參加共識過程(不需要挖礦),那麼進行資料的同步將是一項特別龐大的工作,既耗時又費資源。

2.2 全節點和輕節點

因此,這個時候比特幣網路中的節點就可以分為兩類:全節點和輕節點。

  • 全節點,儲存有全網交易資料,又能完成相關驗證交易,獨立完成與對等節點的連線。這類節點在本地儲存了一個完整的區塊鏈網路(儲存了所有區塊的block header和block body),在其上可進行任何查詢、交易的驗證與廣播,正因為有這樣的節點存在,更加使得去中心化成為了可能,同時使得區塊鏈網路更加安全。全節點一直線上,最重要的是參與挖礦,尋找最長合法鏈並辨別分叉。
  • 輕節點,輕節點不需要儲存所有交易內容,利用merkle tree的特性,它只需包含block header以及與自己相關的交易細節,並透過Merkle證明來判斷交易是否在當前的區塊鏈交易列表中。輕節點並不一直線上,與全節點不同,它只能檢測哪一條是最長鏈,但無法知道是否是最長合法鏈,因為輕量級節點無法驗證大多數交易的合法性,也無法驗證區塊鏈網路釋出的區塊的正確性。例如,手機上的比特幣的錢包的應用,就是一個輕節點,只儲存block header。

這個時候存在一個問題,如何向一個輕節點證明,某個交易已經被寫入到區塊鏈裡面?

解答這個問題之前,我們再區分兩個名詞:支付驗證交易驗證

交易驗證非常複雜,涉及到驗證是否有足夠餘額可供支出、是否存在雙花、指令碼能否透過等等,通常由執行全節點的礦工來完成。

支付驗證則比較簡單,只判斷用於“支付”的那筆交易是否已經被驗證過,並得到了多少的算力保護(多少確認數)。

如何向一個輕節點證明,某個交易已經被寫入到區塊鏈裡面?指的是“支付驗證“,而不是“交易驗證”。這個就要用到merkle proof

Merkle tree--默克爾樹

某個輕節點想知道圖中標為黃色的tx交易是不是被寫到區塊鏈裡面?輕節點沒有儲存交易列表,只儲存了根雜湊值。

1. 那麼這個輕節點就會向某個全節點發出請求,請求給出包括這個待驗證支付的merkle proof。

2. 全節點收到請求後,只要把圖中紅色的H()發給輕節點;

3. 輕節點在本地就可以計算出H()

4. 那麼輕節點就可以計算出一個merkle root,輕節點只需要將計算出的根雜湊值與block header裡面的儲存根雜湊值進行比較,就可以驗證這個交易是不是被寫入了區塊鏈。

因此,SPV(Simplified Payment Verification,簡單支付驗證,這個概念比特幣白皮書裡面提到過,可以參考[001]比特幣白皮書中英文翻譯及解析)驗證的過程:

1. 從網路上獲取並儲存最長鏈的所有block header至本地;

2. 計算該交易的hash值tx_hash;

3. 定位到包含該tx_hash所在的區塊,驗證block header是否包含在已知的最長鏈中;

4. 從區塊中獲取構建merkle tree所需的hash值;

5. 根據這些hash值計算merkle_root_hash;

6. 若計算結果與block header中的merkle_root_hash相等,則交易真實存在。

7. 根據該block header所處的位置,確定該交易已經得到多少個確認。

Merkle tree--默克爾樹

這個過程裡面還用到了一個重要的資料結構叫bloom filter,布隆過濾器。布隆過濾器的應用不止在SPV的驗證,以太坊的資料結構裡面也用到了布隆過濾器,如果你是一個產品經理你肯定知道UV這個重要的指標,那麼布隆過濾器在UV統計中也發揮了重要的作用。所以,下一期我們分享布隆過濾器和SPV


總結

Merkle tree--默克爾樹

1. merkle tree就是一個hash二叉樹,父節點是兩個子節點的double sha256的結果,葉子節點就是交易的content的double sha256結果;

2. 最下面那一層就是交易資料,每一個交易都可以計算出一個hash,從而層層向上,得到merkle root。但是由於blockchain裡面都merkle運算要求葉子節點是偶數,所以,當一個區塊內包含當交易數量為奇數時,把最後一個交易複製一份,湊成偶數。最後就是把merkle root儲存在區塊頭中,交易資料被儲存在區塊體中,其實中間當那些hash並沒有被儲存,它們只是運算過程資料。

3. merkle tree被廣泛運用於區塊鏈中,但其實P2P下載中merkle tree的應用更為廣泛。

OK,本期分享就這麼多,下期我們分享bloom filter布隆過濾器和SPV驗證。

Merkle tree--默克爾樹

本文參考:

  • 《區塊鏈技術與應用》公開課;
  • 《區塊鏈:技術驅動金融》。
分類: 遊戲
時間: 2021-11-20

相關文章

瓦拉內:C羅是所有足球人的榜樣 和馬奎爾之間要多培養默契

瓦拉內:C羅是所有足球人的榜樣 和馬奎爾之間要多培養默契
近日瓦拉內接受了天空體育的採訪,今年夏天剛剛加入球隊的法國中衛,談到了關於C羅,和馬奎爾的話題. 關於C羅 瓦拉內:"在工作態度和求勝心方面,我覺得C羅是足壇所有人的榜樣,和這樣型別的球隊一 ...

美媒曬圖:現役球員交易價值排行榜出爐,詹庫杜居然不是第一檔?

美媒曬圖:現役球員交易價值排行榜出爐,詹庫杜居然不是第一檔?
#NBA##NBA睿聞##NBA熱點# 美媒曬圖:評選出現役球員交易價值排行榜,你認為合理嗎?從第1-10的具體排名依次是: 東契奇.字母哥.錫安.庫裡.安東尼戴維斯.倫納德.約基奇.詹姆斯.杜蘭特. ...

NBA能夠從1號位打到5號位的球員,21世紀僅4人!加內特上榜

NBA能夠從1號位打到5號位的球員,21世紀僅4人!加內特上榜
NBA能夠從1號位打到5號位的球員,21世紀僅4人!加內特上榜 真正能夠擔得起超級巨星的籃球運動員在技能上一般都是非常全面的,不管是防守端還是攻擊端他都能夠做到穩定,那麼這樣的球星走到哪兒都是香餑餑. ...

盤點CBA明星球員綽號,易建聯的最多,朱芳雨最霸氣,蘇偉接地氣

盤點CBA明星球員綽號,易建聯的最多,朱芳雨最霸氣,蘇偉接地氣
CBA其實就是濃縮的世界,濃縮的江湖,在這裡面,有著各種各樣的人情世故,也有著今天你是戰友,明天就是對頭的情形出現,而針對於球員來說,很多球員也是被自己的球迷贈予了不同的綽號,比如易建聯在CBA裡面綽 ...

秋花好評排行榜出爐:月季沒上榜,三角梅跌出前三

秋花好評排行榜出爐:月季沒上榜,三角梅跌出前三
秋天哪些花草好養又能開得燦爛?很多人馬上就想到月季.三角梅.的確,月季和三角梅養護得當,秋天是可以開出一茬美麗秋花的.但除了月季和三角梅,還有一些花草開的更好,養護也更簡單.秋花好評排行榜出爐:月季沒 ...

2021年,手機處理器排行榜,看看你的手機上榜了嗎
選手機最直觀的引數就是選擇處理器,今天我給大家盤點下2021年處理器排行榜,看看你的手機上榜了嗎? 1.蘋果A15 目前地表最強手機晶片,蘋果A15晶片採用臺積電第二代5nm工藝,晶片內部擁有150億 ...

實況足球|時刻最值得續約的球員-左前衛 右前衛篇

實況足球|時刻最值得續約的球員-左前衛 右前衛篇
還請大家多多關注!謝謝,長期更新! 時刻球員已經陸續需要續約了,那麼怎麼選擇續約的球員?續約條件是8個時刻積分續約一個球員.那麼怎麼選擇續約的球員?你可以用自己的重複或吉祥物時刻或黃卡傳奇球員續約,其 ...

10大俱樂部老闆資產排行榜更新,紐卡新金主霸榜,中國2人在列

10大俱樂部老闆資產排行榜更新,紐卡新金主霸榜,中國2人在列
隨著沙特財團入主紐卡斯爾,世界足壇將會發生新的變化,最關鍵的原因就是新來的老闆實在是太有錢了,超過3200億的資產讓他成為了世界足壇最有錢的老闆.而最新的俱樂部老闆資產排行榜也迅速發生了變化,排名前十 ...

擊敗詹姆斯次數最多的球員,綠軍、勇士各四人上榜,馬刺只佔一席

擊敗詹姆斯次數最多的球員,綠軍、勇士各四人上榜,馬刺只佔一席
勒布朗·詹姆斯在他的名人堂職業生涯中,無論是在常規賽還是季後賽,都經歷過無數次的戰鬥.詹姆斯的能力是毋庸置疑的.詹姆斯和太多的球員交過手了,他也不能總會獲得比賽的勝利,這也導致太多的記錄他都沒有辦法完 ...

利物浦球員FIFA22評分:薩拉赫、馬內、阿利森、範迪克均89分

利物浦球員FIFA22評分:薩拉赫、馬內、阿利森、範迪克均89分
直播吧9月18日訊 EA官網列出了FIFA22英超利物浦俱樂部球員能力值,共計8名球員高於85分. 阿利森(門將):89分 馬內(前鋒):89分 薩拉赫(前鋒):89分 範迪克(後衛):89分 阿諾德 ...

美媒評出上賽季單打效率最高球員,庫裡杜蘭特沒有都有霸榜

美媒評出上賽季單打效率最高球員,庫裡杜蘭特沒有都有霸榜
第五位-庫裡 庫裡雖然沒有超高的身體天賦和勁爆的彈跳,但是他有著出色球感和精準的三分球,能突能投是聯盟裡最難的防守的球員之一,場場被人包夾完成高難的進球,庫裡上賽季單打命中率為:50%. 第四位-拉文 ...

中排量摩托車街車款人氣排行榜!看看你喜歡的上榜了嗎?

中排量摩托車街車款人氣排行榜!看看你喜歡的上榜了嗎?
摩托車款的廠牌眾多.排氣量有大有小,風格更是有街車.運動.冒險.越野.旅行等多樣多變,不小心就會造成騎士在選購下一輛愛車時,不知該如何是好. 因此,編輯部特別從Webike資料庫中,撈取日本車主實際擁 ...

9月中端手機效能排行榜:華為nova 8系列上榜

9月中端手機效能排行榜:華為nova 8系列上榜
近日,根據多家科技媒體的訊息,國內手機評測機構安兔兔公佈了2021年9月份安卓手機效能排行榜.其中,中端方面,9月雖說有中端新機發布,但基本都是常規更新,而且中端處理器可選的不多,現在能用的一個手數的 ...

FIFA22最強100人,十大足球強國各佔多少人?

FIFA22最強100人,十大足球強國各佔多少人?
FIFA22即將在月底發售,目前EA公司也開始了各種預熱,比如公佈了能力值TOP100的球員資訊(TOP1000也公佈了). 讓我們一起來看一下在十大足球強國中都有哪些球員入選了TOP100名單吧. ...

時隔多年重聚的球員!有些人聯手締造了王朝,創造了歷史

時隔多年重聚的球員!有些人聯手締造了王朝,創造了歷史
球迷們認為,我們剛剛見證了史上最有趣.最激動人心的夏季轉會視窗之一.在同一個夏天,我們看到梅西和克里斯蒂亞諾·羅納爾多換東家的機率有多大?但他們兩人都這麼做了,其他幾位知名球員也這麼離開了他們的俱樂部 ...

索爾斯克亞才是真正的補鍋匠,曼聯買再多球員,陣容也還要繼續補

索爾斯克亞才是真正的補鍋匠,曼聯買再多球員,陣容也還要繼續補
德赫亞最後一刻撲出點球,諾布林上去把點球射丟,與其說德赫亞救了曼聯,諾布林救了阿特金森,不如直接說,兩人同時都救了索爾斯克亞.因為,擁有那麼強整的陣容,還踢成那樣驚心動魄,索爾斯克亞執教的水平,臨場調 ...

FIFA22曼聯球員評分Top16:C羅91居首,B費88次之

FIFA22曼聯球員評分Top16:C羅91居首,B費88次之
直播吧9月21日訊 進球網在其社媒上公佈了一份FIFA22曼聯球員評分排名榜單,共計16名曼聯球員上榜,上榜球員評分均在80及以上. C羅以91分居首,B費88分博格巴&桑喬87分列二三位. ...

曼聯一線隊球員FIFA22評分:C羅91分最高,林加德79分未進前十

曼聯一線隊球員FIFA22評分:C羅91分最高,林加德79分未進前十
直播吧9月21日訊 <曼徹斯特晚報>今日盤點了曼聯一線隊球員的FIFA22評分,C羅91分最高,林加德79分未進隊內前十. FIFA22曼聯一線隊球員評分如下: C羅,前鋒,91分 布魯諾 ...

C羅改中鋒坎特變後腰!新賽季普黑球員註冊位置及評價排名一覽

C羅改中鋒坎特變後腰!新賽季普黑球員註冊位置及評價排名一覽
eFootball 2022中球員的註冊位置較當前版本發生了許多變化,除一直飽受回撤問題困擾的C羅終於改為偷獵者中鋒之外,普黑中的坎特.馬金尼奧斯以及新晉升黑的福登等人的註冊位置均有所調整,以下是具體 ...

爆:2021年世界上收入最高的足球運動員,前十名梅西屈尊第二

爆:2021年世界上收入最高的足球運動員,前十名梅西屈尊第二
這兩位世界頂級足球運動員換了位置,穿上了新球衣,但薪水卻很熟悉,本賽季的總收入為 2.35 億美元. 在足球巨星克里斯蒂亞諾·羅納爾多離開義大利尤文圖斯加盟英格蘭曼聯的訊息傳出前24小時,這位超級明星 ...