Ghost协议
Ghost协议
Ghost协议
的全称是Greedy Heaviest-Observed Sub-Tree protocol
,中文称为贪婪子树协议,又称幽灵协议,它属于主链选择协议范畴。
首先,比特币公链是根据最长链规则来解决区块链分叉问题的,但并不是所有的区块链公链解决分叉问题都是使用最长链规则,以太坊就不是。
以太坊解决区块链分叉问题目前使用的是Ghost协议,而Ghost协议的真实作用是用来进行主链选择。不同于比特币的最长链规则,以太坊在选择最长链时不以哪条链区块连续最长为标准,而是将分叉区块也考虑了进去,选择出一条包含了分叉区块在内区块数目最多的链作为最长链,如下图所示。
上图的分叉情况,在比特币公链中最终胜出的链是0 <- 1A <- 2C <- 3F <- 4B <- 5A
,这是一条由最长链规则选择的链。而在以太坊公链中,根据幽灵协议最终胜出的链是0 <- 1A <- 2B <- 3D <- 4A
。原因是在上图的分叉情况中,幽灵协议把分叉区块也考虑进去了,统计总的区块数,发现在包含了区块0、1A、2B、3E、3D、3C、4A的链是含有区块数最多的。因此该链胜出,这就是幽灵协议选择最优链的机制。
此外,对于在最长链中被包含进去的造成链分叉的区块,图中的3E和3C,Ghost协议对它们也有一套对应的处理机制,这些区块会根据规则被处理为:
- 孤块:完全没用的区块,挖出这个区块的矿工没有任何收益。比特币链中的分叉区块都是孤块。
- 叔块:被一定范围内的后续子区块打包收纳的区块,挖出叔块的矿工会按照一定算法给予收益。
综上所述,我们知道,Ghost协议在以太坊中主要起到以下两点作用:
- 选择出最优链。
- 对最优链中分叉块进行处理。