Bitcoin-Core

如果兩個人想同時花費相同的輸入怎麼辦

  • June 4, 2020

假設我和我的朋友都可以訪問可以簽署一些新交易的相同私鑰。如果我和我的朋友同時將具有相同輸入的交易廣播到不同的節點會發生什麼?

另外,如果我在他之後 1 分鐘播放它並支付更高的費用並且他的交易仍未得到確認,會發生什麼?礦工會接受我的交易,而不是因為它包含更高的費用,還是會堅持他的交易,因為他先廣播了它。

謝謝

如果我和我的朋友同時將具有相同輸入的交易廣播到不同的節點會發生什麼?

一些網路節點會將您的交易保存在他們的記憶體池中,而其他網路節點會將您的交易保存在您朋友的記憶體池中。

如果你的交易真的是基本的(沒有批次,沒有發出 RBF 信號,沒有花費另一個未確認的交易),那麼(未修改的 [*])節點將接受它們發送的第一筆交易並拒絕另一筆交易。

另外,如果我在他之後 1 分鐘播放它並支付更高的費用並且他的交易仍未得到確認,會發生什麼?

如果您朋友的交易發出了Replace By Fee的信號,那麼您的交易可能會 [**] 取代您朋友在選擇 RBF的節點記憶體池中的交易。

[*] 根據他們的激勵措施,礦工可能會執行軟體的修改版本(尤其是在政策方面)。

[**] 如果它遵守5 RBF 規則

最終,所有消息都按順序排列。關鍵詞是“最終”。

假設有兩個使用者 A 和 B 試圖同時花費一筆交易。

A 的交易到達 Node1,B 的交易到達 Node2。

兩個節點都在一個塊中包含兩個不同的交易,並且能夠使用這些交易探勘該塊。

此外,當 Node1 收到 B 的交易時,它被拒絕為雙花,而當 Node2 收到 A 的交易時,它也被拒絕為雙花。

此時 Node1 和 Node2 正在不同的鏈上工作。這需要解決,下面解釋如何。

現在,當 Node1 和 Node2 將他們探勘的區塊廣播到網路時,將會有兩條競爭鏈。根據其他節點使用的鏈,您將從不同節點獲得 1 次交易確認。這就是為什麼花費 1 次確認的交易並不是一個太聰明的想法。

最終,隨著更多區塊被探勘到 Node1 或 Node2 的區塊之上,兩個節點都將重新組織。當一個鏈比另一個多輸出 2 個或更多塊時,該問題將得到解決。失敗的鏈將被所有節點(必須接受最長的鏈作為最有效的)丟棄。屆時,未進入有效鏈的雙花交易將永遠無效。

希望這可以幫助。

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