詞彙表 · 網路

Merkle 根

作者:CloudMineCrypto 團隊更新於

定義

Merkle root 是一個總結 Bitcoin 區塊中所有交易的雜湊值。將交易兩兩配對並進行雜湊,再把產生的雜湊值兩兩配對,重複直到只剩下一個。它會儲存在區塊標頭中。

收錄於Bitcoin 挖礦術語表,以淺白英文解說 88 個術語。

建立 Merkle 根

區塊標頭中的 Merkle 根

17b1344a79d1

雜湊 0+1

de80192c

雜湊 2+3

b87d4f25

交易 0

94e5fe9e

交易 1

c752a4cd

交易 2

934d1415

交易 3

3f172c5d

點選任何一筆交易的「編輯」。該筆交易的雜湊、配對雜湊和根雜湊都會改變。

在瀏覽器中執行的真實雙重 SHA-256,為方便顯示而縮短。真實區塊會對交易資料進行雜湊,而不是對句子進行雜湊。

Merkle root 是怎麼建構的?

先取出區塊中每筆交易的 ID,每個 ID 本身都是雙重 SHA-256 雜湊。將它們依序排列,coinbase 交易放在最前面。將相鄰的雜湊值兩兩配對,再對每一對進行雜湊。這時雜湊值的數量會減半。重複這個步驟,直到只剩下一個,也就是 Merkle root。

如果某一層的雜湊值數量是奇數,最後一個會和自己配對。只要改動任何一筆交易,即使只差一個 satoshi,從它到頂端路徑上的每個雜湊值都會改變,包括 Merkle root。試試上方的示範。

為什麼要用樹狀結構,而不是一個大雜湊?

證明。要證明某筆交易在區塊中,只需要它所在分支上的雜湊值,不需要整個區塊。約有 4,000 筆交易的區塊,只需要其中 12 個雜湊值,總共幾百位元組。中本聰的白皮書描述了用這種方式驗證付款的輕量錢包,只保留區塊標頭。

這對挖礦也很重要。礦工更改 coinbase 交易中的額外 nonce 時,Merkle root 也會改變,區塊標頭就會有一組新的 nonce 可供嘗試。

來源

  1. 比特幣:點對點電子現金系統 · 中本聰(Satoshi Nakamoto),2008
  2. 區塊鏈參考資料:區塊標頭、默克爾樹、目標值 · Bitcoin 開發者文件
  3. Merkle 樹 · Bitcoin Wiki

本頁即時數據來自 CloudMineCrypto API 和公開區塊鏈資料,並會定期更新,且會在各處標示。僅供教育用途,不構成財務建議。

現在來看看挖礦是怎麼運作的。

Claim a free 8-hour mining plan in the CloudMineCrypto app and watch your estimated BTC tick up from live network data. Withdraw to your own wallet, Lightning included. Rewards are estimates.