以太坊的 GHOST 协议

概述

ETH 的出块时间大概只有十几秒,如此短的出块时间如果照搬 BTC 的共识机制就会造成大量的分叉,分散全网算力,降低系统的安全性。因此 ETH 采用了新的 GHOST 协议,可以很好地适应十几秒地出块时间,保证系统的安全性,同时也在一定程度上平衡了收益,使得大型矿池相对于 BTC 不再那么占便宜。
使用基于 GHOST 的协议主要出于两个目的:

  • 维护系统安全性
  • 平衡收益

维护系统安全性

出块时间只有十几秒,由于 Flooding 的时候没有考虑底层拓扑,如此短的时间一个区块难以广播给全网,容易造成大量分叉,如果继续使用 BTC 的共识协议,极其容易分散算力,降低系统安全性。

平衡收益

以下图所示情况为例说明

我们假设 A、C 两个 Block 时个人矿工所挖出的,B 是大型矿池挖出的 Block。假设三个 Block 同时挖出。

  1. 显然大型矿池的所在的链最有可能成为最合法链,也就是 B 所在的链。
  2. 同时其它矿工出于不想浪费算力的目的,通常会选择跟在大型矿池的后面继续挖矿,而不是跟在个人区块后面。
  3. 理想情况下如果一个矿工占有 n% 的算力,那么他的收益也应该是所有矿工收益的 n%。
  4. 现在 B 所在的链成为最长合法链的概率会超过 n%。
  5. 因为个体矿工愿意跟随大型矿池进行挖矿。
  6. 那么大型矿池的期望收益就会超过 n%。
  7. 我们不希望这种情况出现。

上图这种情况下,ETH 规定,D 在发布的时候可以将 A、C 作为 Uncle Block 包含进 D 中,那么 A 和 C 的其所有者会获得 7/8 的出块奖励。一个区块中最多只能包含两个 Uncle Block。

对于上图这种情况,能被包含进 J 的 Uncle Block 只能是 A 和 C。而 E、G、F、H 不能作为 Uncle Block,否则这会降低矿工合并分支的积极性。


Uncle Block 最多往前追溯七代,收益每隔一代减少 1/8,七代之前的区块不允许作为 Uncle Block。

这么做就可以在一定程度上平衡了收益,也能鼓励分叉尽快进行合并。

参考资料

本文作者:ADD-SP
本文链接https://www.addesp.com/archives/171
版权声明:本博客所有文章除特别声明外,均默认采用 CC-BY-NC-SA 4.0 许可协议。
暂无评论

发送评论 编辑评论


上一篇
下一篇