以太坊GHOST协议

以太坊的共识机制用的是ghost协议,以太坊把出块时间降至十几秒,对于降低反映时间很有帮助,但是带来了一些新的问题,比特币和以太坊都是运行在应用层,底层是overlay network,这个overlay network 本身传输的时间是比较长的,因为它的flooding过程没有考虑实际的拓补结构,对于比特币来说,传输时间相较于出块时间微不足道,足以让新发布的区块传播到网络上的所有节点,即使这样,因为挖矿是一个概率过程,仍然有可能有两个矿工同时获得记账权发布区块,这种情况下会带来临时性的分叉;对于以太坊来说,这种临时性的分叉会成为常态,而且分叉的数目也更多。这对于共识协议有诸多挑战,比特币中只有在最长合法链上的那些区块里面包含的出块奖励才是真正有用的,其它分叉链上的奖励都是作废的,但是以太坊不能这么干,因为分叉太多,如果这么干矿工大概率是拿不到出块奖励的。以太坊用的是ghost协议,协议的核心思想是没有成为最长合法链上的区块不叫orphan block ,改成叫uncle block(和父区块同级),发布uncle block 的矿工能获得7/8的出块奖励,发布最长合法链上的区块如果包含一个uncle block就可以额外获得1/32的出块奖励(包含指的是在块头说明叔叔区块来源,而不是包含叔叔区块的交易,叔叔区块的交易不会再执行,因为可能会与父区块里的交易冲突,挖出叔叔区块的矿工会roll back继续回到最长合法链上挖),最多包含两个uncle block,但是如果竞争过于激烈,导致出现很多uncle block ,那么很多uncle block 都会没有得到奖励,所以以太坊修改了一下ghost协议,uncle block 可以往前追溯7代,uncle block 的奖励递减至2/8
在这里插入图片描述
如果不限制叔叔隔多少代,那么对于全节点要维护的状态就太多了,因为它要记录隔着很多代以前有哪些叔叔区块,节点发布的区块里包含的叔叔区块其它节点也是要验证的。奖励递减的目的是鼓励出现分叉时立马合并,这时候得到的出块奖励是最多的,但是这样不能解决硬分叉。注意,只有分叉后的第一个区块才能得到uncle reward,这样做是为了防止fork attack,假如分叉后的所有区块都得到了uncle reward,那么分叉攻击的代价就大幅下降,不管结果如何,他都会先分叉攻击,成功了,就可以回滚另一条链的交易,失败了也能获得uncle reward,所以以太坊规定只有分叉后的第一个区块才能得到uncle reward。

比特币发布区块得到两部分奖励,一部分是block reward,一部分是tx fee,有时候前者也叫静态奖励,后者叫动态奖励,因为要执行交易才能得到tx fee。以太坊中也是类似的,一部分是block reward,另一部分叫gas fee,区块里包含智能合约,执行智能合约的时候得到gas fee,叔叔区块获得的出块奖励只限于block reward

发布了45 篇原创文章 · 获赞 8 · 访问量 1793

猜你喜欢

转载自blog.csdn.net/weixin_43888039/article/details/103906718