golang[41]-區塊鏈-默克爾樹構建
阿新 • • 發佈:2018-12-14
大自然的啟示
Banyan樹的啟示:印度banyan樹,最大的一顆可以長到1萬平方米以上。其如此巨大的祕密就在於其枝幹也會產生根,起到支撐,從而作為附屬樹幹,繼續生成分支。大自然給人太多啟示……
Merkle Tree
Merkle Tree,通常也被稱作Hash Tree,顧名思義,就是儲存hash值的一棵樹。Merkle樹是一種資料結構,Merkle樹的葉子是資料塊(例如,檔案或者檔案的集合)的hash值。非葉節點是其對應子節點串聯字串的hash。
Merkle樹是使區塊鏈發揮作用的基本組成部分。雖然理論上可以在沒有Merkle樹的情況下製作區塊鏈,但只需建立直接包含每個事務的巨型塊頭,這樣做會帶來巨大的可擴充套件性挑戰,可以說無可置疑地使用區塊鏈的能力超出了所有範圍,從長遠來看,功能強大的電腦。感謝Merkle樹,可以構建在所有計算機和大小膝上型電腦上執行的乙太網節點,智慧手機,甚至是物聯網裝置
比特幣中默克爾樹的構建過程:
1 |
第一筆hash: |
go語言實現上面的驗證過程
1 |
package main |
參考資料
[csdn 默克爾樹解釋]https://blog.csdn.net/wo541075754/article/details/54632929
https://github.com/ZtesoftCS/go-ethereum-code-analysis/blob/master/trie原始碼分析.md
本文連結: https://dreamerjonson.com/2018/12/10/golang-41-blockchain-merkletree/
版權宣告: 本部落格所有文章除特別宣告外,均採用 CC BY 4.0 CN協議 許可協議。轉載請註明出處!