Transaction-Verification

驗證交易時誰支付計算成本

  • February 9, 2017

假設 Alice 想要驗證一筆交易(檢查該交易是否存在,而不是進行新交易),並假設她還沒有下載所有交易歷史。

我的理解是,

  1. Alice 將向她的所有對等電腦節點發送請求,並請求驗證交易所需的默克爾樹和雜湊的根。

2)她的對等節點中的一些礦工將找到包含交易的塊

  1. 由於區塊只儲存 Merkle 樹根,而不是內部節點,這些礦工必須從所有交易中建構 Merkle 樹

  2. 礦工將區塊頭和散列(Merkle 樹根和認證路徑上的散列)發回給 Alice。

由於步驟 3 需要計算資源,我的問題是為什麼有些節點要為 Alice 執行這些計算?這些節點似乎不會因驗證舊交易而獲得報酬。

你有幾件事錯了。

  1. Alice 將向她的所有對等電腦節點發送請求,並請求驗證交易所需的默克爾樹和雜湊的根。

Alice 可能已經擁有 Merkle 根,因為它是區塊頭的一部分。驗證交易的第一步是確保包含它的區塊是真實的。甚至SPV 客戶端也儲存了整個鏈的所有區塊頭,因此它們已經擁有每個 Merkle 根。

2)她的對等節點中的一些礦工將找到包含交易的塊

這或多或少是正確的,只是節點不必礦工。網路上有很多完整的節點具有區塊鏈的完整副本,可以查詢這些雜湊值。

  1. 由於區塊只儲存 Merkle 樹根,而不是內部節點,這些礦工必須從所有交易中建構 Merkle 樹

全節點儲存所有交易,返回 Merkle 樹的雜湊值並不太計算密集。您可以在開發人員指南的事務數據部分閱讀更多相關資訊。

  1. 礦工將區塊頭和散列(Merkle 樹根和認證路徑上的散列)發回給 Alice。

同樣,不一定(或什至通常)礦工會發送所需的 Merkle 路徑的雜湊值。它通常是非探勘完整節點。並且如前所述,不需要請求塊頭和 Merkle 根。

最後,Alice 是驗證她的交易的人,但這樣做是通過使用網路上完整節點提供的附加資訊來完成的。全節點為提供這些數據所做的工作很重要,但計算量不會太大。例如,我的 Raspberry Pi 2 作為一個完整節點工作得很好。至於誰為他們的服務支付全部節點的費用……嗯……沒有人。這一直是一個爭論不休的話題。

然而,最終,人們操作全節點有幾個原因。在我的頭頂上:

  • 所以他們可以不信任地操作
  • 作為對網路整體健康的服務(這反過來又保護了他們自己的投資)
  • 用於研究或商業目的

因此,儘管為瘦客戶端提供進行交易驗證所需的數據可以被視為慈善,但實際上參與的動機是……即使不是直接的財務。

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