您当前的位置: 首页 >  区块链

PolarDay.

暂无认证

  • 2浏览

    0关注

    144博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

区块链学习笔记17——ETH-GHOST协议

PolarDay. 发布时间:2022-01-19 14:16:51 ,浏览量:2

区块链学习笔记17——ETH-GHOST协议

学习视频:北京大学肖臻老师《区块链技术与应用》 笔记参考:北京大学肖臻老师《区块链技术与应用》公开课系列笔记——目录导航页

引入

以太坊的出块时间降低到了十几秒,大幅降低出块时间也带来了问题——两个矿工同时挖到区块所产生的临时性的分叉成为常态,而且分叉的数目也会更多,(因为十几秒的时间很有可能别的结点还没来得及收到你发布的区块,还是沿着之前的区块往下挖,等到收到你的区块的时候可能自己已经挖出了一个区块。)这对于共识协议来说,就存在很大挑战。在BTC系统中,不在最长合法链上的节点的出块奖励最后都是作废的。而在ETH中区块链的分叉很多,则矿工挖到矿很大可能会被废弃,这会大大降低矿工挖矿积极性。而对于个人矿工(算力分散)来说,和大型矿池相比更是存在天然劣势。

因此,以太坊采用了一个基于GHOST协议的共识机制(GHOST协议并不是以太坊发明的,以太坊对其做了修改)。 GHOST协议的核心思想:给挖到了矿但最后没有得到认可的矿工一些“安慰”。

GHOST协议 最初版本

如图,假定以太坊系统存在以下情况,A、B、C、D在四个分支上,最后,随着时间推移B所在链成为最长合法链,因此A、C、D区块都作废,但为了补偿这些区块所属矿工所作的工作,给这些区块一些“补偿”,并称其为"Uncle Block"(叔父区块)。 规定E区块在发布时可以将A、C、D叔父区块包含进来,A、C、D叔父区块可以得到出块奖励的7/8,而为了激励E包含叔父区块,规定E每包含一个叔父区块可以额外得到1/32的出块奖励。为了防止E大量包含叔父区块,规定一个区块只能最多包含两个叔父区块,因此E在A、C、D中最多只能包含两个区块作为自己的出块奖励

协议存在的缺陷:

  • 一个区块最多只能包含两个叔父区块,如果出现呢两个以上怎么办
  • 矿工自私,故意不包含叔父区块,导致叔父区块7/8出块奖励没了,而自己仅仅损失1/32。如果甲、乙两个大型矿池存在竞争关系,那么他们可以采用故意不包含对方的叔父区块,因为这样对自己损失小而对对方损失大。
新版本

如下图中1为对上面例子的补充,F为E后面一个新的区块。因为规定E最多只能包含两个叔父区块,所以假定E包含了C和D。此时,F也可以将A认为自己的的叔父区块(实际上并非叔父辈的,而是爷爷辈的)。如果继续往下挖,F后的新区块仍然可以包含B同辈的区块(假定E、F未包含完)。这样,就有效地解决了上面提到的最初Ghost协议版本存在的缺陷。 在这里插入图片描述 这样设计还存在一些问题?

所谓的“叔父”应该隔多少代呢?如果没有限制的话,可以在最初挖矿难度小的时候一直挖叔父区块,等待取得叔父区块的奖励。

如下图所示,M为该区块链上一个区块,F为其严格意义上的叔父,E为其严格意义上的“爷爷辈”。以太坊中规定,如果M包含F辈区块,则F获得7/8出块奖励;如果M包含E辈区块,则F获得6/8出块奖励,以此类推向前。直到包含A辈区块,A获得2/8出块奖励,再往前的“叔父区块”,对于M来说就不再认可其为M的"叔父"了。 对于M来说,无论包含哪个辈分的“叔父”,得到的出块奖励都是1/32出块奖励。 也就是说,叔父区块的定义是和当前区块在七代之内有共同祖先才可(合法的叔父只有6辈)。 在这里插入图片描述

  • 如果不限制叔父的辈分,对全结点来说要维护的状态就太多了,它可能要记录隔着一百代之前的叔父区块
  • 出块奖励递减,有利于鼓励出现分叉后尽早合并

这种协议只能合并临时性的分叉,不能合并硬分叉(互相不认可对方的链,各自沿着自己的链向下挖)

以太坊中的奖励

BTC发布区块的奖励:block reward(静态奖励)+transaction fee(动态奖励) ETH发布区块的奖励:block reward(静态奖励)+gas fee(动态奖励,区块中包含智能合约,执行智能合约时得到的奖励) 叔父区块只能得到blcok reward,不能得到gas fee,实际上影响不大,汽油费只占很少一部分

把叔父区块包含进来的时候,叔父区块的交易需不需要执行? 不执行,因为叔父区块中的有些交易可能在执行完父区块的交易后就不合法了。 在包含叔父区块时,只检查其挖矿难度是否符合要求即区块是否合法,但是不执行里面的交易,也不检查交易的合法性。 如果分叉后的叔父区块之后还有区块怎么办?例如下图所示,A->F该链并非一个最长合法链,所以B->F这些区块怎么办?该给挖矿补偿吗? 如果给下面的整条链都分一些奖励的话,会使得分叉攻击的风险大大降低(攻击不成功的话还是会得到一些奖励)因此,ETH系统中规定,只认可A区块为叔父区块,给予其补偿,而其后的区块全部作废。 鼓励出现分叉后及时合并,如果继续沿着分叉挖的话就都白挖了 在这里插入图片描述

以太坊的一些真实情况

Etherscan——查看以太坊的一些实时数据

关注
打赏
1659342973
查看更多评论
立即登录/注册

微信扫码登录

0.0383s