Transactions

礦工在接受區塊鏈之前使用什麼算法來驗證廣播解決方案中的單個交易?

  • May 2, 2022

如果工作量證明是一種防止惡意節點添加錯誤區塊的共識算法,那麼當礦工通過隨機數猜測成功確認欺詐區塊(即包含雙花交易或其他欺詐交易的區塊)時,實際上會發生什麼?為了讓礦工擴展“正確”的區塊,必須有某種方法來驗證廣播解決方案中的單個交易。如果驗證只是檢查相同的輸入(交易、隨機數等)是否導致相同的散列,那麼就沒有辦法區分包含錯誤交易的塊和只包含真實交易的塊。在決定放棄他們目前正在處理的區塊之前,礦工使用什麼算法來驗證廣播解決方案中的單個交易?

所有節點,不僅僅是礦工,都會檢查一個區塊中交易的輸入是否已經被花費。所有完整節點(比特幣核心等錢包)都會跟踪未使用的交易輸出(UTXO)。

沒有節點信任其他節點,沒有節點信任礦工。所有節點檢查(驗證)所有可以驗證的內容。

完全驗證節點已經解析了完整的區塊鏈,以便自主計算一組未使用的交易輸出 (UTXO)。當這樣的節點了解一個新塊時,它會檢查塊頭是否格式正確,然後驗證每筆交易。交易驗證的一部分是確認交易花費的所有 UTXO 都可用於花費(並且只花費一次)。塊還必須滿足其他一些規則。

如果一個區塊不符合任何單一規則,任何全節點都會辨識這一點並拒絕該區塊。這在 2019 年 7 月 10 日發生在 AntPool 上,當時他們發布了一個不包括交易在內的收取交易費用的區塊。他們做了這項工作,但該塊無效。

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