以太坊Ghost協議和叔塊

  GHOST(Greedy Heaviest Observed Subtree)是一種主鏈選擇協議(不是側鏈選擇協議)。舉例來講:經典的Proof-of-Work(POW)是以取最長的主鏈爲基本原則,GHOST協議則是以包含子樹數目最多爲基本原則。segmentfault

  POW協議不能以太快的頻率(上圖的Block Generation Rate)發佈新的區塊,由於太快發佈區塊,區塊中的數據重複驗證6次(若干次)當即永久封存地區塊中,一旦51%算力攻擊一旦發生,double-spend等糟糕問題會出現,惡意的數據容易永久封存於區塊中,整個blockchain系統須要足夠長的時間來處理和恢復黑客惡意攻擊所形成的破壞——這段時間能夠理解爲系統的有效修復時間,也能夠理解爲交易信息被確認的等待時間,從安全的角度,顯然這段時間越長,交易數據可靠性被驗證的越多,因此越可靠。
  相比而言,GHOST協議就沒有這個問題了,由於在GHOST協議控制下, 「區塊發佈太快」 和 「51%攻擊持續性地控制主動權」 兩者沒有必然的關係,GHOST不是採用絕對算力優點獲取主動權的協議。這也是爲何以太坊的出塊速度要遠遠大於區塊鏈。安全

  在比特幣協議中,最長的鏈被認爲是絕對的正確。若是一個塊不是最長鏈的一部分,那麼它被稱爲是「孤塊」。一個孤立的塊也是合法的,可是發現的稍晚,或者是網絡傳輸稍慢,而沒有能成爲最長的鏈的一部分。在比特幣中,孤塊沒有意義,隨後將被拋棄,發現這個孤塊的礦工也拿不到採礦相關的獎勵。例如:挖礦節點A是一個礦池佔有全網30%的算力,挖礦節點B佔有全網算力的10%,節點A會有70%的機率產生廢塊,節點B有90%的機率產生廢塊. 若是新舊區塊之間產生的間隔過短, 則節點A會由於規模效應而比B節點更爲高效。因此新舊區塊的間隔太短會致使單一的礦池主導全網的挖礦過程。
  這個問題在以太坊中獲得了很好的解決,根據GHOST協議,不認爲孤塊沒有價值,而是會給與發現孤塊的礦工以回報。孤塊被稱爲「叔塊」(uncle block),它們能夠爲主鏈的安全做出貢獻,也一樣能得到獎勵,這激勵了礦工在新發現的塊中去引用叔塊,減小了孤塊的產生。網絡

Ghost協議解決了兩個問題:摒棄了單一的最長鏈原則, 取而代之的是最大子數原則;孤塊獎勵問題。學習

以下圖所示:
image區塊鏈

若是單純的計算最長鏈原則, 主鏈應該是 0 -> 1B -> 2D -> 3F -> 3F -> 4C -> 5B.
若是採用了GHOST協議, 之前的"廢塊"也會被考慮到主鏈的計算量中.每個節點下含一個子樹, 兄弟節點之間子樹節點最多的被選爲主鏈. 這樣一來 0 -> 1B -> 2C -> 3D -> 4B 成爲主鏈,
若是採用GHOST協議, 一個攻擊者僅僅提供一個1A到6A的長鏈並不能被認爲是主鏈.spa

Ghost協議的優點在於:blog

  • 以太坊十幾秒的出塊間隔,大大增長了孤塊的產生,而且下降了安全性。經過鼓勵引用叔塊,使引用主鏈得到更多的安全保證(由於孤塊自己也是合法的)
  • 比特幣中,採礦中心化(大量的集中礦池)成爲一個問題。Ghost協議下,叔塊也是可以得到報酬,能夠必定程度上緩解這個問題。

孤塊獎勵問題:rem

  • 主鏈節點得到base reward;
  • 一個節點最多引用兩個叔塊;
  • 叔塊必須是區塊的前2層~前7層的祖先的直接子塊;
  • 被引用過的叔塊不能重複引用;
  • 引用叔塊的區塊,能夠得到挖礦報酬的1/32,也就是51/32=0.15625 Ether,最多得到20.15625=0.3125 Ether;
  • 主鏈節點的兄弟(非主鏈節點)得到 ((叔塊高度+8-當前塊的高度)/8 )*base reward,以下圖表格所示;
  • 交易費用(transaction fee)不會分配給叔塊

被引用的叔塊,其礦工的報酬和叔塊與區塊之間的間隔層數有關係。get

間隔層數 報酬比例 報酬(ether)
1 7/8 4.375
2 6/8 3.75
3 5/8 3.125
4 4/8 2.5
5 3/8 1.875
6 2/8 1.25



歡迎訂閱「K叔區塊鏈」 - 專一於區塊鏈技術學習

博客地址: http://www.jouypub.com
簡書主頁: https://www.jianshu.com/u/756c9c8ae984
segmentfault主頁: https://segmentfault.com/blog/jouypub
騰訊雲主頁: https://cloud.tencent.com/developer/column/72548
相關文章
相關標籤/搜索