5.0 ETH中GHOST协议篇

BTC系统中出块时间为10min,而以太坊中出块时间被降低到15s左右,虽然有效提高了系统反应时间和吞吐率,却也导致系统临时性分叉变成常态,且分叉数目更多。这对于共识协议来说,就存在很大挑战。在BTC系统中,不在最长合法链上的节点最后都是作废的,但如果在以太坊系统中,如果这样处理,由于系统中经常性会出现分叉,则矿工挖到矿很大可能会被废弃,这会大大降低矿工挖矿积极性。而对于个人矿工来说,和大型矿池相比更是存在天然劣势。正常来说,挖矿的收益应该是个体在整体算力所占的比例是多少,收益就是多少。当分叉出现的时候,大矿池一定会按照自己原先挖的区块上继续往下挖,而同时一个个体矿工挖到的是分叉的区块,那别人也会去沿着大矿池挖到的块挖,因为这个块成为最长合法链的概率是最高的。并且大型矿池的网络比较好,别的矿工更容易收到它挖的块。故个体矿工非常占劣势,由此可见挖矿时间也不是说越短就越好。

对此,以太坊设计了新的公式协议——GHOST协议(该协议并非原创,而是对原本就有的Ghost协议进行了改进)。

5.1 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中最多只能包含两个区块作为自己的出块奖励。

假定一个矿工挖出了B,此时他沿着其所在链继续挖,在挖E的时候,则可以将A包含进区块挖矿,若挖矿过程中又听到C也是“叔辈”,则可以停止挖矿,将C包含进来重新组织成一个新区块重新挖矿,实际中,由于挖矿过程的无记忆性,这样并不会降低成功挖到矿的概率。

最初版本缺陷:

  1. 因为叔父区块最多只能包含两个,如图出现3个怎么办?或者自己的区块E已经发布完了,然后才收到叔父区块,已经来不及了,那这个新听到的区块(A或者C或者D)又变成了丢弃的区块,怎么解决?

  2. 矿工出于商业利益,故意不包含叔父区块,导致叔父区块(对手)可以得到的7/8出块奖励没了,而自己仅仅损失1/32。如果甲、乙两个大型矿池存在竞争关系,那么他们可以采用故意不包含对方的叔父区块,因为这样对自己损失小而对对方损失大。

Ghost协议新的版本

如下图中1为对上面例子的补充,F为E后面一个新的区块。因为规定E最多只能包含两个叔父区块,所以假定E包含了C和D。此时,F也可以将A认为自己的的叔父区块(实际上并非叔父辈的,而是爷爷辈的)。如果继续往下挖,F后的新区块仍然可以包含B同辈的区块(假定E、F未包含完)。这样,就有效地解决了上面提到的最初Ghost协议版本存在的缺陷。因为如果你不包含上一辈的叔父区块,那下一个区块不一定是你挖出来的了,别人就会去包含你刚没包含的那个区块。损人不利己。

但这样仍然存在一定的问题。

我们将“叔父”这个概念进行扩展,但问题在于,“叔父”这一定义隔多少代才好呢?如果隔个好几千代,那就在很久之前在挖矿难度低的时候,发布很多叔父区块,期待被包含。 如下图所示,M为该区块链上的一个区块,F为其严格意义上的叔父,(图别看叉了,M和F只差了一辈,把下面一行往右移动些更好),E为其严格意义上的“爷爷辈”。以太坊中规定,如果M包含F辈区块,则F获得7/8出块奖励;如果M包含E辈区块,则F获得6/8出块奖励,以此类推向前。直到包含A辈区块,A获得2/8出块奖励,再往前的“叔父区块”,对于M来说就不再认可其为M的"叔父"了。 对于M来说,无论包含哪个辈分的“叔父”,得到的出块奖励都是1/32出块奖励。 也就是说,叔父区块的定义是和当前区块在七代之内有共同祖先才可(合法的叔父只有6辈)。

这样,就方便了全节点进行记录,因为如果包含了隔好几千代的叔父区块,那它要维护的状态就太多了,你发布的区块包含着叔父区块,其他节点也是要验证的。此外,设计7代之内的逐级递减的奖励可以鼓励一旦出现分叉尽早进行合并。(但是M去合并无论上哪辈的区块得到的奖励都是1/32,不是逐级递减的,怎么就能鼓励尽早合并呢?我这里理解的是,A到F的分叉区块很有可能有和M是一个矿池的,M越早合并自己挖出来的分叉区块,奖励越多)

5.2 以太坊中的奖励

BTC:静态奖励(出块奖励)+动态奖励(交易费,占据比例很小约占出块奖励的1%)。 ETH:静态奖励(出块奖励+包含叔父区块的奖励)+动态奖励(汽油费,占据比例很小,叔父区块得不到汽油费。) BTC中为了人为制造稀缺性,比特币每隔一段时间出块奖励会降低,最终当出块奖励趋于0后会主要依赖于交易费运作。而以太坊中并没有人为规定每隔一段时间降低出块奖励。

以太坊中包含了叔父区块,要不要执行叔父区块中的交易? 不应该,叔父区块和主链上区块有可能包含有冲突的交易。而且我们前文也提到,叔父区块是没有动态奖励的。因此,一个节点在收到一个叔父区块的时候,只检查区块合法性(是否符合挖矿难度要求,只查header就行了。)而不检查其中交易的合法性。

当然,对于分叉后的堂哥区块(叔父的儿子)怎么办?例如下图所示,A->F该链并非一个最长合法链,所以B->F这些区块怎么办?该给挖矿补偿吗? 如果规定将下面整条链作为一个整体,给予出块奖励,这一定程度上鼓励了分叉攻击(降低了分叉攻击的成本,因为即使攻击失败也有奖励获得)。因此,ETH系统中规定,只认可A区块为叔父区块,给予其补偿,而其后的区块全部作废。

5.3 以太坊真实数据

Etherscan网站,该网站可以实时观看以太坊的数据。以下截图为我于2020/2/28截的图,和肖老师视频中截图存在一定差异。但具体内容基本一致。

这里是叔父区块的情况,第一列Block Height就是区块的序号,看#1,这个区块的序号比UncleNumber小了2个,隔了两代,奖励6/8的区块奖励。在例子中是3个ETH为出块奖励,3*6/8=2.25个ETH。其他也是类似。

左边:看Block Reward最后加了0.09375,说明这个区块引入了一个叔父区块,并且对应的叔父区块获得了2.25Ether的奖励,说明隔了两代。

右边:看Block Reward最后加了0.1875,说明这个区块引入了两个叔父区块,并且对应的叔父区块获得了4.875Ether(2.625+2.25),包含了一个隔一代和一个隔两代的叔父区块。

北京大学肖臻老师《区块链技术与应用》ETH笔记 - 5.0 ETH中GHOST协议篇相关推荐

  1. 肖臻老师区块链公开课笔记

    前段时间,区块链大火,出现了很多种基于区块链技术的政务应用.之前通过零散的网页信息和讲座,自我感觉理解了block chain原理,当看到各种区块链技术广泛应用时,自己以技术理解,反而对之不屑.当然, ...

  2. 北京大学肖臻老师《区块链技术与应用》公开课笔记8——BTC挖矿篇

    北京大学肖臻老师<区块链技术与应用>公开课笔记 比特币挖矿篇,对应肖老师视频:click here 全系列笔记请见:全系列笔记请见:click here About Me:点击进入我的Pe ...

  3. 北京大学肖臻老师《区块链技术与应用》公开课笔记23——ETH挖矿难度调整篇

    北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊挖矿难度调整,对应肖老师视频:click here 全系列笔记请见:click here About Me:点击进入我的Persona ...

  4. 北京大学肖臻老师《区块链技术与应用》公开课笔记:以太坊原理(一):以太坊概述、账户、状态树、交易树和收据树

    1.ETH-以太坊概述 比特币和以太坊是两种最主要的加密货币,比特币被称为区块链1.0,以太坊被称为区块链2.0 以太坊在系统设计上针对比特币运行过程中出现的问题进行了改进,比如: 出块时间,比特币的 ...

  5. 北京大学肖臻老师《区块链技术与应用》公开课笔记17——ETH数据结构篇1(状态树1)

    北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊数据结构篇1--状态树1,对应肖老师视频:click here 全系列笔记请见:click here 以太坊数据结构篇1--状态树2请 ...

  6. 北京大学肖臻老师《区块链技术与应用》公开课笔记:以太坊(四):The DAO、反思、美链、总结

    10.ETH-The DAO 1).The DAO 比特币实现了去中心化的货币,以太坊实现了去中心化的合约,有人想既然去中心化这么好,为什么不把所有的东西都改成去中心化呢?有人提出口号:let's d ...

  7. 北京大学肖臻老师《区块链技术与应用》公开课笔记15——ETH概述篇

    北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊概述篇,对应肖老师视频:click here 全系列笔记请见:click here About Me:点击进入我的Personal P ...

  8. 北京大学肖臻老师《区块链技术与应用》公开课笔记25——ETH智能合约篇1

    北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊智能合约,对应肖老师视频:click here 全系列笔记请见:click here 智能合约是以太坊的精髓所在,也是其与比特币系统最 ...

  9. 北京大学肖臻老师《区块链技术与应用》公开课笔记26——ETH智能合约篇2

    北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊智能合约,对应肖老师视频:click here 全系列笔记请见:click here 智能合约是以太坊的精髓所在,也是其与比特币系统最 ...

  10. 北京大学肖臻老师《区块链技术与应用》公开课笔记16——ETH账户篇

    北京大学肖臻老师<区块链技术与应用>公开课笔记 以太坊账户篇,对应肖老师视频:click here 全系列笔记请见:click here About Me:点击进入我的Personal P ...

最新文章

  1. Javascript内置对象新增接口列表
  2. jconsole连接远程Tomcat应用
  3. cubemx lan8720a ping不通_肩颈不通百病生,这5个开肩动作要多练
  4. “低端市场”?一线业务员这样看
  5. 最强markdown编辑器typora图床教程-七牛版
  6. hystrix熔断和降级的区别_Ribbon+Hystrix断路器实现微服务的降级和熔断
  7. java thread sleep 效率_Thread.sleep(0):线程休眠0秒有什么意义!
  8. ai背景合成_AI设计制作万圣节夜景插画
  9. oracle exp imp
  10. 1143. Lowest Common Ancestor
  11. OpenGL6-纹理动画
  12. gorm 多条件搜索db处理问题
  13. Skype通话调度功能提供给Android用户
  14. 【笔记目录】南邮(通达)计算机专业基础
  15. 台积电9月14日起不向华为供货;315曝光50多款App涉嫌内置SDK窃取隐私;Micronaut 1.3.7发布 | 极客头条...
  16. iconfont 无法导入 svg_Figma绘制图标上传至iconfont的正确姿势
  17. SQLite语法与Android数据库操作
  18. 简单使用_八角气囊如何使用简单介绍
  19. 现代通信原理3.2:线性系统的时域与频域特性
  20. postsql获取表字段信息SQL

热门文章

  1. MFC修改界面图标时,已导入.ico文件,但是程序运行后,界面不显示更新后的新图标
  2. 美化Ubuntu18桌面伪装成MAC桌面
  3. 高斯消元——解线性方程组+球形空间产生器+开关问题
  4. 银行网点服务认证_银行网点服务认证标准
  5. 请输入星期几的第一个字母来判断一下是星期几
  6. 【番外篇】Excel:一行转多行
  7. CSMA/CA基本原理
  8. 六方ZnS包裹碳纳米管复合粉体/PbS纳米晶原位包裹碳纳米管的复合材料/壳聚糖包裹的多壁碳纳米管
  9. Windows相关文件、文件夹脚本操作
  10. HTTP协议与HTTPS协议详解(含常见面试题)