首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果用Geth进行质押,真的可能会失去所有资产?

作者:Labrys

编译:深潮 TechFlow

本文讨论了以太坊网络中执行客户端 Nethermind 遇到的一个故障,导致所有使用 Nethermind 的验证器(约占网络的 10%)离线。文章强调了 Geth 客户端在以太坊网络中占据的超多数地位以及由此带来的潜在风险。尽管 Geth 是稳定且可靠的客户端,但如果出现严重故障,由于其在网络中的普遍使用,可能对整个网络造成重大影响。文章呼吁社区重视执行客户端的多样性,以降低网络面临的集中化风险。

介绍

本周,以太坊网络的一个执行客户端 Nethermind 经历了一个故障,导致所有运行 Nethermind 的验证器(约占网络的 10%)离线。

这是一个较小的事件,因为 Nethermind 是少数利益相关者运营的。以下是我自己运行 Nethermind 的验证器的总余额的图表。你可以看到在当地时间凌晨 4 点左右,当故障首次发生时,验证器就离线了。团队在大约 4 小时后发布了一个补丁,等我安装好后,验证器在当地时间上午 9 点左右恢复运行。在此期间,我的验证器受到的惩罚与它获得的奖励相同。在同一天下午 1 点,验证器的余额高于宕机前。总的来说,这是一个小的故障。

许多人错误地假设,当运行 Geth 时,如果发生类似的故障,惩罚会类似。这不是真的。这与 Geth 或 Geth 的构建方式无关,而与运行 Geth 的人数有关。

根据 ClientDiversity.org 的数据,以太坊上约 84% 的验证器都在运行 Geth。现在这些持有者的辩护是,Geth 无疑是最好、最稳定的客户端。虽然像 Nethermind 这样的少数客户端本周受到了故障和停机的困扰,但 Geth 自合并以来(甚至在此之前)一直运行良好。根据我自己的经验,当从 Geth 转换到少数派客户端时,我发现验证器需要更多的资源,遗漏的验证也更多。

这篇文章并不是对 Geth 的攻击。我非常尊重他们的团队。不幸的是,由于 Geth 的广泛使用,我们需要诚实地讨论当 Geth 持有绝大多数质押时运行 Geth 的风险。

如果他们知道自己更有可能经历更多错过的证明和更多的停机时间,那么没有人愿意离开 Geth,尤其是那些依赖于正常运行时间来宣传最高收益的商业模式,比如专业的质押运营商。

截至去年 9 月,估计最大的运营商 Lido 在 Geth 上运行约 76% 的验证器。

但我很高兴我在运行一个少数的客户端,即使我失去了一些额外的奖励,不是因为我是利他主义者,为了网络的去中心化牺牲个人利益,而是因为我知道我的 ETH 会因此免于大多数 bug 的影响。

如果 Geth 出现 bug,会发生什么?

这取决于 bug 本身。

因为超过三分之二的以太坊验证器运行 Geth,任何 Geth 中的严重故障都会立即阻止链的最终确定。这并不意味着链停止或中断。只要其他客户端仍在运行,链就会继续运行。大约 84% 的区块将被遗漏,这意味着每隔约 75 秒才会提出一个新区块,而不是约 12 秒的区块时间。这些区块将容易发生重组,因此当链再次完成时,这些区块中包含的交易不保证仍然存在。这听起来很糟糕,但让我们记住,多年来以太坊在合并前从未有过最终确认的概念,比特币今天也是如此——这就是为什么交易所让你等待 6 个以上的区块确认才能存款,以降低发生重组和损失资金的风险。

有些人可能还记得,以太坊在 2023 年 5 月就已经发生过这种情况,当时一些共识客户端出现了 bug。在两天时间里,链条两次停止终结,导致许多区块被遗漏,一度只有 40% 的网络仍在运行。网络恢复后,大多数 DApp 用户除了交易区块确认速度稍慢外,没有发现任何问题。

但验证器会怎么样呢?

非活动泄漏

当少数客户端失败时,惩罚是以与获得它的速率相同的速率失去 ETH(正如您在我上面的验证器图中看到的),但如果 Geth 失败,因为它会立即阻止链最终确定,所以惩罚会更加严厉。这种增加的惩罚被称为非活动泄漏(The inactivity leak),当链停止最终确定 4 个周期(约 25 分钟)或更长时间时,它会应用于离线验证器。这种更严厉的惩罚旨在鼓励离线验证器尽快恢复在线,或者在最坏的情况下,销毁离线验证器的权益,直到他们的权益占总权益的 1/3 以下,从而允许在线验证器完成链的确认。

在非活动泄漏期间,验证器仅需离线 2 天就会损失其权益的 0.6%,或相当于 2 个月的权益奖励!

仅需离线 5 天,就会消耗掉整整一年的质押奖励(3.5%)!这意味着需要超过 2 年多的质押才能恢复验证者在事件发生前拥有的余额。

在离线 1 周内,10% 的权益,或 3 年的奖励,将会丢失。在大约 20 天内,50% 的权益将会丢失,在大约 40 天内,90% 的权益将会丢失。

相比之下,由于少数客户端故障而离线的验证器在 40 天内仅会损失其权益的 0.4%。

不活跃的惩罚将持续多久?

这取决于 bug。

如果 bug 能被修补,那么惩罚将持续到 Geth 团队修补 bug 并将其应用到您的验证器所需的时间(或切换到其他执行客户端所需的时间)。

实际上,我们预计这个问题可以在几个小时或最多几天内得到解决。如果修复 bug 所需的时间与最近的 Nethermind 事件相同,验证器将损失 0.004% 的权益,这不是什么大问题。

如果 bug 导致验证器产生无效区块,并且 Geth 将其视为有效并对其进行认证,情况就会变得糟糕。这将导致链分叉。链将分成两个分支,一个包含无效区块的分支(Geth 链),另一个忽略无效区块的分支(非 Geth 链)。运行 Geth 的验证器将认为这两个分支都是有效的,因此决定在权重最重的链上构建。84% 的验证器将其权益认证给 Geth 链,仅有 16% 的验证器将其权益认证给非 Geth 链。因此,Geth 验证器将选择 Geth 链作为权重最重的链,并继续在其上构建。

当然,一旦所有这些问题解决了,Geth 链上的区块将被弃用(这将引起自己的问题),但更大的问题是 Geth 链将拥有足够的权益(大于 2/3)来确认无效链。

一旦 Geth 链最终确定,如果一个验证器对 Geth 链进行了认证,它就不能参与非 Geth 链的建设(直到非 Geth 链也被确认),否则会被削减。本质上,运行 Geth 的验证器已经承诺使用无效链,并被锁定在该链上,直到非 Geth 链被确认。这正是许多人误解的关键风险所在。

由于 Geth 验证器被困在无效链上,他们在非 Geth 链上被视为不活跃,并将遭受非活动泄漏的损失。没有任何软件更新或 bug 修补可以拯救这些验证器。他们将被耗尽,直到他们的权益占网络的 1/3 以下,从而让非 Geth 链得以确认。

目前网络上有 28,976,695 ETH 处于质押状态。其中 84%(约 2400 万枚 ETH)可归因于运行 Geth 的验证器,16%(约 500 万枚 ETH)归于不运行 Geth 的验证器。为了让非 Geth 链得以确认,运行 Geth 的验证器需要将其权益销毁,直到其所占的剩余总权益少于 1/3。这意味着需要从这些验证器中销毁约 2150 万枚 ETH(约占总权益的 90%),将 Geth 权益减少到约 25 万枚 ETH,少于总量的 1/3(250 万枚 + 500 万枚 ETH)。非 Geth 验证器控制的约 500 万枚 ETH 现在将代表多于 2/3 的权益,使他们能够确认链。

这将是一个极其痛苦的过程,大约需要 40 天时间来完成。它将导致所有 ETH 的总供应量减少约 18%,,使总供应量低于 1 亿枚 ETH。

争夺出口

这里的一个重要点是,处于无效链上的验证器不太可能坐视不管。他们仍然有选择退出他们的权益的选项,如果他们不这么做,网络将在他们的有效余额达到 16 ETH 时强制将他们驱逐出去。但这并不意味着他们的损失仅限于 16 ETH。

当你退出一个验证器(即使是被强制退出)时,你会进入退出队列,而你在退出队列中时,你仍会流失 ETH!

我们知道,在最坏的情况下,需要约 40 天的时间,非活动泄漏才能允许有效链重新开始确认。那么退出队列需要多长时间呢?

退出队列有一个流失限制,限制每个时期可以退出网络的验证者数量(约 6.4 分钟)。流失限制定义如下:

当前的退出率为每 6.4 分钟退出 13 个验证器,如果每个运行 Geth 的验证器都想退出,至少需要约 260 天才能让所有验证器退出。鉴于 90% 的权益将在约 40 天内被销毁,大多数验证器的余额将在他们能够退出链之前就被耗尽。

最初 2% 的 Geth 验证器发起退出的将在前 5 天内退出,损失的最大值约为 1 年的质押奖励。

你需要成为前 3% 的退出验证器,才能将损失控制在你权益的 10% 以下。

只有前 8% 的退出验证器才能将损失控制在其权益的 50% 以下。此时,任何未手动发起退出的人将被强制退出,并添加到退出队列中,有效余额为 16 ETH。

在 40 天后,当他们的 90% 权益被销毁时,超过 85% 的验证器仍将在队列中。

退出的能力将无法拯救你,你的下行风险不仅限于你被强制退出的损失(16 ETH)。

那么削减呢?

一些人错误地认为,如果出现 bug,运行 Geth 的质押者不仅会遭受非活动泄漏,还会被削减。这是错误的。

削减惩罚只适用于双重签名事件,这完全由共识客户端控制。Geth 中的 bug 不应该导致共识客户端犯下可削减的错误。Geth 产生无效区块不是可削减的错误。

只有非活动泄漏的惩罚适用于 Geth 的 bug。

你应该怎么做?

当今运行 Geth 的质押者可能并不完全了解运行绝对多数执行客户端相关的风险。许多人错误地假设,一旦出现 bug,将在几小时内发布补丁解决问题,并且在此过程中损失的以太币很少。

许多人并不了解,证明一个无效区块的风险会让他们被锁定在一个无效的最终链中,几乎可以肯定他们大部分 ETH 将被销毁。这是一个有可能成为现实的真实风险。

质押以太坊并非无风险收益。你是否会向最大潜在收益为每年 3.5% 的工具投资至少 75000 美元?但有可能产生 100% 的损失?可能不会,但这正是今天 84% 的以太坊质押者所做的。

通过转向少数客户端(假设相同的 bug 不会在多个客户端中出现),你可以将损失最大限制在年化 3.5%。

有了这些知识,任何人仍在运行 Geth 看起来都是疯狂的。我只能假设那些运行 Geth 的人并没有完全理解这个风险。

如果你持有 LST(例如 stETH、cbETH 等),并且 LST 在其验证器上运行 Geth,请理解你的以太坊处于风险中,并考虑取消质押或切换到另一个 LST,直到 Geth 不再占据超主流地位。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OEm7CcTJYfl7CLo5kiTbpAkg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券