Merkle-Tree
使用 Merkle Root 而不是簡單地對塊中的所有交易進行雜湊處理有什麼好處?
我了解 merkle 根是什麼以及它是如何計算的,但我無法弄清楚使用這種散列解決方案背後的實際目的是什麼?
我的意思是,我知道根本身必須在那裡,以辨識確切的塊的有效負載,但我不明白為什麼他不選擇使用普通雙 SHA256 計算整個塊交易的雜湊?為什麼他會提出這個樹的想法呢?
我沒有看到基於樹的散列增加任何安全性,也沒有比正常(線性)散列有任何有用的優勢……所以我錯過了什麼嗎?
Merkle 樹允許通過遵循其 Merkle 分支來驗證交易是否存在於塊中,而無需整個塊。除其他外,這可以實現:
- SPV(輕量級)客戶端
- 區塊鏈修剪
- 智能礦池礦工
要了解它如何簡化驗證,請考慮為了驗證交易 T 是區塊鏈的一部分,驗證者必須從交易雜湊獲取 merkle 根。如果有 n 筆交易,可以這麼說,在默克爾樹中有 log_2(n) 個級別需要爬升。為了從事務 T 的雜湊爬到它的父 P,我們只需要它的兄弟,因為這就是樹的建構方式。然後要爬到下一個級別,我們只需要我們計算 P 的父級的兄弟姐妹,依此類推。
要爬上樹的所有 log_2(n) 級別,我們只需要 T 的雜湊加上 log_2(n) 額外的雜湊(包括 merkle 根)。如果我們對塊進行線性連接,我們將需要比 log_2(n) << n 更多的資訊
我發現這篇文章有助於說明:
<https://en.bitcoin.it/wiki/Merged_mining_specification#Merkle_Branch>
希望這可以幫助