Skip to content

挖矿奖励

挖矿奖励

挖矿是应用了PoW共识算法的区块链所特有的操作,因为以太坊日前的共识算法主要是PoW,所以以太坊的区块也是靠节点矿工挖矿产生的。

挖矿成功了,自然也就有收入了,这也是符合劳动获取规则的。在以太坊中,所有挖矿成功的节点都会被奖励以太坊代币ETH,这些ETH将会像工资一样打入到当前节点所设置的用于收款的以太坊钱包地址中去。

打包了不同的区块就拥有不同的奖励模式,目前以太坊通过挖矿出来的区块主要有下面三种,其中只有两种能够得到奖励:

  1. 普通的成功进入主链的区块,有ETH奖励。
  2. 被主链区块打包成叔块的分叉区块,有ETH奖励;
  3. 孤块,没有任何奖励。

下面我们来分别认识普通区块和叔块的奖励。普通区块的ETH奖励由3个部分组成,分别是:

  1. 被设置好了的固定的挖刊奖励,即Block Reward(区块奖励),这个值在以太坊早期的时候,节点规范设置是5ETH,后面被设置为了3ETH,升级到君士坦丁堡版本后变为2ETH。
  2. 挖出的区块打包了的所有交易的燃料费(Gas)总和。
  3. 当前这个区块所打包了的叔块的奖励,每打包一个叔块,奖励Block Reward X 1/32。打包了N个叔块,则奖励是N X Block Reward X 1/32。

举个例子,假设成功地进入了主链的普通区块A,它内部所有打包了的交易(Transaction)共有40个,加起来的燃料费(Gas)是0.65ETH,且它同时还打包了1个叔块,最多只能打包两个那么此时挖出区块A的节点矿工,他的ETH收益就是(3+0.65+3/32)ETH这么多。

下面我们通过区块链浏览器查找一下区块的详细信息,来验证一下上面的结论,如下图所示,区块信息链接是:etherscan.io

An image

图中Block Reward对应的就是挖出区块6670988的矿工,他所获得的以太坊ETH收入,对应前面讲解的部分,3就是基础奖励,0.049540272928818416是所有交易的手续费收入,这点可以单击页面中的68 transactions链接,进入到交易列表页面统计验证,最后的0.09375就是3/32的结果。如果该区块打包了两个叔块,那么最后的叔块收入就是3/32 X 2。

图中的Uncles Reward表示挖出叔块的矿工,他所获得的以太坊ETH收入,注意叔块奖励收入包含有下面的两种含义:

挖出分叉区块的矿工的收入,因为分叉区块被其他区块打包了,它才成为了叔块。

打包了分叉区块,让它成为了叔块的矿工节点的收入。

第一种奖励收入对应的奖励计算公式就是叔块一节中所谈到的。第二种所对应的收入就是BlockReward X 1/32 X 叔块个数。下面我们通过一个完整的例子来认识挖矿奖励。

假设现在有两个以太坊节点N1和N2,它们所设置的挖矿收益的以太坊地址分别是A1和A2,此时N1成功地挖出了区块B1,高度是4,同时N2也挖出了区块B2,高度和B1一样,都是4,根据最优链规则,最终区块B2被判断为分叉区块。紧接着,节点N1继续挖出了区块B3和区块B4,这时属于节点N1的区块B3把区块B2打包成自己的叔块,使得区块B2不会成为孤块,而区块B1和区块B4都没有打包成叔块,如图2-22所示。

An image

至此,节点N1的收益地址A1的总收益是:

tex
(B1+B2+B3的基础收益) + (B1+B2+B3的所有打包了的交易手续费) + B3打包了B2叔块的收益 = BlockReward X 3+T1+T2+T3+3/32

节点N2的收益地址A2的总收益是:

txt
B2作为叔块的奖励 = (uncleNumer+8-headerNumber) X blockReward/8 = (4+8-5)X3/8 = 2l/8 = 2.625

刚好对应叔块奖励表格中的第一层奖励。