Consensus

節點如何在重新計算目標時達成共識?

  • March 4, 2018

由於網路延遲,一些節點可能認為它們與網路的其餘部分處於不同的塊高度。那麼節點如何確定目標是否已重新計算,因為目標每 2016 個塊都會更改一次。

目標重新計算不是廣播的東西或向節點宣布的東西。而是節點根據只需要區塊鏈數據的特定算法計算每個塊的目標。它基於前一個區塊的目標、區塊高度和區塊時間戳。因此,每個區塊的目標都是完全獨立於網路完成的,唯一需要的資訊就是區塊鏈。

由於計算目標的算法是確定性的,給定相同的區塊鏈數據,每個節點將針對相同的塊高度計算相同的難度。

一個節點將在每 2016 個區塊中重新計算一次難度,並且它會根據之前的 2016 個區塊以一種確定性的方式進行計算。

因此,給定 2016 年之前的相同區塊,每個節點都會針對新的網路難度得出相同的結果。我們知道所有節點確實將擁有相同的 2016 年之前的區塊,因為網路仍然保持共識。

如果一個節點沒有很好地連接到網路,並且在接收新塊時經歷了高延遲,這不會影響該節點在接收到新塊後計算新難度的能力。直到節點在此期間收到第 2016 個區塊,它會繼續正常執行,即使它是網路其餘部分之後的一個區塊。

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