Merkle-Tree

事務查找期間的 Merkle 樹重新計算

  • November 29, 2021

當全節點收到來自 SPV 客戶端的請求以檢查區塊鏈中是否存在給定交易時 - 它是否總是在執行中重新計算 merkle 樹以便將 merkle 路徑 + 塊頭返回給給定交易 ID 的 SPV 客戶端?

從性能的角度來看,它看起來如何?例如,是否有任何 merkle 樹記憶體?因為據我了解,節點必須執行以下步驟:

  1. 查找存在給定事務 ID 的塊
  2. 從該塊中獲取所有交易
  3. 計算默克爾樹
  4. 返回具有確認 merkle 根所需的相關雜湊的 merkle 路徑

首先:Bitcoin Core 預設不再支持 BIP37,因為它可以用作計算、磁碟 I/O 和頻寬攻擊(因為你提出的觀點),而且它的隱私屬性一開始就很弱. 它仍然可以使用 啟用-peerbloomfilters,但更現代的方法不應該依賴它。

  1. 查找存在給定事務 ID 的塊

在 P2P 協議中無法發出任意交易請求。您只能詢問最近宣布的交易(通過 txid 或 wtxid),或確認區塊(通過區塊雜湊)。

在 BIP37 的情況下,客戶端可以將“有趣”地址/腳本/事務的過濾器發送到伺服器,然後請求塊。然後,伺服器將過濾塊中匹配過濾器的事務,並用這些來響應。但這確實需要客戶端單獨請求所有塊——它不能要求伺服器去任何地方尋找某個交易。

  1. 從該塊中獲取所有交易
  2. 計算默克爾樹
  3. 返回具有確認 merkle 根所需的相關雜湊的 merkle 路徑

對於客戶端向伺服器請求過濾塊的情況,這些步驟是正確的。

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