以太坊的GHOST协议

一、孤块带来的问题

以太坊1.0将出块时间降低到15s左右,发布的区块在网络上传播时间本身就需要10几秒,其他节点没有充足时间来接收区块,会使得分叉变成常态,且分叉数量会很多,大量孤块(orphan block)得不到收益。同时这些分叉造成算力分散,给以太坊的安全性也会带来隐患,详细分析见挖矿难度不能太低章节

中心化带来超过比例的优势(centralization bias)

未成为最长合法链的孤块得不到出块奖励,对于矿工来说就白白付出了算力。另外对于个体矿工尤为不公平,如果个体矿工和矿池几乎同时挖到区块,产生分叉,这时矿池因为算力比例大,是很有可能继续挖到下一个区块的,所有会沿着自己挖出的区块继续挖矿,而个体矿工因为算力较弱,只能寄希望于其他矿工沿着自己的区块继续挖矿,这样自己才能获得奖励,但对于别的矿工来说没有理由沿着这条区块挖矿。所以矿池的区块成为最长合法链的概率更高,得到了超出算力比例的优势。

实际中,大型矿池的网络位置较好,能够更快地将挖出地区块发布到其他节点,所以大型矿池相对个体矿工来说又更加有可能获得区块奖励。

对于别的矿工来说,也就更加倾向于接在矿池的区块后面挖矿,因为接在个体矿工后面,很有可能就白挖了,这又使得矿池获得奖励的概率更大了。

二、GHOST协议

GHOST协议的核心思想是作废的区块也能得到一些奖励 ,这样算力就不会白白浪费,解决了临时性分叉带来的种种问题。

为鼓励分叉合并,包含1个作废区块的胜出区块可以额外获得1/32倍正常奖励的以太币,为保证以太币的价值,最多只能包含2个叔父区块。

叔父区块获得的奖励为正常奖励的2/8~7/8倍,如下图所示:
在这里插入图片描述
设计旧叔父区块也能获得奖励的原因:

  • 由于一个胜出区块只能包含2个叔父区块,这种方式使得超过2个的叔父区块也能获得奖励。
  • 发布速度较慢,未来得及被包含的叔父区块也能获得奖励。
  • 防止矿池的恶意竞争,如果故意不将属于对手的叔父区块包含进来,那么下一个区块仍然可以将上一个叔父区块包含进来,得到奖励。
  • 叔父区块奖励逐渐减少,鼓励尽早包含叔父区块。

叔父区块的验证

以太坊的奖励包括出块奖励(block reward)和汽油费(gas fee)。但是叔父区块中的交易不被执行,也无需验证里面交易的有效性,因此叔父区块也就得不到汽油费。实际系统中汽油费的奖励比较低。

节点只需验证叔父区块是否符合挖矿的难度,符合挖矿难度的叔父区块即合法叔父区块,根据叔父的辈分可获得相应的叔父区块奖励。

叔父区块的后续区块

叔父区块的后续区块不被奖励,否则恶意节点可以很容易地发动分叉攻击,即使分叉攻击失败了,所有分叉区块也能获得相应的叔父奖励。所以后续区块不能被奖励。

叔父区块的后续区块没有奖励也能鼓励分叉及时合并,矿工更有意愿沿着最长合法链挖矿。

发布了16 篇原创文章 · 获赞 2 · 访问量 3258

猜你喜欢

转载自blog.csdn.net/ice_fire_x/article/details/104234567