概述
ETH 的出块时间大概只有十几秒,如此短的出块时间如果照搬 BTC 的共识机制就会造成大量的分叉,分散全网算力,降低系统的安全性。因此 ETH 采用了新的 GHOST 协议,可以很好地适应十几秒地出块时间,保证系统的安全性,同时也在一定程度上平衡了收益,使得大型矿池相对于 BTC 不再那么占便宜。
使用基于 GHOST 的协议主要出于两个目的:
- 维护系统安全性
- 平衡收益
维护系统安全性
出块时间只有十几秒,由于 Flooding 的时候没有考虑底层拓扑,如此短的时间一个区块难以广播给全网,容易造成大量分叉,如果继续使用 BTC 的共识协议,极其容易分散算力,降低系统安全性。
平衡收益
以下图所示情况为例说明
我们假设 A、C 两个 Block 时个人矿工所挖出的,B 是大型矿池挖出的 Block。假设三个 Block 同时挖出。
- 显然大型矿池的所在的链最有可能成为最合法链,也就是 B 所在的链。
- 同时其它矿工出于不想浪费算力的目的,通常会选择跟在大型矿池的后面继续挖矿,而不是跟在个人区块后面。
- 理想情况下如果一个矿工占有 n% 的算力,那么他的收益也应该是所有矿工收益的 n%。
- 现在 B 所在的链成为最长合法链的概率会超过 n%。
- 因为个体矿工愿意跟随大型矿池进行挖矿。
- 那么大型矿池的期望收益就会超过 n%。
- 我们不希望这种情况出现。
上图这种情况下,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。
这么做就可以在一定程度上平衡了收益,也能鼓励分叉尽快进行合并。