以太坊的GHOST協議

一、孤塊帶來的問題

以太坊1.0將出塊時間降低到15s左右,發佈的區塊在網絡上傳播時間本身就需要10幾秒,其他節點沒有充足時間來接收區塊,會使得分叉變成常態,且分叉數量會很多,大量孤塊(orphan block)得不到收益。同時這些分叉造成算力分散,給以太坊的安全性也會帶來隱患,詳細分析見挖礦難度不能太低章節

中心化帶來超過比例的優勢(centralization bias)

未成爲最長合法鏈的孤塊得不到出塊獎勵,對於礦工來說就白白付出了算力。另外對於個體礦工尤爲不公平,如果個體礦工和礦池幾乎同時挖到區塊,產生分叉,這時礦池因爲算力比例大,是很有可能繼續挖到下一個區塊的,所有會沿着自己挖出的區塊繼續挖礦,而個體礦工因爲算力較弱,只能寄希望於其他礦工沿着自己的區塊繼續挖礦,這樣自己才能獲得獎勵,但對於別的礦工來說沒有理由沿着這條區塊挖礦。所以礦池的區塊成爲最長合法鏈的概率更高,得到了超出算力比例的優勢。

實際中,大型礦池的網絡位置較好,能夠更快地將挖出地區塊發佈到其他節點,所以大型礦池相對個體礦工來說又更加有可能獲得區塊獎勵。

對於別的礦工來說,也就更加傾向於接在礦池的區塊後面挖礦,因爲接在個體礦工後面,很有可能就白挖了,這又使得礦池獲得獎勵的概率更大了。

二、GHOST協議

GHOST協議的核心思想是作廢的區塊也能得到一些獎勵 ,這樣算力就不會白白浪費,解決了臨時性分叉帶來的種種問題。

爲鼓勵分叉合併,包含1個作廢區塊的勝出區塊可以額外獲得1/32倍正常獎勵的以太幣,爲保證以太幣的價值,最多隻能包含2個叔父區塊。

叔父區塊獲得的獎勵爲正常獎勵的2/8~7/8倍,如下圖所示:
在這裏插入圖片描述
設計舊叔父區塊也能獲得獎勵的原因:

  • 由於一個勝出區塊只能包含2個叔父區塊,這種方式使得超過2個的叔父區塊也能獲得獎勵。
  • 發佈速度較慢,未來得及被包含的叔父區塊也能獲得獎勵。
  • 防止礦池的惡意競爭,如果故意不將屬於對手的叔父區塊包含進來,那麼下一個區塊仍然可以將上一個叔父區塊包含進來,得到獎勵。
  • 叔父區塊獎勵逐漸減少,鼓勵儘早包含叔父區塊。

叔父區塊的驗證

以太坊的獎勵包括出塊獎勵(block reward)和汽油費(gas fee)。但是叔父區塊中的交易不被執行,也無需驗證裏面交易的有效性,因此叔父區塊也就得不到汽油費。實際系統中汽油費的獎勵本身也是比較低的。

節點只需驗證叔父區塊是否符合挖礦的難度,符合挖礦難度的叔父區塊即合法叔父區塊,根據叔父的輩分可獲得相應的叔父區塊獎勵。

叔父區塊的後續區塊

叔父區塊的後續區塊不被獎勵,否則惡意節點可以很容易地發動分叉攻擊,即使分叉攻擊失敗了,所有分叉區塊也能獲得相應的叔父獎勵。所以後續區塊不能被獎勵。

叔父區塊的後續區塊沒有獎勵也能鼓勵分叉及時合併,礦工更有意願沿着最長合法鏈挖礦。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章