以太坊的区块和存储(二):区块体之叔区块

昨天讲了以太坊的区块头,接着来我们今天讲讲区块体。

在比特币里,区块体里就一个东西,那就是一笔一笔的交易信息。但在以太坊的区块体里,除了交易信息,还有一些特殊区块的区块头。

因为这些特殊区块的父区块(上一区块)和本区块(包含它们的区块)的爷爷区块(上上个区块)相同,也就是说,这些特殊区块是本区块的叔叔,所以叫“叔区块”。

对于以太坊的交易信息,我们在0719中介绍过,所以现在主要讲讲叔区块。 为什么以太坊要搞一个这么奇葩的叔区块机制呢?

我们知道,比特币大概10分钟出一个块,而以太坊大概15秒就出一个块,出块速度大大提高。出块速度越快,说明为产出区块所要解的题难度就越低,因为难度低大家才能更快地算出来。

但同时,难度越低,就越容易多个矿工同时解出题。同时因为区块间隔时间短,只有10多秒,一个区块被打包之后,在这10多秒里可能还没有在全网播布完,所以比较多地会出现分叉情况,也就是一部分节点先收到A打包的区块,另一部分节点先收到B打包的区块。

但是因为POW机制的“最长区块链”原则,只有最长的那条链才是有效的,这就导致可能某些节点跟在A区块后面创建了很多区块,但后面发现B链条更长,这就很悲催了,这些最终不在B链条的区块,称之为“孤区块”。在比特币里,这些孤区块消耗了算力,但没为系统做出贡献,也没奖励。

当然,比特币的孤区块不多,不算个事。但在以太坊里,孤区块实在太多,才成为一个问题。 大家想想,如果一个小矿工,整天挖到孤块,拿不到奖励,是不是很影响积极性,长期以往,很多小矿工可能就退出了,使得整个以太坊系统的算力下降,算力下降也就意味着安全性降低。而叔区块机制就很好地避免了这一个问题。

区块里包含叔区块,意味着叔区块的工作量也纳入了整个系统,也为安全做出了贡献。既然做了贡献,那肯定要给予奖励。以太坊这个奖励机制也设置得很好,使得大家皆大欢喜。

我们先看一个正常区块的收益,首先它有一个5以太币的固定奖励,然后是该区块里的交易上缴的gas费用。这两点跟比特币类似。最后,就是纳入叔区块的奖励,如果该区块包含了叔区块,每包含一个,可以得到固定奖励的1/32,也就是0.15625以太币。这就刺激了区块包含叔区块的积极性。

不过,以太坊也设置了数量上限,一个区块最多包含2个叔区块。这是包含叔区块的区块所获得的奖励。

当然,叔区块的创建者本身也会获得奖励,不过这个奖励公式稍微复杂一点: 叔区块奖励 = ( 叔区块高度 + 8 - 本区块的高度 ) * 固定区块奖励 / 8 根据我们之前对叔区块的定义,因为叔区块和本区块高度相差1,所以可以很快算出来一个叔区块的收益为4.375以太币,不少啊!

其实,根据这个公式可以看出,叔区块可以不必拘泥于一定是本区块的叔叔,也可以是本区块的叔爷爷,叔曾爷爷,甚至是自己的兄弟都行,而且“血缘”关系越近,叔区块拿到的奖励越多,不过最多不要超过8层,因为根据公式超过8层就没奖励了。 不过,现在以太坊用到的应该还只是纯正的叔区块。

好了,以太坊的区块结构就讲到这了。

你可能感兴趣的:(以太坊的区块和存储(二):区块体之叔区块)