05 ETH-GHOST

Posted YangYi215

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了05 ETH-GHOST相关的知识,希望对你有一定的参考价值。

《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click


05 ETH-GHOST

以太坊出块速度:15s,临时性的分叉成为常态;所以对于叔块,也有奖励(7/8的奖励);【对大矿池友好,对个体节点不友好】

问题:网络传输都需要花费十几秒的时间。


挖矿趋势:

设备专业化:比特币ASIC、以太坊GPU(因为为了抵抗ASIC,要求内存)

矿池出现


最初的GHOST协议:

  • 3:以太坊奖励【变化】
  • 7/8:叔块奖励
  • uncle block只能有两个
  • 后一个区块有叔父区块的哈希值
  • 挖矿是无记忆的

问题:

1 uncle block只能有两个,如果有多个该怎么办?

2 如果已经发布了下一个区块,才知道还有一个叔父区块的存在,这个时候就来不及了,那么这个叔父区块就什么奖励都没有了

3 如果大型矿池挖矿的时候,处于竞争关系,故意不包含叔父区块,后果:叔块没有7/8奖励,自己没有1/32的奖励。好像损人不利己,但是商业竞争,对自己损失小,对别人损失大。


修改协议:

不能论资排辈:【后面的区块还认前面的叔父区块,你不要奖励,别人要】


以太坊的GHOST协议:

为什么这么设计?

1 如果不限制辈分,对于全节点,需要维护的状态太多了;

2 出现分叉,越早进行合并,奖励越多,鼓励尽早进行合并;【招安】

3 解决分叉的情况;


以太坊没有奖励减少的硬性规定,不会人为制造稀缺性。

比特币——>数字黄金;


问题:

1 叔父区块中的交易要不要执行?【比特币中的分叉块中的交易作废】

不应该执行,因为兄弟块之间的交易有可能是相同的。如果执行的话,有些交易就会变成非法交易,和主链上的交易冲突。而且,不会检查叔父区块中交易的合法性。只会检查叔父区块是否符合挖矿难度要求。

2 如果分叉之后,后面还跟着一串,那么那些块怎么办?

只有分叉后的第一个区块,才可以得到叔块奖励,后面的都不行。【因为如果不是这样,分叉攻击就会变得很廉价】鼓励分叉之后及时进行合并。

区块链技术与应用肖臻老师笔记整理之------18-ETH-GHOST

注:没有全部复原,抽取了主体知识,加入了一些自己的理解,强烈建议去学习肖臻老师的课程,这绝对算得上是国内区块链讲解的顶级教程,纯学术和技术

以太坊的出块时间10多秒,比BTC提升了将近40倍,但是也带来了一些问题:

​ BTC和ETH都是运行在应用层的共识协议,底层是P2P的Network,这个over network本身的传输时间是比较长的,因为它的拓扑协议在做flooding的时候没有考虑实际的拓扑结构,这就导致发布的区块传到其他位置需要10几秒的时间,

临时分叉产生的单块被称为orphan block/stale block(孤儿块,陈旧的块)

一个问题是Mining centralization,当矿池和普通miner同时出块的时候,矿池会在拓扑中占据有利位置(比如部署多个接口,占据有利位置等),导致的问题是其他人不会跟随着普通miner挖出来的块之后挖,而是跟随着pool,使pool所在的链成为最长合法链,对于普通的miner是不利的,会出现恶性循环,越来越集中。

GHOST协议的核心思想:挖出块虽没有采纳但是会给予一些奖励。

以太坊将orphan block称为uncle block, uncle block获得 7 8 ∗ c o i n b a s e \\frac{7}{8}*coinbase 87coinbase奖励的出块奖励,同时矿工将uncle block每包含进去一个叔区块会额外获得奖励 1 32 ∗ c o i n b a s e \\frac{1}{32}*coinbase 321coinbase。一个区块最多可以包含两个uncle block

这样的设计有利于系统中出现分叉之后及时合并

在这里插入图片描述

但是这样设计也有缺陷:

  1. 如果出现第三个块怎么办?
  2. 如果矿池出于商业利益,故意不把uncle区块包含进去

改进之后的版本

  • 后面的区块也可以继续包含,而不再仅是unlce辈分的,可能是祖父,曾祖父等,但是也会进行限制,以太坊规定只能有6代unlce block可以被包含,在七代以内有共同的祖先才可以,隔代减少

在这里插入图片描述

如果不限制辈分,那么全节点需要维护的状态就太多了

uncle reward :如果被miner包含进去之后,会获得出块奖励的 7 8 , 6 8 , 5 8 , 4 8 , 3 8 , 2 8 \\frac{7}{8},\\frac{6}{8},\\frac{5}{8},\\frac{4}{8},\\frac{3}{8},\\frac{2}{8} 87,86,85,84,83,82,注意,没有 1 8 \\frac{1}{8} 81,算上coinbase本身一共七代块

但是miner无论包含那一代uncle block,获得的奖励都是$ \\frac {1}{32}$

uncle block不会得到gas fee,也就是tx fee

将uncle block包含进去时不执行uncle block里面的交易,否则有些交易会成为非法交易,与主链交易冲突;

只会检查uncle block是不是符合工作量证明的,而不会去检查区块里具体交易的合法性

分叉后只有第一个区块可以获得奖励,其他的都不可以,避免分叉攻击,如果认可后面的块,那么分叉攻击的成本大幅度降低,不利于合并区块和区块链安全

在这里插入图片描述

以上是关于05 ETH-GHOST的主要内容,如果未能解决你的问题,请参考以下文章

《区块链技术与应用》北大肖臻老师——课程笔记13-18

北京大学肖臻老师《区块链技术与应用》公开课-ETH

北京大学肖臻老师《区块链技术与应用》公开课-ETH

北京大学肖臻老师《区块链技术与应用》公开课-ETH

05-1,05-02,05-03网络协议

day-6 city 8 9 10