以太坊Ghost协议和叔块

  GHOST(Greedy Heaviest Observed Subtree)是一种主链选择协议(不是侧链选择协议)。举例来讲:经典的Proof-of-Work(POW)是以取最长的主链为基本原则,GHOST协议则是以包含子树数目最多为基本原则。segmentfault

  POW协议不能以太快的频率(上图的Block Generation Rate)发布新的区块,由于太快发布区块,区块中的数据重复验证6次(若干次)当即永久封存地区块中,一旦51%算力攻击一旦发生,double-spend等糟糕问题会出现,恶意的数据容易永久封存于区块中,整个blockchain系统须要足够长的时间来处理和恢复黑客恶意攻击所形成的破坏——这段时间能够理解为系统的有效修复时间,也能够理解为交易信息被确认的等待时间,从安全的角度,显然这段时间越长,交易数据可靠性被验证的越多,因此越可靠。
  相比而言,GHOST协议就没有这个问题了,由于在GHOST协议控制下, “区块发布太快” 和 “51%攻击持续性地控制主动权” 两者没有必然的关系,GHOST不是采用绝对算力优点获取主动权的协议。这也是为何以太坊的出块速度要远远大于区块链。安全

  在比特币协议中,最长的链被认为是绝对的正确。若是一个块不是最长链的一部分,那么它被称为是“孤块”。一个孤立的块也是合法的,可是发现的稍晚,或者是网络传输稍慢,而没有能成为最长的链的一部分。在比特币中,孤块没有意义,随后将被抛弃,发现这个孤块的矿工也拿不到采矿相关的奖励。例如:挖矿节点A是一个矿池占有全网30%的算力,挖矿节点B占有全网算力的10%,节点A会有70%的几率产生废块,节点B有90%的几率产生废块. 若是新旧区块之间产生的间隔过短, 则节点A会由于规模效应而比B节点更为高效。因此新旧区块的间隔太短会致使单一的矿池主导全网的挖矿过程。
  这个问题在以太坊中获得了很好的解决,根据GHOST协议,不认为孤块没有价值,而是会给与发现孤块的矿工以回报。孤块被称为“叔块”(uncle block),它们能够为主链的安全做出贡献,也一样能得到奖励,这激励了矿工在新发现的块中去引用叔块,减小了孤块的产生。网络

Ghost协议解决了两个问题:摒弃了单一的最长链原则, 取而代之的是最大子数原则;孤块奖励问题。学习

以下图所示:
image区块链

若是单纯的计算最长链原则, 主链应该是 0 -> 1B -> 2D -> 3F -> 3F -> 4C -> 5B.
若是采用了GHOST协议, 之前的"废块"也会被考虑到主链的计算量中.每个节点下含一个子树, 兄弟节点之间子树节点最多的被选为主链. 这样一来 0 -> 1B -> 2C -> 3D -> 4B 成为主链,
若是采用GHOST协议, 一个攻击者仅仅提供一个1A到6A的长链并不能被认为是主链.spa

Ghost协议的优点在于:blog

  • 以太坊十几秒的出块间隔,大大增长了孤块的产生,而且下降了安全性。经过鼓励引用叔块,使引用主链得到更多的安全保证(由于孤块自己也是合法的)
  • 比特币中,采矿中心化(大量的集中矿池)成为一个问题。Ghost协议下,叔块也是可以得到报酬,能够必定程度上缓解这个问题。

孤块奖励问题:rem

  • 主链节点得到base reward;
  • 一个节点最多引用两个叔块;
  • 叔块必须是区块的前2层~前7层的祖先的直接子块;
  • 被引用过的叔块不能重复引用;
  • 引用叔块的区块,能够得到挖矿报酬的1/32,也就是51/32=0.15625 Ether,最多得到20.15625=0.3125 Ether;
  • 主链节点的兄弟(非主链节点)得到 ((叔块高度+8-当前块的高度)/8 )*base reward,以下图表格所示;
  • 交易费用(transaction fee)不会分配给叔块

被引用的叔块,其矿工的报酬和叔块与区块之间的间隔层数有关系。get

间隔层数 报酬比例 报酬(ether)
1 7/8 4.375
2 6/8 3.75
3 5/8 3.125
4 4/8 2.5
5 3/8 1.875
6 2/8 1.25



欢迎订阅「K叔区块链」 - 专一于区块链技术学习

博客地址: http://www.jouypub.com
简书主页: https://www.jianshu.com/u/756c9c8ae984
segmentfault主页: https://segmentfault.com/blog/jouypub
腾讯云主页: https://cloud.tencent.com/developer/column/72548
相关文章
相关标签/搜索