Transactions

什麼保證礦工只會在一個區塊中包含有效交易?

  • August 29, 2022

因此,礦工們,如果我做對了,在將交易插入記憶體池之前,將請求完整節點的任意數量的確認,這些節點將搜尋整個區塊鏈,以查看錢包是否有信用額來執行該交易。但是,由於不需要此過程,礦工是否可以簡單地創建具有無效交易的有效區塊而沒有任何問題?

不,你說的不對。

節點(包括礦工)不要求其他節點做任何事情,除了給他們數據。沒有“完整節點的確認”。節點將接收交易並使用程式到其軟體中的規則自行驗證它們。如果交易有效(並且還通過了一些其他非共識規則),它將儲存在記憶體池中以用於創建塊。

比特幣不是基於賬戶的模型,因此區塊鏈本身沒有錢包或賬戶。因此,錢包沒有“信用”。相反,驗證需要搜尋在交易輸入中指定的未使用交易輸出 (UTXO)。這些 UTXO 包含一個數量和一個腳本。該節點將檢查輸入金額的總和是否大於或等於輸出金額的總和。然後它將執行這些輸入的腳本,並且腳本必須返回一個表明成功的結果。

礦工無法創建包含無效交易的有效區塊。根據定義,此類塊是無效的。只有當其中包含的所有交易都有效時,一個塊才能有效。其他節點只有在有效的情況下才會接受一個塊。那些其他節點不只是盲目地信任礦工——他們會驗證一個區塊中的所有交易都是有效的。

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