区块链技术与应用(北大公开课,肖臻)-ETH GHOST

18. ETH GHOST

1. Ghost协议的背景

比特币和以太坊工作于网络应用层的共识协议,其底层(网络层)是一个P2P Overlay network(P2P覆盖网络),Overlay network本身传输的时间是比较长的,因为它的拓扑协议做flooding没有考虑实际的拓扑结构,所以发布一个区块后,区块在网络上传到其他节点需要十几秒的时间,对于BTC来说,十分钟的出块时间,六百秒,足够让新发布的区块传播到网络其他节点。因为挖矿是个概率过程,所以还是会有两个矿工同时获得记账权,同时发布区块,带来临时性分叉。对于以太坊来说,临时性分叉会更频繁,数目也更多,因为出块时间只有十几秒。对于共识协议来说有什么挑战呢?

BTC里只有在最长合法链的区块包含的出块奖励才是有用的,其他的出块奖励都是作废的,对于BTC来说,出现零时性分叉的可能性还不是很多,所以这么规定还是可以接受的。

对于以太坊来说,如果也是这样,矿工挖到的区块很大概率是白挖了,因为作废了,尤其是对个体矿工。加上挖矿设备的专业化和大型矿池的出现,对于个体矿工来说越来越不公平。矿池的收益应该是和所占的算力成比例的,比如算力是30%,收益也应该是30,但是如果共识协议设置不好,大矿池的收益可能会大于30%,比如刚出现分叉的时候,中间是大矿池挖出的,剩下的两个区块是个体矿工挖出的。大矿池肯定会沿着自己的区块接着往下挖,上下两个的区块只能希望别的矿工沿着自己的区块挖,但别的矿工更倾向于沿着中间的区块往下挖,造成矿池挖出的区块成为最长合法链的概率大于30%,mining centralization是占优势的,实际情况更糟,大型矿池的位置优势更明显,可能在网络中多个地方都有接口,他发布出的区块有可能更早的被其他节点收到。从历史经验来看,大型矿池所在的分叉更有可能成为最长合法链,因为你沿着别的分叉挖,白挖的概率更大,所以越是大型的矿池收益越高,mining centralizaion 越严重,也叫做centralizaiton bias。中心化带来的不成比例的优势。

2. Ghost协议的内容

1. Ghost协议最初版本

每一个区块最多可以包含两个叔父区块,每个区块得到的奖励是3个以太币,叔父区块也是可以得到7/8的奖励(uncle reward),包含叔父区块的区块还可以额外获得1/32的奖励。

Q1:如果出现第三个叔父区块怎么办?规定只能包含两个叔父区块是防止太多叔父区块以太币贬值。

Q2:向下挖块之前没看到其中一个叔父区块,已经发布了下一个区块的时候才知道了那个叔父区块,那个叔父区块又变成没有奖励的区块。

Q3:矿池之间存在商业利益冲突,新区快故意不包含其中一个叔父区块,那怎么办呢?

2. 以太坊更新版1

2.1 以太坊是没有“论资排辈”的,所以后面的区块还是可以包含很早之前的叔父区块,不论是“爷爷辈”还是“曾祖父辈”,这么规定能解决之前的问题吗?

能,但是没有规定叔父区块包含几代,有可能产生很多叔父区块没有办法被包含。所以Ghost规定叔父区块必须和当前区块在7代以内有共同祖先才行,超过第七代就不能算作叔父区块了,所以一共有6个合法的辈分叔父区块。

2.2 如果不设置7代会有什么问题?

对于一个全节点来说,不设置辈分,他要维护的状态太多了,因为他可能需要记着隔100代以前有哪些叔父区块,你发布的区块包含叔父区块都是要被其他节点验证的。此外,设计最多隔7代,并且7代以内奖励是逐代递减的,这样有利于鼓励出现分叉之后尽早合并,因为一出现分叉马上合并所能得到的出块奖励是最多的。

2.3 但是挖下一个区块和叔父区块是不同的矿工,利益是不共通的,只是说对于叔父区块的矿工来说奖励最大,和区块本身利益影响不大,如何能做到尽早合并?

因为叔父区块的奖励会越来越少,所以矿工还是会集中挖主链来获得最多的奖励,这样就保证尽早合并到主链了。

备注:Ghost协议是为了解决系统中出现的临时性分叉,最长合法链也是为了防止交易篡改和临时性分叉,state fork,对区块链当前的状态产生了临时性意见分歧,我们想办法合并 ;如果分叉是别的原因造成的,也就是不是因为对当前状态有意见分歧,而是互相认为对方是非法的,那么这个方法是合并不了的。

CHECKMULTISIG检查多重签名的合法性,操作实践有一个bug,堆栈会多弹出一个元素,需要压一个多余的元素应付才能检查,为什么不能修改?因为版本的修改会出现硬分叉,认为对方的区块交易是非法的,比如对运行的区块链协议有不同协议。

3. 以太坊的奖励部分

在BTC中:分为block reward/static reward 和 tx reward。静态奖励和动态奖励。

在以太坊中:也是有block reward和gas fee,静态和动态。叔父区块得到的奖励只限于block reward,没有gas fee,不过gas fee只占很小一部分。以太坊的区块奖励是没有设置定期减半的。发布智能合约要支付gas fee,执行智能合约会得到gas fee。

Q1:叔父区块包含的交易要不要执行?

不应该执行,因为叔父区块包含的交易和主链的区块的交易可能是有冲突的,执行完主链区块的交易之后,叔父区块的交易可能是有冲突的,以太坊中,叔父区块的交易合法性是不会被检查的,只会查这个区块是不是符合挖矿难度要求的,只检查header就行。

Q2:叔父区块后面还跟着很多区块怎么办?

只有第一个分叉攻击的区块可以得到叔父区块奖励,其他的都不能得到,否则分叉攻击的代价就会太小了。

4.以太坊的真实情况

https://etherscan.io/

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值