Proof-of-Work

你能通過保持恆定的低難度獲得最長的鏈條嗎?

  • February 10, 2022

我正在努力解決這個應該很容易回答的問題。

如果事實是最長的鏈,如果我通過保持恆定的低難度重做區塊 1 中的所有工作直到擁有最長的鏈怎麼辦?然後我可以產生大量的塊,只需修改時間戳以保持恆定的難度。我應該能夠生成比實際高度更長的鏈。

我知道我錯過了一個重要的觀點。針對這個過程有哪些保護措施?還是我的數學壞了?

我希望我已經很好地表達了我的想法謝謝你的回答

重要的是累積的工作量,而不是鏈條的長度。以較高難度解決的塊將比以較低難度解決的塊(或幾個塊)增加更多的工作。

因此,你不能從創世中創建一個低難度的鏈,並讓知道目前鏈的節點重組到你的鏈上。

有關更多詳細資訊,請參閱此答案

另請注意,一個塊僅根據目前難度添加工作,而不是其雜湊值。有關更多資訊,請參閱此答案

正如 Mike 和 Antoine 已經解釋的那樣,我們根據總累積工作量而不是高度來選擇最佳鏈,其中工作量是按塊的難度計算的。然而,比特幣最初的發布確實是使用高度來選擇最好的鏈,在人們像你一樣注意到這個攻擊面後,它被替換為“最多工作”。

你不能從區塊 1 重做工作,因為比特幣核心送出了一系列檢查點,這些檢查點在特定高度對特定區塊雜湊進行硬編碼。最年輕的身高為 295,000,現在已經埋葬了大約 8 年。這可以防止新節點落入難度極低的假鏈,即使今天的難度比上一個檢查點區塊的難度高約 5,000 倍。

此外,幾年前,Bitcoin Core 引入了 header-first 同步:在 Bitcoin Core 請求任何單個塊之前,它會從一個 peer 請求整個 header 鏈(直到那個 peer 的最佳鏈提示)。由於標頭足以確定一個塊是否通過了難度要求,因此新節點可以使用小於 60 MB 的標頭鏈來查看其獲得的通過是否比稱為 sanity 參數的工作量更大minChainWork。節點只有在收到累積工作量超過minChainWork兩週工作量的頭鏈後才會開始向對等方請求塊。因此,攻擊者要讓你下載一個區塊,他們的鏈必須超過比特幣總工作量的總工作量。

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