近日,一则Alex Svanvik所著的关于ETH空块率显著增加的报道引起了大毛的注意:

以太坊可以在哪里购买持有(以太坊上的0交易块背后有什么秘密)(1)

这篇文章提到近几个月以太坊网络的空块率显著提升,在进一步分析占全网算力排名靠前的矿工所挖到空块比例时发现,大矿池中F2Pool(鱼池)挖掘到的空块比例异常高。昨日甚至国内各家XX财经均在发此快讯:

非法矿场所使用的技术被称为“间谍采矿”,即矿工在不实际处理区块内任何交易的情况下因采矿而得到奖励。在这种情况下,形成“空块”。这对以太坊造成了前所未有的威胁,数据显示,空块的传播速度快了15%,这意味着间谍矿工的总收入也增加了15%。

看到这个“间谍采矿”、“间谍矿工总收入增加15%”这些用词,大毛也挺无语。有种没事找事唯恐天下不乱的感觉。今天还是来科普下这件事。

1、鱼池冤枉吗?

在区块链的世界中你无法隐藏任何事情。更何况是以太坊,还拥有一个无比强大的Etherscan工具网站。

鱼池作为以太坊第三大矿池,他的钱包地址直接被标明“F2Pool”。在他的挖矿记录中,大毛翻了几页(每页包含100条记录),每页均有数量占比不低的空块记录。

以太坊可以在哪里购买持有(以太坊上的0交易块背后有什么秘密)(2)

目测空块率在7-10%之间,而这个空块比例之高显然超过了正常范围,下面继续分析。

2、正常情况下出空块的机会有多大?

我们都知道,在去年10月中期以太坊的重大升级做了几大改变:推迟难度炸弹代码部署的时间;将区块奖励从5ETH降低至3ETH;顺便拆除当时已激活的难度炸弹代码,降低挖矿难度,使得区块间隔时间从升级前的30S降低到15S左右,并维持至今。

而这将近一年的时间里,ETH的使用人数和网络承载的转账数量一直居高不下,根据Etherscan的数据,近一个月仍保持在日均50万笔以上的转账数量——哪怕现在是真正意义上的熊市。

这就意味着,以太坊网络现今平均每秒交易量也就是TPS数据是6左右。理论上15秒出块时间内应有90笔交易。哪怕某些时候矿工幸运值爆棚,在很短的间隔时间内(最短也需要1-2秒)连续出块,那么这个时间内交易数量为0的几率也很低。

经过数据分析比对,确实也说明了正常情况下空块并不多,而鱼池的空块率异常的高。看这个表格(表格来自Alex Svanevik 原文)也许更直观:

以太坊可以在哪里购买持有(以太坊上的0交易块背后有什么秘密)(3)

该表格统计时长为近3个月。图中每个蓝点均表示一个矿工。横坐标表示该矿工挖到的区块数。纵坐标表示挖到区块中的空块数量。

虽然该表未直接标明每个蓝点的具体身份,但很显然挖到区块数越多就表示其算力越大。因此,本图中蓝、绿、红分别表示目前以太坊前三大矿池:Ethermine、Sparkpool(星火)、F2pool(鱼池)。

然而,这3大矿池在空块率上的差异却是惊人的:

Ethermine、Sparkpool、F2pool三家在挖到区块总数上相差不大,数量最少的鱼池大约是最多的Ethermine的50%左右,然而鱼池挖到的空块数却接近Ethermine的10倍!

3、矿池如何做到挖空块?为何要这样做?

其实鱼池在昨日已经第一时间对此做出了解释,这段话摘自鱼池公众号:

F2Pool是一个对矿工负责的矿池,F2Pool在ETH挖掘中产生的空块多数是为保证矿工利益的挖矿机制产生的。矿池在区块高度发生变化的时候,由于网络通信延迟等原因,如果先选择计算交易再进行任务的下发,矿机会有1-2秒的算力浪费。因此为了保证矿工的利益不受损失,矿池会在第一时间下发一个不带交易的任务,然后在1-2秒钟后再补发一个带交易的任务。如果在不带交易的任务下发后1-2秒内,有矿机算出了符合难度的share,那么这个块就是空块。

鱼池的这段话已经将挖空块的原理解释的比较清楚了。大毛再补充一下:

要正确算出一个区块的哈希值,矿工只需知道上一区块末的相关信息即可,并不需要计算这段时间内需要从交易池中挑选哪些交易打包进区块。虽然打包交易能获得交易的手续费做奖励,但由于目前交易手续费占比非常低(近期区块的交易手续费往往不超过0.1ETH,而爆块奖励有3ETH,远超手续费),花在计算“选择交易打包”这件事就显得性价比不高,还不如省下这1秒直接全力计算下一个区块。毕竟每个区块时间的间隔也才15秒。

因此,矿池在分配挖矿任务时先分配不带交易信息的任务再分配带交易信息的任务,如果有矿工就在接收到不带交易信息的任务这1-2秒时间内正确算出了下一个区块的哈希,这个块就成为了空块,而那些交易只能挤压着等待下一个区块再进行打包。理论上这样做确实能实现利益的最大化。同时,“挖空块”这件事也并非鱼池首创,前几年国内最大的比特币矿池蚁池就干过同样的事。

4、实际效果并不明显,对以太坊网络毫无益处

虽然用了这样的“黑科技”,但在ETH矿池的实际收益上鱼池并未实现领先。这也很容易理解,从矿池分配任务到矿工接受任务,再到提交计算结果给矿池,再到矿池将结果进行广播,整个过程非常复杂,每一步都有优化空间。

大毛写文的同时顺便去国内两大矿池星火与鱼池首页看了下收益情况,结果分别是:星火矿池每100M算力每日可获0.00769ETH;而鱼池每100M算力每日可获0.007581ETH,鱼池甚至还低一些。虽然差距很小,也许仅仅是矿池手续费上的差异(星火1%,鱼池2.5%)。

但对于整个以太坊网络来说,这种形式的“矿工利益最大化”毫无益处。往小了说,增加以太坊通胀速度;往大了说,增加以太坊网络人为拥堵。大毛看了下算力占比较大的一些矿池地址,发现“挖空块”这件事不止鱼池在做,还有不少未被Etherscan标记的矿池也在做,比如这位:

以太坊可以在哪里购买持有(以太坊上的0交易块背后有什么秘密)(4)

来源:币圈百科

,