以太坊为什么会有空块

以太坊区块链中会产生空块,有人认为会对以太坊造成巨大的威胁。CoinFi首席数据科学家Alex Svanevik认为,这一情况是由“间谍挖矿”造成的。针对类似消息,鱼池回应称,近期传播的矿池产生“空块”会对以太坊造成威胁这一说法,是非常错误的,并做出相关的解释说明。

空块威胁以太坊安全

根据 Alex Svanevik 的说法,非法矿池使用的“间谍挖矿”技术使得矿工在不实际处理区块上的任何交易的情况下获得挖矿奖励。在这种情况下,就形成了“空块”。与此同时,这种自私的挖矿方式也越来越受欢迎,很多矿工试图在不将空块广播到网络的情况下寻找下一个区块,从而使他们获得先机。

AMBcrypto报道称,经过详细搜索,发现这种做法大量存在于两个矿池中: F2Pool(鱼池,目前是世界第二大采矿池)以及Etherdig。

加密爱好者 Ansel Lindner 在推特上说:“以太坊营销的成功部分与交易数量相关。需要有足够的交易量来支持,但不要太多,那样会难以保持同步。”

他进一步观察到,在君士坦丁堡硬分叉之前,以太坊开发人员决定将区块奖励减少到2 ETH,这让矿工开始追逐数量。

AMBcrypto的文章中称,为了尽可能扩大利润,鱼池和 Etherdig 开始挖掘区块而不包含任何交易,即生产空块,对以太坊造成了前所未有的威胁。数据显示空块的传播速度比正常区块链快 15 %,这意味着间谍矿工的总收入也增加了15%。

如果许多矿工采取这种做法,以太坊的交易时间可能会增加,并导致 Gas 急剧增加。如果这种情况持续下去,更多诚实的矿工会停止以太坊挖矿业务,并专注于其他代币,从而对以太坊的安全造成很大影响。

为何会出现空块

区块链中的每个区块包含不同数量的数据,矿工不一定要准确地保存那些要验证并添加到区块链中的数据。

当矿工编码一个区块的所有数据(称为哈希)时,进行验证,然后关闭区块并广播区块,此代码对于下一个区块是必不可少的。但是,在广播之前,一些矿池开始私下挖掘区块。虽然在没有先读取区块数据的情况下不可能创建哈希,但是可以在交易发生之前,从已存在的哈希创建新区块。

此新区块中没有交易,但是由于交易数据中没有不规则性,不能使该区块无效。矿工们通过矿池获得哈希。

为了抢先一步,一些矿工找到了一个新的区块并试图在不向矿池广播的情况下找到下一个区块。然而,由于以太坊还处于早期阶段,一行代码足以防止恶意蔓延,因此很快就得到了纠正。对网络核心代码进行了升级,就能使矿工停止这一行为。由于以太坊的开发人员基数很大,这是一项艰巨的任务,但可以利用大型社区的优势来纠正系统。

鱼池的回应

针对该消息,鱼池回应:近期传播的矿池产生“空块”会对以太坊造成威胁这一说法,是非常错误的。

作者对以太坊挖矿过程理解不透彻才做出了这样的结论,实际上矿池在区块高度发生变化的时候,由于网络通信延时等,如果选择先计算交易再下发任务,这个时候矿机是有1-2秒钟在浪费算力。因此为了矿工利益不受损失,矿池会第一时间下发一个不带交易的任务,然后在1-2秒钟后再补发一个带交易的任务。如果在不带交易任务下发后的1-2秒钟,有矿机算出了符合难度的 Nonce,那么这个块就是空块。

在 etherscan 上大家能看到,主流前三的矿池都是这种机制。 另外矿池本身是不愿意产生空块的,毕竟交易费也是一笔可观的收益。

普通区块奖励固定奖励 + 交易手续费 + 引用叔块奖励固定奖励: 根据blocknum的分区,给与不同的奖励交易手续费: 每个区块上的每笔交易中 gasUse*gasPrice的累加引用叔块奖励:叔块个数 * ...