您現在的位置是:首頁 > 垂釣

小知識:區塊鏈的梅克爾樹結構又是什麼?

  • 由 巴巴布塔 發表于 垂釣
  • 2023-01-13
簡介梅克爾樹結構以及把梅克爾樹根放在區塊頭的設計,對維持比特幣系統以分散式網路存在有著十分重要的作用,因為比特幣系統一年生產幾萬個區塊,而每個節點都要對交易進行驗證記賬,儲存資料的空間就要越來越大,長期下去就只有少數節點有足夠的能力做到,到那時

爾的結構是什麼

梅克爾樹(Merkle trees)結構是拉爾夫。梅克爾(Ralph Merkle)在1979年發明並以他的名字命名的,由於在比特幣系統裡梅克爾樹實際上是由一大堆資料透過不斷地雜湊運算組成的樹形結構,故此應該叫梅克爾雜湊樹。梅克爾樹最典型的是兩分叉形式,即兩個交易組成一組,比特幣系統就使用了這種形式,以下圖為例,交易1透過雜湊運算得出雜湊1值,交易2透過雜湊運算得出雜湊2值,然後再將雜湊1值與雜湊2值進行合併,在雜湊運算得出雜湊12值,以此類推,直到全部合併且雜湊算完,得到只有一個雜湊值的梅克爾樹根。

小知識:區塊鏈的梅克爾樹結構又是什麼?

在梅克爾雜湊樹結構中,交易1、交易2等被稱作葉子,由於二叉梅克爾樹要求葉子是偶數才能合併,當出現單獨一個葉子沒法合併時候,就採用將其複製的方式進行自我合併,以此類推,當葉子上面的子節點也出現相同情況時候,也是同樣以複製方式自我合併,只有形成樹根了才是一個單獨的雜湊值。

梅克爾樹結構以及把梅克爾樹根放在區塊頭的設計,對維持比特幣系統以分散式網路存在有著十分重要的作用,因為比特幣系統一年生產幾萬個區塊,而每個節點都要對交易進行驗證記賬,儲存資料的空間就要越來越大,長期下去就只有少數節點有足夠的能力做到,到那時候系統只剩下這少數節點時候,去中心化網路就演變成了中心化,這並不是中本聰所希望看到的。對此中本聰讓沒有足夠儲存能力的大多數節點只需要儲存區塊頭就行了,一個區塊頭只有80位元組,幾萬個區塊的區塊頭加起來也沒有10MB,對普通電腦來說綽綽有餘了,這些節點就會始終存在,確保了整個網路始終處於分散式狀態。

放在區塊頭的梅克爾樹根還可以對交易進行驗證,當需要驗證一筆交易時候,系統會向儲存了所有交易的節點發出請求,該節點(又稱全節點)就會將該筆交易的葉子組合、子節點組合傳送過來(並不會傳送全部交易),最後算出來的梅克爾樹根雜湊值與區塊頭儲存雜湊值的對比,相互一致了就證明交易驗證透過。

另外,每一個區塊的梅克爾樹根雜湊值,都放進下一個區塊的區塊頭裡成為父區塊雜湊值,相當於下一個區塊儲存了上一個區塊的所有交易,這樣一環扣一環的連結,讓任何虛假交易或偽造區塊都難以混進系統的區塊連結中,除非從創世區塊開始修改交易內容,這個難度大於上青天,確保比特幣系統擁有足夠的安全性。

小知識:區塊鏈的梅克爾樹結構又是什麼?

Top