注:没有全部复原,抽取了主体知识,加入了一些自己的理解,强烈建议去学习肖臻老师的课程,这绝对算得上是国内区块链讲解的顶级教程,纯学术和技术
以太坊的出块时间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 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是不是符合工作量证明的,而不会去检查区块里具体交易的合法性
分叉后只有第一个区块可以获得奖励,其他的都不可以,避免分叉攻击,如果认可后面的块,那么分叉攻击的成本大幅度降低,不利于合并区块和区块链安全