Blockchain

對 Merkle 樹中的散列函式的懷疑

  • July 4, 2019

從我讀到的內容來看,在一個區塊中,有 4 筆交易。將交易 A 和 B 的雜湊值組合在一起得到雜湊 AB。交易 C 和 D 也是如此,以獲得雜湊 CD。後來 AB 和 CD 組合在一起得到倒數第二個雜湊,它與 nonce 一起給出最終的雜湊。提供了這種默克爾樹結構,以便人們可以回溯到根(即初始交易)以驗證它們,對嗎?

但我的理解是散列函式是一種方式,因此不可能通過反向散列散列返回輸入值。如果是這樣的話,默克爾樹如何允許人們回溯並驗證交易?

結合在一起得到倒數第二個雜湊,它與隨機數一起

這是不正確的。“倒數第二個雜湊”是默克爾根。nonce 根本不是 merkle 根的一部分。這是塊頭的一部分,並與 merkle 根和其他一些東西一起進行散列,以獲得塊散列。

提供了這種默克爾樹結構,以便人們可以回溯到根(即初始交易)以驗證它們,對嗎?

不可以。它可以將所有交易送出到區塊,並允許某人證明特定交易在該區塊中。

如果是這樣的話,默克爾樹如何允許人們回溯並驗證交易?

它沒有。給定一筆交易,如果不知道樹中其他分支的雜湊值,您就無法確定它是否是默克爾樹的一部分。目標不是自己確定交易是否在默克爾樹中,而是允許其他人通過讓他們提供樹中所有其他分支的雜湊來證明交易在默克爾樹中在根路徑中。

在您的 4 筆交易範例中,如果您想證明 C 是默克爾樹的一部分,您將提供 C、D 的雜湊和雜湊 AB。驗證者將散列 C,將其與 D 的散列進行散列以獲得 CD,並與 AB 進行散列以獲得根。然後他們會檢查他們計算的根是否與塊頭中的根匹配。通過這種方式,節點可以向 SPV 客戶端證明交易包含在區塊鏈中。

引用自:https://bitcoin.stackexchange.com/questions/88846