乙太坊“家園”協議中實現的確切“最長鏈”規則是什麼?
2016 年的這篇論文聲稱(在第 3.3.2 節中,討論了與規範相反的實際乙太坊實現):
雖然包含在一個塊中的叔塊會獲得獎勵,但它們不計入鏈的總難度,即乙太坊使用最長的鏈規則並為叔塊增加獎勵。這顯然與乙太坊聲稱使用適應 GHOST 的區塊鏈協議相矛盾
(重點是原文)。提供的唯一參考是這篇論文,它似乎斷言了一個相反的主張,即:
乙太坊項目已採用並實施了 GHOST 的一個變體。
它唯一的參考是 ethereum.org,所以這也無濟於事。我知道有大量 文件描述了乙太坊獎勵ommer/uncle 塊的規則,經常說它們“有助於安全”。然而,在確定最長鏈時是否計算 ommers/uncles 的具體問題似乎沒有明確記錄。
第一篇論文繼續聲稱:
乙太坊最近還修改了其最長的鏈算法,以納入統一的平局打破……
$$ which $$允許自私的礦工增加追趕誠實鏈的機會
在這種情況下,連結到一個特定的送出以及關於最佳自私探勘策略的這篇論文指出,統一的平局打破是一種特定的權衡,使得高度連接和協調的攻擊者的攻擊更加困難,而對於更少的攻擊者來說,攻擊稍微容易一些。連接或協調的。 然而,由於那篇論文是一篇關於比特幣的論文,並且假設了一個非叔叔計算最長鏈規則(也沒有專門考慮 ommer/uncle 獎勵的戰略意義),因此評估了乙太坊中統一平局對現實世界的影響仍然需要首先知道是否計算 ommer/uncle 難度。
那麼,*就其實際*最長鏈規則而言,乙太坊節點在 Homestead 中做了什麼?**
他們是否將叔叔難度視為對最長鏈條的貢獻?他們還在做統一的平局嗎?是否進行了其他更改?例如,SPV 挖礦在比特幣中變得普遍,儘管實際上並未在官方版本中實施。從理論上講,乙太坊規定主鏈中的塊是完全驗證的,而 ommer/uncle 塊只驗證其標頭。然而,出於戰略原因,礦工之前肯定已經對區塊時間戳和交易包含進行了調整。
我想要的只是我們目前可以為實際執行在池、客戶端等上的節點獲得的這個問題的最佳答案。 請注意,此處指向白皮書或黃皮書的連結是不夠的,因為本文特別聲稱實現不同於理論和文件。響應需要來自實際客戶端(例如 geth 和 parity)的開發人員,和/或直接連結到顯示規則實際實施方式的儲存庫。
乙太坊根據總難度確定最長的鏈,總難度嵌入在區塊頭中。領帶被隨機打破。
總難度是沒有明確計算叔塊的塊難度值的簡單總和。難度是根據父難度和時間戳、區塊時間戳和區塊編號計算的,同樣不參考叔塊。
除了平局之外,所有這些都對共識至關重要,因此可以預期在所有客戶端中都是相同的。
自從尼克的答案發布以來,情況發生了變化。
特別是,隨著EIP 100的引入(它於 2017 年 6 月被接受——僅在尼克的回答後 3 個月),它改變了難度計算算法以包括 Uncles。
我是乙太坊的新手,所以我不完全理解這有什麼影響,所以如果有人能解釋一下,那就太好了。
新的程式碼連結: