5、ETH-GHOST
以太坊把出块时间降到了十几秒,这对于提高系统的throughput(吞吐量)和降低反应时间来说都是很有帮助的,跟比特币的10分钟的出块时间相比,以太坊的出块速度相当于提高到了40倍
但是这样大幅度降低出块时间之后也带来一些新的问题,比特币和以太坊都是运行在应用层的共识协议,底层是一个P2P的Overlay Network,这个Overlay Network本身传输的时间是比较长的,因为它的拓扑协议做flooding的时候没有考虑实际的拓扑结构,就带来一个问题,发布一个区块的时候,这个区块在网络上传到其他节点可能需要十几秒的时间
对于比特币来说,10分钟的出块时间相当于600秒,足够让新发布的区块传播到网上的其他节点,即使这样,因为挖矿是个概率的过程,仍然有可能有两个矿工同时获得记账权,同时发布区块,会带来临时性的分叉;对于以太坊来说,这种临时性的分叉会变成常态,而且分叉的数目也会变得更多,因为十几秒的出块时间很有可能别的节点没有来得及收到发布的区块,还是沿着原来的区块链往下挖,可能等到收到发布的区块的时候,他自己已经挖到了新的区块
那对于共识协议来说,有什么挑战呢?比特币只有在最长合法链上的那些区块,里面所包含的出块奖励才是真正有用的,其他的一些分叉的链上的出块奖励其实最后是作废的
比如说上图这个区块链,分了三个叉,差不多是同一个时间取得了记账权,最后中间这个区块胜出成为最长合法链,那么上面和下面的这个区块叫做orphan block或者stale block,就是挖到这个区块的矿工在里面有一个铸币交易,能够得到一定数量的比特币,但这个实际上是没有用的,因为不在最长合法链上,所以得到的出块奖励最后等于作废了
对于比特币来说,因为出现这种临时性的分叉不是很多,所以这么规定还是可以接受的。但是对于以太坊也这样处理的话,那么意味着这个矿工挖到的区块有很大概率是白挖了,对于个体矿工特别明显。从过去的经验来看,大型矿池所在的分叉更有可能成为最长合法链,这就促使别的矿工沿着大型矿池所在的分叉继续挖,因为沿着别的链去挖的话,很有可能就白挖了,这样越是大型矿池得到的收益越大,这种情况叫做centralization bias,就是中心化带来的不成比例的优势,如果以太坊按照比特币的共识机制就会有一定的问题
1)、GHOST协议最初版本
以太坊中采用一个基于GHOST协议的共识机制,这个并不是以太坊发明的,在以太坊出现以前已经有GHOST协议了,以太坊对这个协议做一些修改
GHOST协议的核心思想是:矿工挖到一个区块,这个区块最后作废了,为了补偿矿工所作的工作,给一些补偿。以太坊中这些作废的区块叫做Uncle Block(叔父区块),因为相对于最长合法链的当前区块来说,是他的叔父区块。最长合法链的下一个区块在发布的时候可以把叔父区块包含进来,这样的话,叔父区块可以得到 7 8 \frac{7}{8} 87的出块奖励
以太坊的出块奖励,刚开始的时候是5个以太币,17年下半年的时候改成3个以太币,所以出块奖励是 7 8 × 3 \frac{7}{8} \times 3 87×3个以太币,所以挖到矿最后虽然没有被认可但也可以得到一定的好处,那个包含叔父区块的区块可以得到额外的 1 32 × 3 \frac{1}{32}\times 3 321×3个以太币的奖励,加起来一共可以得到 1 32 × 3 + 3 \frac{1}{32}\times 3 + 3 321×3+3个以太币的奖励
一个区块最多可以包括两个叔父区块,所以上图中当中上下两个叔父区块都可以被包含进去,那么包含了两个叔父区块的区块的得到的奖励还要乘以2,就是 2 × 1 32 × 3 + 3 2 \times \frac{1}{32}\times 3 + 3 2×321×3+3个以太币
这个协议的核心思想是对于挖到了矿,但是没有得到认可的那些矿工给予一种安慰,虽然你挖的区块没有成为最长合法链上的区块,但是仍然可以得到大部分的出块奖励,这样设计有利于鼓励系统中出现分叉之后及时进行合并,这是GHOST协议最初的版本
最初的版本也有缺陷:
uncle block只能包含两个,如果出现第三个,第三个就不开心了,设计GHOST的目的是如果你给uncle block一点好处的话,他们不愿意合并过来,因为一旦放弃自己所在的分叉就什么好处都没有了,所以要给点好处,把他们招安过来,但是只能招安两个,如果出现第三个uncle block就没办法了。其实,只能包含两个也是有道理的,因为叔父区块得到 7 8 \frac{7}{8} 87的出块奖励是很高的,要是不限制的话,那么以太坊中的以太币就太不值钱了
区块1把区块2作为叔父区块的前提是,在挖区块1的时候已经知道叔父区块的存在了,如果已经发布了区块1,然后才知道叔父区块,这时候已经来不及了,叔父区块就变成什么好处都没有了
- 如果这个矿工比较自私的话,矿池之间存在竞争关系,出于商业目的,有可能故意不包含叔父区块,就是挖的时候知道这个叔父区块,但是就是不包含,这样的话,对叔父区块来说, 7 8 \frac{7}{8} 87的出块奖励是得不到的,对于他自己来说, 1 32 \frac{1}{32} 321的出块奖励是得不到了,好像是损人不利己,但要从商业竞争的角度讲,这么做对这个矿工的损失是比较小的,对挖出叔父区块的矿工的损失是比较大的
2)、GHOST协议新的版本
把协议修改一下,区块1如果没有包含叔父区块(区块2),往下再有一个区块(区块3),按道理来说区块2就不是区块3的叔父区块了,因为区块2跟区块3的爷爷来说是一辈的,但是以太坊规定不能论资排辈,区块2还可以当做区块3的叔父区块。如果再往下挖一个(区块4),那就更不对了,区块2就是区块4的曾祖父的那一辈了,但以太坊不管,区块2还是区块4的叔父区块
这么规定的好处,如果某个矿池(挖出区块1的矿工)出于竞争关系故意不把这个叔父区块(区块2)包含进去,你不包含没关系,别人可以包含,下一个区块可能不是你挖出来的,不可能最长合法链上都是你挖出来的吧。甚至有可能下一个区块是跟挖出区块2的是一家的,就是挖出区块2的矿工看到最长合法链之后会切换到这里来挖,然后把自己之前挖出的区块2给包含进去
本质就是为了改进最初版本的GHOST协议存在的一些问题,所以把叔父的定义扩展了,不一定是当代叔父,可能是隔着几代的叔父,问题就在于隔多少代呢,以太坊中怎么规定呢?
如上图所示,M为区块链上一个区块,F是M严格意义上的叔父,E为其严格意义上的爷爷辈。以太坊中规定,如果M包含F辈区块,则F获得 7 8 \frac{7}{8}

本文深入探讨了以太坊中的GHOST共识机制,包括其背景、核心思想以及不同版本间的差异,并介绍了以太坊的挖矿算法和难度调整机制。此外,文章还讨论了以太坊向权益证明(POS)机制转型的计划,重点讲解了Casper FFG协议的工作原理。
最低0.47元/天 解锁文章
1513

被折叠的 条评论
为什么被折叠?



