泰州新闻

买usdt最便宜的地方(www.payusdt.vip):以太坊 2.0 主网事故回首

来源:泰州新闻网 发布时间:2021-05-02 浏览次数:

USDT自动API接口

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

事故提要

从 epoch 32302 最先,信标链丢失了大量区块提议。由于 Prysm 是 Eth2 客户端中用户最多的,因此问题最有可能泛起在 Prysm 上。一段时间之后,我们在内陆重现了该错误。这实在是我们已知的一个与 eth1 数据投票和验证者存款相关的问题。只管之前已经有人向我们讲述过此问题了,然则我们无法重现这个 bug 并将其视为伶仃事宜。而且这个问题从未在任何测试网或者主网中普遍流传过。这是该问题首次导致区块提议失败事故。

在这 18 个 epochs 内,险些所有 Prysm 信标节点都无法生产新区块。Epoch 32320 又最先正常运行了,那时人人普遍以为该事故已经竣事了。然而约莫 24 小时后,该事故再次发生,造成了类似的影响。

关于此事故的正式事后剖析讲述已宣布,接见链接查看:https://docs.google.com/document/d/1nJr6_bd-UnLBxvhT8lcRYdAZr69QdVQ3zJNUr3LgW-0/edit

该回首详细先容了事故的时间线;剖析了基本缘故原由以及列出了 Eth2 质押者和介入者需要注重的问题。

影响

一些开端数据解释,第一次事故中,每个受影响的验证者平均损失 122950 gwei (按文章攥写时的价钱盘算为 0.3 美元)。而该次事故发生的 24 小时内,又发生了第二次相同的事故,每个受影响的验证者损失约为 0.22 美元。

一些要害事实:

在整个团队经由约莫 30 个小时的起劲之后,我们诊断了其基本缘故原由,并在 UTC 时间 4 月 25 日早上 6 点为所有 Prysm 节点部署了修复版本。在节点尚未完全升级之前,类似的事故仍发生了最后一次。给节点运行者足够的时间升级客户端之后,此类事故没有再发生过了,而且有证据解释该问题已获得完全解决。

问题解答

成为验证者的捷径

此事故是否会削弱人人对 Eth2 的信心?

不会。该事故并没有造成共识失败,而且该事宜的影响局限与 Eth2 主网的规模相比异常小 (在第一次事故中,每个受影响的验证者平均损失约 0.3 美元)。自创世以来,Eth2 一直都异常壮大,验证者介入率异常高,而且每个 epoch 都完成了敲定。从我们的角度来看,故障解决了之后,网络有能力恢复到完善运行的状态,反而增强了社区对以太坊的回复能力的信心。

此事故是否会削弱人人对 Prysmatic Labs 团队的信心?

我们对此次事故做出的反映息争决方式与此前我们处置 Eth2 测试网中的故障时完全差异。此次事故发生后,我们团队马上清扫了错误信息;量化影响;以及在守候解决方案时,给验证者们列出了明确的应对步骤。再者,我们完全确定领会决方案之后,才去让人人升级客户端版本。值得注重的是,由于 Prysm 客户端是以太坊 2.0 网络中用户占比最大的软件,因此泛起的任何 bug 都可能会引起更严重的问题。

对于焦点开发者来说,事情的要害是要“约束庞大性” (bound complexity)。诸如 Eth2 之类的漫衍式系统具有云云多的变量,我们每个团队都尽一切起劲以削减其出 bug 的可能性。固然,在这个的软件中,泛起 bug 是不能阻止的,而且我们认可,Prysmatic Labs 确实失足了。然则我们希望可以展现出我们团队解决问题的动力与能力,同时为验证者平衡速率和准确性之间的问题。

事故基本缘故原由总结

Eth2 和 Eth1 链松散地毗邻着,Eth2 仅在验证者存款验证时需要用到 Eth1。也就是说,纵然验证者对垃圾数据举行了投票,Eth2 PoS 链也可以继续运行。而唯一会影响到的事就是,新的验证者存款无法添加,直到 PoS 链再次对准确的 Eth1 数据举行投票。此“投票”是在“投票周期”中完成的,现在主网上将该周期设置为 64 epochs (约莫 6.8 小时)。

投票的方式为一个简朴的“绝对多数”原则,Eth2 验证者规范中有注释其运作方式。不幸的是,Prysm 在执行该原则 (根据绝对多数原则投票) 时,丢失了一些验证。该事故中,由于 Prysm 泛起了 bug,导致一名区块提议者确立了一个完全无效的 Eth1 存款树根,而其他 Prysm 节点首先发现了该区块提议。随后,他们对此投了有用票,由于 Prysm 客户端遵照的是简朴的“绝对多数投票”原则,而没有做明确的验证。

然后,所有 Prysm 节点”滚雪球“般地对无效信息投票,导致了区块提议者无法将具有存款的区块打包进链。这是由于,这些存款对节点的 Eth1 存款树根未举行验证,以是区块提议会失败。而在投票期竣事之后,该问题就自动解决了,但若是 bug 未修复,将再次泛起这种问题。

现实上,这次泛起无效 Eth1 存款数据树根的基本缘故原由是,存款缓存初始化中泛起了 bug,但仅影响了使用 Prysm 客户端的一部门信标节点。这导致这些节点生产错误的存款树根,而其他 Prysm 节点对其举行投票,从而造成了此次事故。

事宜时间线

注重,下面是手艺细节!人人可以跳到下一部门,阅读解决方案以及该次事故带来的履历教训。

区块提议失败

Epoch 32302 最先泛起区块提议丢失的问题。

Nishant 通知了团队,并召开了全体集会。然后,我们通过内陆的主网信标节点重现事故,并最先了观察。

观察显示,Prysm 对新鲜的、错误的 eth1 存款树根投票

我们注重到 Prysm 的节点正对新鲜的树根投票,该默克尔根用于验证 PoS 链中的验证者存款合约的存款完整性。在公共浏览器上查看了最初的区块提议者的历史信息之后 (为了珍爱该验证者,就不宣布其身份了),我们推断这并不是一起攻击事宜。

清扫法

最初的嫌疑是关于 Prysm 若何在验证者提议代码路径中处置 eth1 数据投票。尤其是,我们试图清扫一些问题:

1.打包存款进区块这里有问题吗?

2.存款日志信息获取和 eth1 信息混了或者不确定吗?

3.我们的存款默克尔树泛起问题了吗?

在接下来的 16 个小时左右,我们破费了大量的时间通力互助诊断潜在的问题。我们梳理了代码行,试图通过单元测试来重现故障历程,并实验了种种方式。只管我们已经有了一个潜在的解决方案,我们也因缺乏信心而对宣布修复版本而主要。

较合理的基本缘故原由

此前在处置 Eth2 测试网中的 bug 时,我们获得了一些履历教训,光对基本缘故原由有信心是不够的。在高风险的情形下,在向用户宣布解决方案之前,我们需要有 100% 的信心。在事故发生后 28 小时,我们坐下来并问自己:”我们另有什么是不知道的呢?我们还可以问什么问题来让我们更靠近发生故障的基本缘故原由呢?”然后我们知道了以下几点:

1.我们的希罕默克尔树 (sparse merkle tree) 实现并没有严重的 bug,由于它使用主网和 Prater 测试网的存款,与 Lighthouse 和 Protolambda 的 Eth2 zrnt 实现相匹配。

2.我们用于从 Eth1 节点检索 Eth1 数据的代码路径没有 bug,也没有返回不准确的数据。

我们不知道的有:

1.无效的存款树根是若何发生的

2.为什么这个问题在一些节点中是可以重现的,而其他节点不能以

3.为什么 Prysm 节点在确定区块中的存款数目时,泛起了”off-by-one“错误

修复问题

为了回覆这些问题,我们看了初始化我们的存款树的代码路径。效果发现,在早期添加了一个缓存层以阻止质押者每次启动他们的节点时都必须下载所有验证者存款纪录。此外,我们添加了一个新功效——在客户端内部可以从一个内嵌的创世状态中启动 Prysm。在填充缓存时,我们存款树的一个错误预设导致信息的讹误:

,

USDT场外交易网

U交所(www.payusdt.vip)是使用TRC-20协议的Usdt官方交易所,开放USDT帐号注册、usdt小额交易、usdt线下现金交易、usdt实名不实名交易、usdt场外担保交易的平台。免费提供场外usdt承兑、低价usdt渠道、Usdt提币免手续费、Usdt交易免手续费。U交所开放usdt otc API接口、支付回调等接口。

,

事实证实,若是我们的存款树是空的,函数 len(items) 将始终返回 1。这意味着当现实上我们应该把 lastReceivedMerkleIndex 的值设为 -1 时,我们会把它设为 0。上面的代码会导致一些在该代码路径的 Prysm 节点跳过把第 0 笔存款嵌入到树里。我们代码库的其他部门都指向问题出在我们存款树实现的这个新鲜部门,而不是这个代码路径。

为了磨练这个假设,我们实验使用 Protolambda 提供应我们的测试夹具尽可能地复制代码路径。我们直觉我们漏了将第 0 笔存款嵌入到存款树。固然,我们能够在一个可重复的测试中找到导致整个事宜发生的、有问题的存款树根!然后,我们围绕该代码路径添加条件,以阻止该条件再次泛起,并准备推出最终确定的修复版本。

问题解决

基本缘故原由总结

  • 若是一个节点重启并把 eth1 数据保留在磁盘上,我们会从这些数据初始化我们的存款缓存,但由于我们的希罕默克尔树 (sparse merkle tree,SMT) 协助程序包的事情方式与从磁盘上的数据初始化此缓存的代码路径不相同,我们会跳过把第 0 笔存款嵌入存款树,造成无效存款树根。这个代码路径只影响那些创世以来还没有数据库的节点,厥后被修复了。

  • 在官方规范里,Prysm 节点遵照“绝对多数”的原则执行一个 eth1 数据投票算法,然则,Prysm 并没有完全实现该算法的一些有用条件。Prysm 节点随绝对多数 eth1数据投票举行投票,该投票数据引用的是一个现存的区块根,这可能导致 Prysm 节点投票给一个由有问题的存款树天生的存款树哈希值,由于这些存款是未被验证的。

  • 由于网络里大部门的节点都是 Prysm 节点,随绝对多数原则投票给有问题存款根这个问题的滚雪球效应生长成一个严重问题,由于 Prysm 节点在随后一段时间里无法在主网上天生区块。

  • 一旦 eth1数据投票期重置了,Prysm 节点又可以准确地提议区块了,直到在未来又遇到该破绽。

解决方案

在北京时间 4 月 25 日周日 13:00,在不确定性中煎熬了多个小时后,我们宣布了对该问题的修复。我们对这个解决方案有十足的掌握,并异常有信心在节点升级后,该问题在 Eth2 中不会再泛起。

吸收校训

  • 在事宜中,对我们的解决方案有信心和与外界的郑重相同是至关主要的

当我们遭遇 Eth2 的 Medalla 测试网事故时,我们上了关于优越相同的价值的主要一课。每个公共谈论和语言的准确表达都市对事宜的效果发生严重影响。在测试网的事宜里,我们以为一个立刻的解决方案是通过公共渠道告诉人人“重启你们的节点”。这个轻率的决议导致网络上大部门的节点都掉线了,然后争先恐后在一堆坏的对等节点里找好的,以实现与区块链的同步。此外,我们很快宣布了一个没有 100% 信心能解决问题的软件升级热补丁。这给系统带来更多的杂乱,并造成节点运行商对解决方案的疑虑。

相较之下,在这次主网新事故的整个历程里,我们一直注重稳重与准确的相同。另外,在我们对问题的泉源息争决方式有 100% 的信心之前我们没有宣布热补丁。

  • 保持耐心与镇定有助于解决问题

我们团队经由了已往几年构建 Eth2 ,学到了若何在面临逆境时保持镇定。我们信托在解决问题历程中,保持镇定、频仍交流状态讲述、确保团队感受到支持和正面的反馈是异常主要的。我们能够花时间网络尽可能多的证据,并与我们的用户举行仔细的互助,我们将乐成解决这个问题。更主要的是,我们在最先时就花时间对事宜影响举行量化,以削减质押者与因缺乏信息而发生的忧虑。这个教训对在高度主要与睡眠不足的情形下事情异常主要。慢下来,用适当的方式解决它,并不惜一切价值阻止把问题弄得更糟。

  • Eth2 测试网不即是主网

对于 Prysm 客户端,我们在公共 Eth2 测试网中对 Prysm 产物前的候选版本举行了普遍的测试和监听。Prater 和 Pyrmont 测试网都是用户在加入到 Eth2 主网前用来测试他们的设置的好工具。然则,这些测试网都预设四个产物级 Eth2 客户端的占比是靠近平均分的,即没有哪个客户端在验证者中有显著的多数份额。不幸的是,这可能没有思量到当某个客户端为大多数人所使用时才会泛起的破绽。在未来,Prysmatic Labs 会在一个更靠近主网环境、或一个 Prysm 网络节点 50% 的环境里举行内部测试网里举行测试。

此外,我们建议其他客户端也在它们自己的内容测试中加入这样的环境,在它们成为大多数客户端的时刻,它们也可以领会自己客户端的潜在问题。

质押者应该思索什么

为什么使用 Prysm 客户端做质押

人们选择运行 Prysm 时由于从一最先我们团队已经专注于使他们介入以太坊质押的体验更简朴。我与我们的用户相同过许多次,许多人选择一个客户端不是由于微观上的优化或与其他客户端相比相对小的收益差异,而是由于我们使得他们的体验更简朴——优越的文档资料,一直给所有的社区成员提供主要的辅助。对于新手来说 Eth2 是恐怖的,质押也充满不确定性和风险。我们团队的使命是让用户知道我们在他们身边,以及无论他们的问题多小都市获得我们的支持。稀奇地,我们一直关注那些可能对下令行不太熟悉、不太领会 UNIX 操作系统的通俗质押者。

在未来,你可以对我们团队有以下期待:

  • 提高实现规范条件的准确性,确保预设和有用条件在任何代码被写入前都被充实审核和质疑

  • 我们不因要提高这个体验,还要加倍起劲,使 Prysm 比今天提升许多倍,使使用我们客户端的质押者更容易介入网络,包罗网页界面的改善。

  • Prysm 将在研发方面加倍起劲,在 eth1 <> eth2 的合并条件供要害的功效与改善。

  • 我们信托康健的竞争能形成一个壮大的激励机制,推动 ETH 的权益证实能有更多人介入,也因此更平安,由于所有客户端团队都不停改善他们的软件

  • 我们团队致力于以最高的专业水准来解决和质押者可能会遇到的问题。我们信托我们做利益理我们路上会遇到的任何问题,并向我们的社区保证我们会把质押者体验作为我们的最高优先级。

  • 最后,我们信托另有许多主要功效可以使 Prysm 酿成介入 Eth2 的、更有吸引力的软件,我们将朝着这个目的不停迭代

  • Prysm 有一些验证者收益的高级优化还没对所有质押者设为默认启动。我们信托这些功效宣布后,Prysm 的质押者会看到最高水平的收益。

回主顾户端多样性的对话

自 Eth2 创世以来,我们一直听到的一个配合主题是客户端多样性。Eth2 是一个有天下各地的人作为验证者介入的漫衍式系统。差异人用差其余软件介入到区块链的共识里,若是某个软件泛起严重问题,若是运行网络的客户端实现由一个平衡漫衍的话,影响会更小。

Leonardo Bautista-Gomez 早在一月的时刻宣布了一份数据剖析,效果现实 Prysm 节点占网络的65%,此次事宜也显示 Prysm 验证者在今天占了大多数。

https://github.com/leobago/BSC-ETH2/tree/master/armiarma

我们建议你们客观地看待每个客户端:它的软件、它的社区、另有它的韧性,然后决议选哪个软件及其背后的团队是最适合你的需求的。若是某个 Eth2 客户端缺少了对你来说很主要的器械,者正式你不选他们的客户端的理由,我们强烈推荐你提出一个功效请求。Prysmatic Labs 会继续专注于辅助你介入到以太坊网络,并推动区块链软件的界限。

若是你想相同和对本文由疑问的话,请加入我们的Discord。

参考

• 事宜的相同 https://www.reddit.com/r/ethstaker/comments/mxpz57/regarding_the_recent_beacon_chain_incident/

• 事后检验讲述 https://docs.google.com/document/d/1nJr6_bd-UnLBxvhT8lcRYdAZr69QdVQ3zJNUr3LgW-0/edit?usp=sharing

• Medalla 测试网事宜 https://medium.com/prysmatic-labs/eth2-medalla-testnet-incident-f7fbc3cc934a

https://medium.com/prysmatic-labs/tagged/blockchain)

原文链接:

https://medium.com/prysmatic-labs/eth2-mainnet-incident-retrospective-f0338814340c

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片