以太坊中的共识机制-GHOST协议
以太坊把出块时间降低到十几秒,这对于提高系统的系统反应时间和吞吐率,是很有帮助的。和比特币的10min来说,相当于提高到了40倍。但是也会带来大量问题,我们说过比特币和以太坊是运行在应用层的共识协议,底层是一个P2P。这就带来一个问题,你发布一个区块传到下一个区块可能需要十几秒的时间。对于比特币来说10min等于600秒,600秒足够可以使他传播到下一个区块中了。因为挖矿是个概率的过程,所以仍然有可能有两个矿工同时获得记账权,同时获得区块,这种情况下会带来临时性分叉。对于以太坊来说系统临时性分叉变成常态,且分叉数目更多(因为10几秒的时间别的区块还没有来得及收到你发布的区块,还是在原来的区块链往下挖,等到它受收到你的区块的时候,它可能自己已经挖出了区块)。
**这对于共识协议来说,有什么样的挑战呢?**在BTC系统中,只有在最长合法链上的那些区块里面所包含的出块奖励才是真正有用的,不在最长合法链上的节点最后都是作废的,我们可以画一个例子。
不在最长链上的就是orphan block(孤儿块) 或者stale block
就是挖到这个孤儿块的矿工在这里面有个铸币交易,coinbase trasction,可以得到一定数量的比特币,但是实际上最后是没有用的,因为它不在最长合法链上,所以出块奖励是作废的。因为出现临时性分叉的情况不是很多,所以这样规定是可以接受的。
但如果在以太坊系统中,如果这样处理,意味着什么?
意味着矿工挖到的区块很大概率是白挖了,由于系统中经常性会出现分叉,你挖到的区块最后没有成为最长合法链,则矿工挖到矿很大可能会被废弃,对矿工来说不公平,这会大大降低矿工挖矿积极性。而对于个人矿工来说,和大型矿池相比更是存在天然劣势。
现在有两个趋势就是用大量芯片挖矿,还有一个趋势是大型矿池的出现。对个体矿工非常不公平。我们说的是算力和收益应该对等才公平,但是如果协议设置不好,就会出现不对等。
比如说这里红色的箭头是大型矿池的,它会继续沿着这个箭头往下挖,并且它的算力是比较大的,而上下两个分叉是个体的,它既希望别的矿工会沿着他们的区块往下挖,它自己的算力是微不足道的,光靠自己是比不过别人的,对于别的矿工来说,它会选算力大的,所以它没有理由选那个个体的。
对此,以太坊设计了新的公式协议——GHOST协议(该协议并非原创,而是对原本就有的Ghost协议进行了改进)。