以太坊为什么要设置区块的叔块奖励?|白话区块链入门

原创
2088 天前
17112

作者 | 晏文春

在《以太币的发行和出块奖励 》一文中,我们介绍了,在以太坊系统中,如果在同一区块高度,多名矿工都挖出了新的区块,这些区块中,其中一个将成为最长链上的区块,而其他区块,如果被后续区块引用,将被称为叔块(Uncle Block),叔块也能得到相应的奖励。这和比特币不同,在比特币系统中,因临时性分叉而不在最长合法链上的区块,都称为孤块,孤块没有区块奖励。

以太坊为什么要设置叔块奖励呢?叔块奖励的具体规则是怎样的呢?

以太坊为何要设置叔块奖励?

被称为区块链2.0的以太坊,不仅是一个具有智能合约的底层公链平台,它的出块时间也比比特币更短,平均10多秒发布一个区块。

更短的出块时间意味着,临时性分叉的几率将大幅提升。这是因为当矿工A挖出一个新区块后,需要向全网广播,广播的过程需要时间,由于以太坊出块时间短,其他节点可能还没有收到矿工A发布的区块,就已经挖出了同一高度的区块,这就造成了临时分叉。在以太坊网络中,临时性分叉发生的几率在8%左右。


图1当前以太坊叔块率为7.8%来源:www.etherchain. org

参考上表数据,在以太坊系统中,每100个区块,大约有8个叔块产生,如果按照平均出块时间为15秒计算,一个小时内将接近20次的临时性分叉。而比特币系统,因为平均10分钟才出一个区块,有足够的时间将新区块广播给全网其他节点,这种临时性的分叉几率就相当小。根据历史数据,大概平均3000多个区块,才会出现一次临时性分叉,相当于20多天出现一次这种临时性分叉,属于比较“罕见”的情况。

以太坊系统出现临时性分叉是一种普遍现象,如果采取和比特币一样处理方式,只有最长链上的区块才有出块奖励,对于那些挖到区块而最终不在最长链上的矿工来说,就很不公平,而且这种“不公平”将是一个普遍情况。这会影响矿工们挖矿的积极性,甚至可能削弱以太坊网络的系统安全,也是对算力的一种浪费。因此,以太坊系统对不在最长链上的叔块,设置了叔块奖励。那以太坊的叔块奖励规则具体是怎样的?

叔块奖励规则

以太坊叔块奖励规则大体如下:

1、叔块必须是区块的前1层至前6层“祖先”的直接子块;2、每个区块最多引用两个叔块;3、被引用过的叔块不能被重复引用;4、被引用的叔块获得奖励的数量,和该叔块与引用区块之间的间隔层数相关,间隔层数越少,奖励越多。5、引用叔块的区块可额外获得出块奖励,每引用一个区块,可以获得出块奖励的1/32,6、交易费(也称矿工费)不会分配给叔块。

我们通过一个例子来介绍上面的规则。


图二

假设当前区块高度为107(上图中绿色区块),它能有效引用的叔块,只能是区块高度为101~106的区块,换句说叔块的有效引用区间,最多只能在7代以内。上图中黄色区块,区块高度为100,就不在107这个区块的有效引用范围。图中红色的区块,因为不是最长链上区块的直接子块,这种区块不能成为叔区块。

如果在101和106的区块高度,有多个没被引用的叔块,高度为107的区块做多只能引用两个,而且一个叔块被它引用后,就不能再被其他区块重复引用。

被引用的叔块获得奖励数量,取决与该叔块和引用区块的“远近”关系。关系越近,叔块得到奖励越多。而引用叔块的区块,每引用一个区块,都能得到系统出块奖励的1/32,最多只能引用两个区块。当前以太坊新区块获得系统奖励为2枚以太币(2ether),如果叔块在间隔一层就被引用,该叔块将获得出块奖励的7/8,也就是1.75ether,如果叔块隔了6层才被引用,它获得奖励只有0.5ether,具体如下表。


图三,间隔层数与叔块奖励的关系

总结

以太坊系统的平均出块时间只有10多秒,这导致临时性分叉变得很普遍,出于公平性及系统安全稳定的考虑,以太坊系统设置了叔块奖励。以太坊叔块奖励数量也显得很”人性化“,关于越近,叔块得到的奖励也越多。