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 87∗coinbase奖励的出块奖励,同时矿工将uncle block每包含进去一个叔区块会额外获得奖励 1 32 ∗ c o i n b a s e \\frac{1}{32}*coinbase 321∗coinbase。一个区块最多可以包含两个uncle block
这样的设计有利于系统中出现分叉之后及时合并
但是这样设计也有缺陷:
- 如果出现第三个块怎么办?
- 如果矿池出于商业利益,故意不把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的主要内容,如果未能解决你的问题,请参考以下文章