驗證交易時誰支付計算成本
假設 Alice 想要驗證一筆交易(檢查該交易是否存在,而不是進行新交易),並假設她還沒有下載所有交易歷史。
我的理解是,
- Alice 將向她的所有對等電腦節點發送請求,並請求驗證交易所需的默克爾樹和雜湊的根。
2)她的對等節點中的一些礦工將找到包含交易的塊
由於區塊只儲存 Merkle 樹根,而不是內部節點,這些礦工必須從所有交易中建構 Merkle 樹
礦工將區塊頭和散列(Merkle 樹根和認證路徑上的散列)發回給 Alice。
由於步驟 3 需要計算資源,我的問題是為什麼有些節點要為 Alice 執行這些計算?這些節點似乎不會因驗證舊交易而獲得報酬。
你有幾件事錯了。
- Alice 將向她的所有對等電腦節點發送請求,並請求驗證交易所需的默克爾樹和雜湊的根。
Alice 可能已經擁有 Merkle 根,因為它是區塊頭的一部分。驗證交易的第一步是確保包含它的區塊是真實的。甚至SPV 客戶端也儲存了整個鏈的所有區塊頭,因此它們已經擁有每個 Merkle 根。
2)她的對等節點中的一些礦工將找到包含交易的塊
這或多或少是正確的,只是節點不必是礦工。網路上有很多完整的節點具有區塊鏈的完整副本,可以查詢這些雜湊值。
- 由於區塊只儲存 Merkle 樹根,而不是內部節點,這些礦工必須從所有交易中建構 Merkle 樹
全節點儲存所有交易,返回 Merkle 樹的雜湊值並不太計算密集。您可以在開發人員指南的事務數據部分閱讀更多相關資訊。
- 礦工將區塊頭和散列(Merkle 樹根和認證路徑上的散列)發回給 Alice。
同樣,不一定(或什至通常)礦工會發送所需的 Merkle 路徑的雜湊值。它通常是非探勘完整節點。並且如前所述,不需要請求塊頭和 Merkle 根。
最後,Alice 是驗證她的交易的人,但這樣做是通過使用網路上完整節點提供的附加資訊來完成的。全節點為提供這些數據所做的工作很重要,但計算量不會太大。例如,我的 Raspberry Pi 2 作為一個完整節點工作得很好。至於誰為他們的服務支付全部節點的費用……嗯……沒有人。這一直是一個爭論不休的話題。
然而,最終,人們操作全節點有幾個原因。在我的頭頂上:
- 所以他們可以不信任地操作
- 作為對網路整體健康的服務(這反過來又保護了他們自己的投資)
- 用於研究或商業目的
因此,儘管為瘦客戶端提供進行交易驗證所需的數據可以被視為慈善,但實際上參與的動機是……即使不是直接的財務。