是否對區塊鏈的提示達成了實際共識,還是僅在下一個區塊之前達成共識?
使用這個場景<https://bitcoin.stackexchange.com/a/40435>
假設我們有兩個相互競爭的區塊鏈技巧:它們都以區塊 A 作為父區塊開始,但同時發現了兩個不同的區塊:區塊 B1 和區塊 B2。兩個塊具有相同的難度級別,正如我們在上面了解到的,這與它們何時被發現無關。因此,Block A + Block B1 = Block A + Block B2 的總難度。一旦找到塊 C1 或塊 C2,兩條鏈中的一條將具有更大的總難度。
是否就提示是 B1 或 B2 達成共識,還是僅在找到 C1 或 C2 之前達成共識?如果 2 個區塊鏈探索者同時擁有 B1 和 B2,他們是否可以隨機選擇其中一個作為區塊鏈的尖端,並且兩者都被認為是正確的?
不,在找到下一個區塊之前沒有共識。該網路正在經歷區塊鏈分叉。它只會在其中一個提示通過添加另一個塊而領先時修復。然後所有節點將重組為最長的鏈並重新建立共識。失敗的鏈變成了一個滅絕的分支——有效但不是最長鏈的一部分。
以前無法達成共識,因為從節點的角度來看,無法可靠地判斷兩個區塊中的哪一個在網路中更受歡迎。他們可以四處打聽,但會得到不同的答案,並且無論如何都可能被女巫攻擊所欺騙。因此,節點接受他們聽到的第一個有效區塊作為目前區塊鏈提示,直到另有證明——唯一有效的證明是顯示更長的鏈。不過,他們仍然會保留競爭區塊,並在以後需要進行重組時進行傳播。
事實上,當隨後發現競爭塊時,這種區塊鏈分叉甚至可以持續幾個塊。例如,在 2012 年有一個有四個區塊的區塊鏈分叉。
在區塊鏈分叉期間,存在更高的雙花風險,因為相同高度的競爭區塊可能會確認不同的交易。但是,如果它們是自然隨機發生的(而不是攻擊),它們將使用同一組未經確認的交易,並且應該包含一個大部分匹配的交易集。由於每個區塊鏈提示都認為另一個不相關,因此它們不會拆分要確認的交易,而是都嘗試確認整個集合。
所以,是的。兩者都是有效的區塊鏈技巧,從長遠來看,兩者都可能成為最長鏈的一部分,但一個好的區塊鏈瀏覽器可能應該同時展示兩者,直到明確哪一個仍將是最長鏈的一部分。