Orphaned-Blocks

如果某些塊與相同的先前雜湊同時添加會發生什麼

  • December 22, 2019

在我看到的所有區塊鏈樣本中,例如 我檢查過的adilmoujahid和Savjee

他們通過創建一個塊添加了先前的 Hash。

假設 L 是目前鏈中的最後一個塊。塊 A 和 B 是同時創建的。所以他們將他們之前的雜湊設置為相同的雜湊,例如 L 的雜湊。

當兩者都成功開採時,採礦會發生什麼,但 B 被開採得更快。

因此通常 B 的先前雜湊是正確的,但 A 的先前雜湊應該更改為 B 的雜湊。

我想達到什麼,我認為通過創建一個塊來分配先前的雜湊不是必需的,而是通過探勘。我對嗎?

發生分叉。如果 A 和 B 正在競爭下一個區塊,他們可能會共享交易。因此,您不能簡單地將 A 附加到 B。

它們都是有效塊,節點持有它們,直到他們聽到建立在 A 或 B 之上的新塊。假設一個節點聽到一個新塊 C 建立在 B 之上,然後該節點將忽略 A,因為它不是最長/最重鏈的一部分。A 中不在 B 中的交易將返回到記憶體池以在新塊中進行探勘。

網路通過信任最長的鏈達成共識。這就是為什麼建議等待 6 次交易確認的原因。這使得網路已就您的交易達成共識具有極高的信心,並且您的交易將成為區塊鏈重組的一部分的可能性非常低。

每個塊通過包含前一個塊的雜湊來送出塊頭中的前一個塊。區塊的雜湊定義為區塊頭雜湊的輸出,要使區塊有效,該雜湊必須滿足目前的難度要求。雖然塊可以有多個子塊,但比特幣網路最終只同意一個最佳鏈。在最好的鏈中,每個高度只有一個塊,因此雖然塊可以有多個子塊,但從長遠來看,只有其中一個是相關的。

因此通常 B 的先前雜湊是正確的,但 A 的先前雜湊應該更改為 B 的雜湊。

首先,即使更改區塊頭中的單個位也會導致區塊頭的雜湊值不同(參見例如掌握比特幣(第 8 章,“探勘區塊”部分))。新的雜湊值也滿足難度陳述在天文上是不可能的。因此,修改後的塊頭將不再代表有效塊。

其次,鑑於 A 和 B 在發現時使用的是同一組未確認的交易,因此確認區塊中包含的交易極有可能存在一些重疊。但是,每筆交易只能包含在一個區塊中,因為每筆交易輸出只能使用一次,因此已經確認的交易的輸入在以後的區塊中不再可用。因此,如果 A 跟隨 B,它可能會包含無效交易。

因此,一旦 A 和 B 都被找到,並且都各自獨立地承諾將塊 L 作為其前身,並且包括一些相同的交易,那麼塊 A 和 B 就會競爭成為最佳鏈的一部分,並且各自獨占其他。

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