Blockchain

最強與最長鍊和孤立塊

  • May 4, 2018

中本聰在其白皮書第 3 頁的底部寫道:“如果兩個節點同時廣播下一個區塊的不同版本,一些節點可能會先接收一個或另一個。在這種情況下,它們會處理收到的第一個,但保存另一個分支,以防它變得更長。” 這裡似乎正確的鍊是最長的,儘管也許 satoshi 只是在措辭上有點粗心。

但是,我讀過其他地方,節點通過選擇代表最多工作的鏈(或者換句話說,最難撤消的鏈)來選擇比特幣中的正確鏈。我稱之為最強鏈。這不一定與最長的鏈相同,因為例如,可以想像有一個塊需要更多的雜湊來找到一個有效的隨機數,而不是其他兩個具有更容易難度級別的塊。這個堆棧交換是我讀過的一個地方。

問題1:節點用來確定正確鏈、最長鏈還是最強鏈的正確方法是什麼?

如果問題 1 的答案是正確的鍊是最強的鏈,那麼我的第二個問題更相關。它與孤立塊有關。

如果正確的鍊是代表最多工作的鏈,那麼為什麼孤立塊會出現這樣的問題?似乎如果一個節點解決了一個塊並廣播它,那麼每個人都會在幾秒鐘內知道它,然後可以開始在新塊上進行探勘,而不會浪費任何工作。即使 2 名礦工同時(接近)解決一個區塊,大多數區塊會看到兩個新區塊並選擇具有較低標頭雜湊值的一個(因為更難找到較低雜湊值)。如果正確的鍊是由最強(而不是最長)的鏈選擇的,那麼節點似乎應該在幾秒鐘內達成共識。礦工唯一可以花在錯誤鏈上工作的時間是在收到一個已解決的塊之間進行探勘的時間,該塊在不久後被具有稍低雜湊值的不同已解決塊替換。

問題 2:孤塊對礦工來說是一個大問題嗎?如果塊生成時間是 1 分鐘,那麼孤立塊會是一個更大的問題嗎?

“最長”的鏈條是工作量最大的鏈條。一條鏈的工作量等於某人複製一條具有相同數量的塊和完全相同的難度步驟的鏈所需的雜湊值的預期數量。因此,目前每個區塊向鏈添加了大約 2 66 個工作,因為平均需要約 2 66 個雜湊來解決目前難度的區塊。難度較小的積木會增加較少的工作量。(目前鏈上的總工作量在 2 80左右。)**但是,相同難度週期的兩個區塊總是給鏈增加相同數量的工作量。**具有較低雜湊值的塊並不被認為比具有較高雜湊值的塊更好。

中本聰最初並沒有意識到僅通過計算塊數來選擇正確的鏈可以進行一些極其簡單的攻擊。0.1 版只計算塊。這就是為什麼論文只說“最長”。“鍊式工作”的概念是稍後添加的。

正如您所建議的那樣解決孤兒問題實際上可能使孤兒更有可能發生,因為在某些情況下,礦工會被激勵去嘗試替換最近的區塊而不是擴展它,尤其是在大難度調整之前或最近的區塊包含大量費用時。

孤立塊不時發生。Eligius 報告了大約 2% 的孤立塊。如果目標時間是 1 分鐘,它們確實會更常見,因為塊的生成速度會更快,因此塊之間發生衝突的機會也會更多。

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