以太坊于编号为 12,244,000 的区块上启动了柏林硬分叉升级。这次升级为即将到来的以太坊伦敦硬分叉铺平了道路,该硬分叉将通过使用 EIP-1559 提案来改变以太坊 gas 费的收费方式。

硬分叉以向后不兼容的方式更改协议的规则。因此,它们总是伴随不小的风险:在最坏的情况下,网络将会分叉为两条不同的链,一个遵循旧规则,另一个遵循新的规则。一个较为复杂的风险因素是协议里是存在多个执行组件的。每个组件都必须以完全相同的方式实施新规则,并在完全相同的时间启动它们。组件之间的任何分歧轻则导致部分网络中断,重则将网络分叉。

在柏林升级后,294 个区块被创造了出来。而作为以太坊网络里第二流行的执行组件,OpenEthereum (ex-Parity)拒绝接受新的区块。根据以太坊浏览器上的数据显示,所有节点中约有 16% 是 OpenEthereum (还有 15% 的 Parity)。

立刻,许多交易所和服务商(包括 Coin Metrics)均开始断开以太坊网络的连接,或者出于谨慎的考虑而停止广播交易。

在停机后约 5 个小时,OpenEthereum 团队发布了修复程序。事件发生 9 个小时后,大多数受影响的服务都恢复了在线状态。

乍一看你可能会觉得以太坊网络上的交易量貌似没有受到 OpenEthereum 节点突然停机的影响 :

而通过查看以太坊 gas 费的支付数据,停机所产生的影响非常明显。 通常,以太坊的收费情况在 UTC 2PM-8PM 之间会大量增加, 而停机当天的涨幅并不明显。

量化 OpenEthereum 停机影响的最佳方法是查看在停机期间创建了交易的账户量:

通常来说,每小时大约会有 15,000 个帐户创建交易,但在停机期间数量下降到了大约 9,000 个。仅仅减少了 16%的节点,就使活跃的网络参与者数量减少了 40%!

一些 ERC-20 代币也因中断受到了影响。 其中,USDC 是受影响最大的代币之一,在中断期间,交易发起人的数量明显减少:

而其他一些 ERC-20 代币所受影响不大,例如 UNI:

值得庆幸的是,没有发现任何会将网络一分为二的区块。 此外,数据显示采矿活动没有减少, 这表明矿工没有运行 OpenEthereum。

此次停机显示了不同群体使用多种以太坊网络执行组件。矿工似乎没有使用 OpenEthereum,使用的可能是 Geth。而像 Ledger 这样的钱包提供商,以及像我们这样的一些分析公司,都喜欢用 OpenEthereum,因为它提供了开箱即用的区块和交易跟踪的功能。

此次事件使得运营节点凸显了执行组件的重要性。 减少 16%的节点将导致发起交易的帐户量减少 40%(无论是因为这些帐户背后运营商是在使用 OpenEthereum 导致的,亦或是出于对可能产生的分叉情况所采取的谨慎行为)。

这次事件势必会重新激起关于使用多种执行组件的风险 / 收益比讨论。且伴随着最近围绕激活 Taproot 软叉的争论,比特币是否可能会发生同样的情况也是值得考虑的。