0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是默克爾樹(Merkle Tree)?如何計算默克爾根?

jf_94171069 ? 來源:jf_94171069 ? 作者:jf_94171069 ? 2024-09-30 18:22 ? 次閱讀

01

默克爾樹的概念

默克爾樹(Merkle Tree)是一種特殊的二叉樹,它的每個節(jié)點都存儲了一個數(shù)據(jù)塊的哈希值。哈希值是一種可以將任意長度的數(shù)據(jù)轉(zhuǎn)換為固定長度的字符串的算法,它具有唯一性和不可逆性的特點,即不同的數(shù)據(jù)塊會產(chǎn)生不同的哈希值,而相同的數(shù)據(jù)塊會產(chǎn)生相同的哈希值,且無法從哈希值還原出原始數(shù)據(jù)。默克爾樹的葉子節(jié)點存儲了數(shù)據(jù)塊本身的哈希值,而非葉子節(jié)點存儲了其子節(jié)點哈希值的組合的哈希值。這樣,默克爾樹的根節(jié)點就包含了所有數(shù)據(jù)塊的哈希信息,可以用來代表整棵樹的唯一標識。

02

默克爾樹的結(jié)構(gòu)

默克爾樹是一種完全二叉樹,即每個非葉子節(jié)點都有兩個子節(jié)點,如果數(shù)據(jù)塊的數(shù)量不是2的整數(shù)次冪,那么就需要復(fù)制最后一個數(shù)據(jù)塊來補齊。例如,如果有5個數(shù)據(jù)塊,那么就需要復(fù)制第5個數(shù)據(jù)塊來構(gòu)成6個數(shù)據(jù)塊,然后再復(fù)制第6個數(shù)據(jù)塊來構(gòu)成8個數(shù)據(jù)塊。這樣,就可以形成一個4層的完全二叉樹.

如下圖所示: 在這個例子中,A、B、C、D、E、F、G、H是8個數(shù)據(jù)塊,它們經(jīng)過哈希函數(shù)H得到8個哈希值H(A)、H(B)、H(C)、H(D)、H(E)、H(F)、H(G)、H(H),這些哈希值作為葉子節(jié)點。然后,葉子節(jié)點兩兩組合,得到4個中間節(jié)點H(H(A)+H(B))、H(H(C)+H(D))、H(H(E)+H(F))、H(H(G)+H(H)),其中+表示字符串連接。再然后,中間節(jié)點兩兩組合,得到2個中間節(jié)點H(H(H(A)+H(B))+H(H(C)+H(D)))和H(H(H(E)+H(F))+H(H(G)+H(H)))。最后,這兩個中間節(jié)點組合得到根節(jié)點H(H(H(H(A)+H(B))+H(H(C)+H(D)))+H(H(H(E)+H(F))+H(H(G)+H(H))))。這個根節(jié)點就是默克爾根(Merkle Root),它包含了所有數(shù)據(jù)塊的哈希信息。

wKgZomb5BIOAUyZlAABq4c1F4ng416.png

03

默克爾樹的作用

默克爾樹有以下幾個作用: 1.數(shù)據(jù)完整性驗證:通過比較兩棵默克爾樹的根節(jié)點是否相同,可以快速判斷兩份數(shù)據(jù)是否完全一致。如果根節(jié)點不同,則說明至少有一個數(shù)據(jù)塊發(fā)生了變化;如果根節(jié)點相同,則說明所有數(shù)據(jù)塊都沒有變化。這樣可以節(jié)省大量的比較時間和空間。 2.數(shù)據(jù)安全性保護:由于哈希函數(shù)的不可逆性,即使知道了默克爾根和部分數(shù)據(jù)塊,也無法還原出其他數(shù)據(jù)塊的內(nèi)容。這樣可以保護數(shù)據(jù)的隱私和安全。 3.數(shù)據(jù)有效性證明:通過提供某個數(shù)據(jù)塊及其對應(yīng)的默克爾路徑(Merkle Path),即從該數(shù)據(jù)塊到根節(jié)點經(jīng)過的所有節(jié)點的哈希值,可以證明該數(shù)據(jù)塊確實存在于某棵默克爾樹中。這樣可以避免傳輸整棵默克爾樹,只需要傳輸默克爾根和默克爾路徑即可。

04

默克爾樹的應(yīng)用

默克爾樹廣泛應(yīng)用于文件系統(tǒng)和P2P網(wǎng)絡(luò)中,例如:

1.Git:Git是一種分布式版本控制系統(tǒng),它使用默克爾樹來存儲和管理文件的歷史版本。每個文件都有一個哈希值,每個目錄也有一個哈希值,這些哈希值構(gòu)成了一棵默克爾樹。每次提交(commit)都會生成一個新的默克爾根,作為該提交的唯一標識。這樣,可以快速比較不同提交之間的差異,以及驗證文件的完整性和有效性。

2.BitTorrent:BitTorrent是一種P2P文件共享協(xié)議,它使用默克爾樹來分割和校驗大文件。每個文件被切分成多個數(shù)據(jù)塊,每個數(shù)據(jù)塊有一個哈希值,這些哈希值構(gòu)成了一棵默克爾樹。每個文件的元數(shù)據(jù)(metadata)中包含了該文件的默克爾根和數(shù)據(jù)塊的大小。這樣,可以在下載過程中驗證數(shù)據(jù)塊的完整性和有效性,以及恢復(fù)損壞的數(shù)據(jù)塊。

3.Bitcoin:Bitcoin是一種去中心化的數(shù)字貨幣系統(tǒng),它使用默克爾樹來存儲和驗證交易記錄。每個交易都有一個哈希值,這些哈希值構(gòu)成了一棵默克爾樹。每個區(qū)塊(block)中包含了該區(qū)塊的默克爾根和交易數(shù)量。這樣,可以在不傳輸整個區(qū)塊的情況下,證明某個交易是否存在于某個區(qū)塊中,以及驗證區(qū)塊的完整性和有效性。 默克爾樹是一種特殊的二叉樹,它的每個節(jié)點都存儲了一個數(shù)據(jù)塊的哈希值。

本文章源自奇跡物聯(lián)開源的物聯(lián)網(wǎng)應(yīng)用知識庫Cellular IoT Wiki,更多技術(shù)干貨歡迎關(guān)注收藏Wiki:Cellular IoT Wiki 知識庫(https://rckrv97mzx.feishu.cn/wiki/wikcnBvAC9WOkEYG5CLqGwm6PHf)

歡迎同學(xué)們走進AmazIOT知識庫的世界!

這里是為物聯(lián)網(wǎng)人構(gòu)建的技術(shù)應(yīng)用百科,以便幫助你更快更簡單的開發(fā)物聯(lián)網(wǎng)產(chǎn)品

Cellular IoT Wiki初心:

在我們長期投身于蜂窩物聯(lián)網(wǎng) ODM/OEM 解決方案的實踐過程中,一直被物聯(lián)網(wǎng)技術(shù)碎片化與產(chǎn)業(yè)資源碎片化的問題所困擾。從產(chǎn)品定義、芯片選型,到軟硬件研發(fā)和測試,物聯(lián)網(wǎng)技術(shù)的碎片化以及產(chǎn)業(yè)資源的碎片化,始終對團隊的產(chǎn)品開發(fā)交付質(zhì)量和效率形成制約。為了減少因物聯(lián)網(wǎng)碎片化而帶來的重復(fù)開發(fā)工作,我們著手對物聯(lián)網(wǎng)開發(fā)中高頻應(yīng)用的技術(shù)知識進行沉淀管理,并基于 Bloom OS 搭建了不同平臺的 RTOS 應(yīng)用生態(tài)。后來我們發(fā)現(xiàn),很多物聯(lián)網(wǎng)產(chǎn)品開發(fā)團隊都面臨著相似的困擾,于是,我們決定向全體物聯(lián)網(wǎng)行業(yè)開發(fā)者開放奇跡物聯(lián)內(nèi)部沉淀的應(yīng)用技術(shù)知識庫 Wiki,期望能為更多物聯(lián)網(wǎng)產(chǎn)品開發(fā)者減輕一些重復(fù)造輪子的負擔(dān)。

Cellular IoT Wiki沉淀的技術(shù)內(nèi)容方向如下:

wKgaombqoM2AYL2RAAQrZ8e-uz8392.jpg

奇跡物聯(lián)的業(yè)務(wù)服務(wù)范圍:基于自研的NB-IoT、Cat1、Cat4等物聯(lián)網(wǎng)模組,為客戶物聯(lián)網(wǎng)ODM/OEM解決方案服務(wù)。我們的研發(fā)技術(shù)中心在石家莊,PCBA生產(chǎn)基地分布在深圳、石家莊、北京三個工廠,滿足不同區(qū)域&不同量產(chǎn)規(guī)模&不同產(chǎn)品開發(fā)階段的生產(chǎn)制造任務(wù)。跟傳統(tǒng)PCBA工廠最大的區(qū)別是我們只服務(wù)物聯(lián)網(wǎng)行業(yè)客戶。

連接我們,和10000+物聯(lián)網(wǎng)開發(fā)者一起 降低技術(shù)和成本門檻

讓蜂窩物聯(lián)網(wǎng)應(yīng)用更簡單~~

哈哈你終于滑到最重要的模塊了,

千萬不!要!劃!走!忍住沖動!~

歡迎加入飛書“開源技術(shù)交流”,隨時找到我們哦~

點擊鏈接如何加入奇跡物聯(lián)技術(shù)話題群(https://rckrv97mzx.feishu.cn/docx/Xskpd1cFQo7hu9x5EuicbsjTnTf)可以獲取加入技術(shù)話題群攻略

Hey 物聯(lián)網(wǎng)從業(yè)者,

你是否有了解過奇跡物聯(lián)的官方公眾號“eSIM物聯(lián)工場”呢?

這里是奇跡物聯(lián)的物聯(lián)網(wǎng)應(yīng)用技術(shù)開源wiki主陣地,歡迎關(guān)注公眾號,不迷路~

及時獲得最新物聯(lián)網(wǎng)應(yīng)用技術(shù)沉淀發(fā)布

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3225

    瀏覽量

    42342
  • 數(shù)據(jù)校驗
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    6757
收藏 人收藏

    評論

    相關(guān)推薦

    克爾·戴爾:人工智能將超越以往技術(shù)浪潮

    在科技行業(yè)日新月異的今天,戴爾公司(Dell Technologies)的創(chuàng)始人兼CEO邁克爾·戴爾(Michael Dell)周一在一次重要采訪中對生成式人工智能(GAI)的影響力給予了高度評價。他認為,人工智能的崛起將可能超越以往任何技術(shù)發(fā)展的規(guī)模與速度。
    的頭像 發(fā)表于 06-20 10:21 ?338次閱讀

    原理圖設(shè)計里兩顆重要的(國產(chǎn)EDA)

    原理圖里面兩顆重要的,那就是元件和網(wǎng)絡(luò),作為EDA工具中的重要視圖和概念,雖然看似枯燥,但它們扮演著非常重要的角色,它們?yōu)殡娐穲D的層次化結(jié)構(gòu)提供了有力支撐。想象一個大型的電路設(shè)計項目,就像一個
    的頭像 發(fā)表于 05-29 17:47 ?649次閱讀
    原理圖設(shè)計里兩顆重要的<b class='flag-5'>樹</b>(國產(chǎn)EDA)

    戴爾、英偉達明年或推AI處理器Windows 11 PC

    在采訪過程中,當(dāng)被問及英偉達在AI PC中的角色和地位時,邁克爾·戴爾回答說“明年再看吧”;黃仁勛則表示贊同,并稱此舉確實有必要。
    的頭像 發(fā)表于 05-23 15:27 ?390次閱讀

    致真精密儀器入選工信部裝備工業(yè)一司智能檢測裝備創(chuàng)新產(chǎn)品目錄

    近日,致真精密儀器的多功能磁光克爾顯微成像系統(tǒng)入選了工業(yè)和信息化部裝備工業(yè)一司的智能檢測裝備創(chuàng)新產(chǎn)品目錄(第一批)。
    的頭像 發(fā)表于 03-28 14:05 ?454次閱讀
    致真精密儀器入選工信部裝備工業(yè)一司智能檢測裝備創(chuàng)新產(chǎn)品目錄

    超算網(wǎng)絡(luò)中的主流拓撲架構(gòu)

    傳統(tǒng)的樹形網(wǎng)絡(luò)拓撲中,帶寬是逐層收斂的,樹根處的網(wǎng)絡(luò)帶寬要遠小于各個葉子處所有帶寬的總和。而Fat-Tree則更像是真實的,越到樹根,枝干越粗,即:從葉子到樹根,網(wǎng)絡(luò)帶寬不收斂,這是Fat-Tree能夠支撐無阻塞網(wǎng)絡(luò)的基礎(chǔ)。
    發(fā)表于 03-26 09:41 ?4566次閱讀
    超算網(wǎng)絡(luò)中的主流拓撲架構(gòu)

    一文詳解磁光調(diào)制技術(shù)

    磁光效應(yīng):一束入射光進入具有固有磁矩的物質(zhì)內(nèi)部傳輸或者在物質(zhì)界面反射時,光的傳播特性,例如偏振面、相位、或者散射特性發(fā)生變化,這個物理現(xiàn)象被稱為磁光效應(yīng)。磁光效應(yīng)包括法拉第效應(yīng),克爾效應(yīng)、塞曼效應(yīng)
    的頭像 發(fā)表于 01-17 09:52 ?3663次閱讀
    一文詳解磁光調(diào)制技術(shù)

    基于微諧振器的耗散克爾孤子DKS光頻梳OFC

    研究還表明,重復(fù)率的穩(wěn)定性,通過期望的分頻因子與參考激光器的重復(fù)率的穩(wěn)定性相聯(lián)系。最后,跨倍頻程耗散克爾孤子DKS的克爾誘導(dǎo)同步KIS,表現(xiàn)出了相反色散波的增強,與理論模型一致,并提升了自參考和訪問光頻梳OFC載波-包絡(luò)偏移頻率。
    的頭像 發(fā)表于 12-27 11:25 ?722次閱讀
    基于微諧振器的耗散<b class='flag-5'>克爾</b>孤子DKS光頻梳OFC

    8芯網(wǎng)線每線的作用有哪些

    8芯網(wǎng)線,也被稱為RJ45網(wǎng)線,是一種常用于計算機網(wǎng)絡(luò)連接中的通信線纜。它通過8導(dǎo)線傳輸數(shù)據(jù)信號,每線具有特定的作用,下面將對每線的功能進行詳細介紹。 第一
    的頭像 發(fā)表于 12-25 13:36 ?1.7w次閱讀

    如何修改內(nèi)核設(shè)備

    如何修改內(nèi)核設(shè)備
    的頭像 發(fā)表于 12-14 14:06 ?753次閱讀
    如何修改內(nèi)核設(shè)備<b class='flag-5'>樹</b>

    淺析STP/RSTP協(xié)議(一)

    生成協(xié)議STP(Spanning Tree Protocol)將環(huán)形網(wǎng)絡(luò)修剪成為一個無環(huán)的型網(wǎng)絡(luò),避免報文在環(huán)形網(wǎng)絡(luò)中的增生和無限循環(huán)。
    的頭像 發(fā)表于 12-08 13:37 ?1141次閱讀
    淺析STP/RSTP協(xié)議(一)

    時鐘是什么?介紹兩種時鐘樹結(jié)構(gòu)

    今天來聊一聊時鐘。首先我先講一下我所理解的時鐘是什么,然后介紹兩種時鐘樹結(jié)構(gòu)。
    的頭像 發(fā)表于 12-06 15:23 ?1570次閱讀

    數(shù)字IC設(shè)計中的分段時鐘綜合

    為什么需要分段去做時鐘呢?因為在某些情況下,按照傳統(tǒng)的方法讓每一個clock group單獨去balance,如果不做額外干預(yù),時鐘天然是做不平的。
    的頭像 發(fā)表于 12-04 14:42 ?1784次閱讀
    數(shù)字IC設(shè)計中的分段時鐘<b class='flag-5'>樹</b>綜合

    【米爾-TIAM62開發(fā)板-接替335x-試用評測】+(三)手把手創(chuàng)建Uboot設(shè)備與內(nèi)核設(shè)備實戰(zhàn)

    的嵌入式系統(tǒng)開發(fā)之旅產(chǎn)生積極的影響。 以下是我的一些體會,希望對您能有所幫助! (一)研究方法: 經(jīng)過對米爾-TIAM62開發(fā)板-接替335x-試用評測實戰(zhàn),對于設(shè)備(Device Tree)創(chuàng)建
    發(fā)表于 11-28 09:54

    RRT算法Matlab實現(xiàn) 主函數(shù)部分

    初始化隨機 初始化隨機,定義樹結(jié)構(gòu)體tree以保存新節(jié)點及其父節(jié)點,便于后續(xù)從目標點回推規(guī)劃的路徑。 %% 初始化隨機 tree.ch
    的頭像 發(fā)表于 11-24 16:25 ?434次閱讀

    與二叉的定義

    表示。型結(jié)構(gòu)在計算機領(lǐng)域中也得到了廣泛應(yīng)用。 Part1 1.1 的定義 Tree
    的頭像 發(fā)表于 11-24 15:57 ?1252次閱讀
    <b class='flag-5'>樹</b>與二叉<b class='flag-5'>樹</b>的定義