Doublespend
礦工可以在一個區塊中進行兩筆交易的雙花嗎?
假設 Alice 向 Bob 發送了 5 個 BTC,Alice 試圖通過再次向 carl 發送相同的 5 個 BTC 輸入來進行雙花,假設 Alice 也是礦工節點之一。
- 在這裡,Alice 試圖將這 2 筆雙花交易放入同一個區塊中
- 假設 Alice 解決了雜湊難題並在同一個塊中廣播了這兩個交易
因為在第一個交易中,輸入 UTXO 和輸出 UTXO 是有效的,並且在同一個區塊的第二個交易中,甚至有輸入 UTXO 未花費,但它是雙花的。當塊被廣播時,這兩個交易同時被廣播,
問題:
- 其他節點將如何通過比特幣程式碼在技術上驗證這兩個同時廣播的交易(這兩個交易在同一個區塊中的位置)?
- 當兩個交易包含在同一個塊中時,比特幣程式碼如何從技術上解決這種雙重支出(當塊被廣播時,這兩個交易同時被廣播)?
擁有足夠的工作證明是區塊有效的必要標準,但這並不是區塊有效的充分標準。工作量證明用於限制對共享全域狀態的更新節奏,並作為一種以分佈式方式選擇下一個塊的作者的機制。此外,區塊必須首先通過所有約 40 條規則才能使區塊有效。
包含兩個衝突事務的塊是無效的。驗證它的完整節點將在驗證第一個事務時將 UTXO 標記為已用,當第二個事務引用相同的 UTXO 作為其輸入時,UTXO 不再可用並且塊被拒絕。
如果一個區塊包含兩個相互衝突的交易(雙花),那麼該區塊是無效的,儘管工作證明是正確的。因此,礦工浪費了他們的工作,該區塊將被所有驗證節點拒絕。