Blockchain

區塊鏈分裂如何解決?

  • May 4, 2018

假設兩個礦工創建了 2 個不同的塊並將它們廣播到網路中。現在一些客戶看到區塊鏈 1 和其他區塊鏈 2 彼此不同。

我想從技術上盡可能了解最終大多數客戶將如何繼續只使用一條鏈而另一個被放棄?

為什麼他們會選擇其中之一?

我想相信這是由客戶/礦工自動完成的,無需人工干預,僅通過某種編碼邏輯。這個邏輯就是我所追求的。

相關問題:滅絕的區塊鍊及其內部的交易會發生什麼?

您正在尋找按三個規則執行的CBlockIndexWorkComparator 。規則一次應用一個,如果一條規則導致平局,則應用下一條規則。

  • 哪個區塊鏈的工作量最大
  • 哪個先收到?(對於不同的客戶端,這可能會有所不同,這就是首先應用前面的規則的原因。)
  • 哪個指針地址更大?(這在很大程度上是隨機的,並且對於不同的客戶來說是不同的。)

比特幣論文對此進行了解釋:

節點總是認為最長的鍊是正確的,並將繼續努力擴展它。如果兩個節點同時廣播下一個塊的不同版本,一些節點可能會先接收一個或另一個。在這種情況下,他們會處理他們收到的第一個分支,但保存另一個分支以防它變得更長。當找到下一個工作量證明並且一個分支變長時,平局將被打破;在另一個分支上工作的節點將切換到更長的節點。

這個想法是,網路幾乎同時發現 2 個不同的塊是非常罕見的。如果發生這種情況,您將有同行在一條鏈上工作,而其他人在另一條鏈上工作。連續發生這種情況變得更加罕見,因此網路收斂到一條鏈上只是時間問題。

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