

“如果我们不停止依赖 Infura,以太坊的愿景就会失败。”这就是以太坊 Parity 客户端发布经理 Afri Schoedon 2018 年 10 月在 Twitter 上对以太坊最受欢迎、也最具争议的技术之一 Infura 的描述。
Infura 每天处理大约百亿次代码请求,为开发人员提供了一种不必运行全节点就可以连接以太坊网络的方法。昨天 Infura 的因为 Geth 的静默升级带来的宕机很快就波及了整个以太坊社区,这是其在四年的运营过程中最严重的服务中断,受到影响的产品包括包括各大交易所,以及 DeFi 的重要入口 Metamask 钱包。
对这件事情的复盘不应该只局限于单个技术问题,或者对 Infura 的分析。而是应该看到这是一个开创性系统在发展过程中折射出来的机会:
- 为开创性的系统打补丁:一个从零起步的系统发展进入中段的最大表现就是出现各种修补型的机会,比如我们之前的文章 《总结 : 10 月海外 DeFi 新项目 , 更多资管策略来了!》,以及 《ETH 技术团队 : ETH2 第 0 个阶段 , 是时候启动了》 他们都是在完成这个系统曾经的承诺,比如更快的链上速度、更安全的清算、更好的 DeFi 收益……
- 更便捷的基础设施:Influra 明天依然会是最受欢迎的节点提供商,因为他们的确让使用者感受到了更多的便捷性。相比自己去写智能合约数据分析,开发者更喜欢使用 the graph;相比自己跑一个 ETH2.0 验证器,用户更喜欢 eth2.0 一站式收益服务。可以参见两篇文章 《The Graph 去中心化 Goolge+AWS,在为 Uniswap 等处理 40 亿次 / 月请求》,《ETH 质押挖矿来了 !ETH2.0 用户质押操作手册》。
11 月 11 日以太坊网络由于共识机制缺陷而出现了问题。
运行旧版本 geth 服务的节点会变成一个孤立的链,这给所有依赖于这样节点的应用程序带来了连锁反应。
大多数用户是在 Infura API 宕机时才知道这个问题的。Infura 是以太坊网络上最大的节点提供商,他们为一些最常用的 web3.0 应用程序和交易所(如 Metamask、Uniswap 和 Binance)提供工具和基础设施。
Infura 的服务降级表明 Binance 要么依赖于 Infura,要么就得运行过时的节点,这两种节点都不适合如此大的交易量。
虽然 Infura 没有运行最新的 geth 版本看起来很奇怪,但是这样一个大规模的运营商不直接进入最新版本,也是有道理的。因为如果没有硬分叉,就没有迫切的理由从稳定工作的代码切换到未知的代码。

搜索和分析引擎 Blockchair 也遇到了问题,发布了以下推文:
我们的 Ethereum explorer 遇到了问题,正在进行修复。似乎有一个链正在分裂,一些节点(包括我们的节点和一些矿工的节点)被卡在了分裂的少数节点链上了。

Blockchair 的 CTO Nikita Zhavonronkov 报告了收到的以下错误:
/########## BAD BLOCK #########//<…>//Error: invalid merkle root (remote: 57cc91ee8b91b956592a27b14386abc2aba723b5f4f9e5d3181ace6b5d3cd433 local: 1f9ee59bfa683a25c7a15b626995a3ad7c58c571b40df96eea31e5c5eed9732d)/
在 geth 网络中发现了两个严重漏洞,这两个漏洞都是由 John Youngseok Yang (软件平台实验室)发现的,在以太坊奖励计划排行榜上他为此赢得了 2 万分。
为了避免攻击,Github 上没有讨论共识缺陷的问题,因此还不知道漏洞的具体细节。对于那些希望了解更多技术细节的人,Mhswende 说:
“将来会在文章或演讲中进行说明”。
为了尽量减少中断,以太坊的开发者们决定硬分叉。正如 Péter Szilágyi 在 Twitter 上写道的那样:
这是一个“未经宣布的硬分叉”(从坏链到好链)。也就是说,默默地修复一个休眠 2 年以上的 bug,造成中断的可能性比提高对它的认识要低得多。我们努力减少潜在的损害。
对于被 Infura 中断影响的人来说,这个事件应该是一个及时的提醒,让你的节点保持最新版本。因为一旦你将你的节点委托给另一方,他们将可以决定如何开展业务。Infura 对整个事件一直保持透明,显然正在努力解决问题。
Infura 现在已经恢复在线状态了。Infura 的停摆让很多人意识到我们是多么依赖于这个单一的实体。这是一个中心化的服务,充当我们去中心化系统的看门人。个人和机构都需要考虑他们今后的做法。
大型交易所(如 Binance 和 Bithumb)因为它们在停摆期间被迫暂停 ETH 和 ERC-20 提币。我们不能对 Infura 依赖到这种程度。由于 MetaMask 默认依赖于中心化节点提供商,使整个以太坊网络瞬时凄凉,gas 降低到只有 12gwei。
这证明了一种不健康的依赖,也清楚地表明了这种依赖可能产生的潜在危害。我们是否希望我们的数字在其他地方社会重现一样的错误,依赖于集中的单点故障?
我们已经建立了一个免费的网络,但却把它交给了一小群中央集权机构——Chrome、Safari、Brave。我们不能让同样的事情发生在加密货币上。
大卫·米哈尔写道:
今天的 Infura 宕机事件让用户争先恐后地寻找另一个 RPC 提供商。
任何共识的失败都是一个严重的问题。这个未经宣布的硬分叉表明,这些漏洞,如果不加以控制,可能会对以太坊造成非常大的危害。
幸运的是,多亏了 bug 赏金猎人的敏锐目光和以太坊开发者的勤奋工作,没有造成任何损害,正如 Nikita Zhavonronkohov 在 Twitter 上所写的,修复看起来非常简单。
