关于 「Infura 是否成为单点故障来源」的回答存在分歧,但解决问题的方案——无状态性仍旧需要研究者和开发者的智慧。 原文标题:《观点 | 如何看待 Infura 服务崩溃及其造成的影响?》 北京时间 2020 年 11 月 11 日下午,以太坊社区知名的节点服务 Infura 被曝出 API 服务出错,并因此导致了多个依赖于 Infura 来构建的服务的崩溃,或者前端显示不正确。 就 Infura 自身而言,可以把它理解为一个公开的以太坊节点,这个节点会接收请求并返回一定的服务,比如帮忙转发交易、比如检查某笔交易上链了没有,又或者某个账户的状态如何。实际上,只要自己部署一个以太坊节点,就能提供跟 Infura 同样的服务。但它的特殊性在于,Infura 的大部分服务都是免费的,因此很多服务(包括交易所)都选择了依赖 Infura 来向自身播报以太坊区块链的状态,免去了自己部署节点的麻烦。 也正因此,Infura 出错,理论上波及面会很广,在事件发散的过程中,甚至还有人扬言 「以太坊会分叉(或者正在发生分叉)」。理由是两个不同的区块浏览器(Etherscan 和 Blockchair)上,对同一个块高显示了两个不同的区块(但是这两个区块之后的区块,两个浏览器的显示是一致的)。 但很显然,以太坊根本没有分叉。从事实上来说,两个区块浏览器所显示的后续区块都是相同的,这表示出块的矿工(至少是大部分矿工)没有以两个不同的区块为父块来继续挖矿,也没有彼此拒绝对方的区块。从理论上来说,只有出块的节点彼此之间使用了不同的共识规则(因此会拒绝对方所出的块),且都占据了一定的算力,才有可能形成分叉。 事实上,人们很快就发现了,这是因为 Infura 没有运行最新版本的 Geth 客户端,而某些特殊的交易触发了这个版本的客户端的 bug,使之宕机了。Blockchair 也是同理。所以很快就有人出来呼吁大家尽快升级 Geth 客户端。 至北京时间 11 日 18 时,Blockchair 团队的 Nikita Zhavoronkov@nikzh 发表推特,解释事件的因果关系:
他还表示,这件事绝不该被低估,应该被认为是 The DAO 事件之后,以太坊区块链上最严重的一次事故。 确实很奇怪,为什么会有某个错误仅仅导致软件在某个时间以前的历史版本崩溃而现有版本不崩溃?这岂非意味着,不同版本的 geth 客户端的共识规则实际上不一样,也就是某时某刻发生了一次不能向后兼容的共识规则改变(「硬分叉」)?此外,一个 Infura 的崩溃就导致了大面积的服务出错,这是否意味着 Infura 已经成了一个 「单点故障」 来源? (责任编辑:admin) |