比特币交易平台,比特币价格走势,区块链数字货币交易平台-比特币入门网

ETH 2.0 主网事故回顾

www.oneronghui.com

没验证者被罚没

修复问题

为了回答这部分问题,大家看了初始化大家的存款树的代码路径。结果发现,在早期添加了一个缓存层以防止质押者每次启动他们的节点时都需要下载所有验证者存款记录。除此之外,大家添加了一个新功能——在推广客户端内部可以从一个内嵌的创世状况中启动 Prysm。在填充缓存时,大家存款树的一个错误预设致使信息的讹误:

htth3s://launchh3ad.以太币ereum.org

大家选择运行 Prysm 时由于从刚开始大家团队已经专注于使他们参与ETH质押的体验更容易。我与大家的用户交流过不少次,大多数人选择一个推广客户端不是由于微观上的优化或与其他推广客户端相比相对小的收益差别,而是由于大家使得他们的体验更容易——好的文档资料,一直给所有些社区成员提供要紧的帮忙。对于小白来讲 以太币2 是可怕的,质押也充满不确定性和风险。大家团队的使命是让用户知晓大家在他们身边,与无论他们的问题多小都会得到大家的支持。特别地,大家一直关注那些可能对命令行不太熟知、不太知道 UNIX 操作系统的一般质押者。

在将来,你可以对大家团队有以下期待:

提升达成规范条件的准确性,确保预设和有效条件在任何代码被写入前都被充分审核和质疑

大家不因要提升这个体验,还要加倍努力,使 Prysm 比今天提高不少倍,使用大家推广客户端的质押者更容易参与互联网,包括网页界面的改进。

Prysm 将在研发方面加倍努力,在 以太币1 lt;gt; 以太币2 的合并首要条件供重要的功能与改进。

大家相信健康的角逐能形成一个强大的勉励机制,推进 以太币 的权益证明能有更多人参与,也因此更安全,由于所有推广客户端团队都不断改变他们的软件

大家团队致力于以最高的专业水准来解决和质押者可能会遇见的问题。大家相信大家做好处置大家路上会遇见的任何问题,并向大家的社区保证大家会把质押者体验作为大家的最高优先级。

最后,大家相信还有不少要紧功能可以使 Prysm 变成参与 以太币2 的、更有吸引力的软件,大家将朝着这个目的不断迭代

Prysm 有一些验证者收益的高级优化还没有对所有质押者设为默认启动。大家相信这部分功能发布后,Prysm 的质押者会看到最高水平的收益。

吸取校训

在事件中,对大家的解决方法有信心和与外面的小心交流是至关要紧的

当大家遭遇 以太币2 的 Medalla 测试网事故时,大家上了关于好交流的价值的要紧一课。每一个公共评论和语言的精确表达都会对事件的结果产生紧急影响。在测试网的事件里,大家以为一个立即的解决方法是通过公共途径告诉大伙“重启你们的节点”。这个草率的决定致使互联网上大多数的节点都掉线了,然后争先恐后在一堆坏的对等节点里找好的,以达成与区块链的同步。除此之外,大家非常快发布了一个没 100% 信心能解决问题的软件升级热补丁。这给系统带来更多的混乱,并导致节点运行商对解决方法的疑虑。

相较之下,在这次主网新事故的整个过程里,大家一直注意慎重与精确的交流。另外,在大家对问题的根源和解决方案有 100% 的信心之前大家没发布热补丁。

维持耐心与冷静能够帮助解决问题

大家团队经过了过去几年构建 以太币2 ,学到了怎么样在面对逆境时维持冷静。大家相信在解决问题过程中,维持冷静、频繁交流状况报告、确保团队感觉到支持和正面的反馈是尤为重要的。大家可以花时间采集尽量多的证据,并与大家的用户进行细致的合作,大家将成功解决这个问题。更要紧的是,大家在开始时就花时间对事件影响进行量化,以降低质押者与因缺少信息而产生的忧虑。这个教训对在高度紧张与睡眠不足的状况下工作尤为重要。慢下来,用适合的办法解决它,并不惜所有代价防止把问题弄得更糟。

排除法

刚开始的怀疑是关于 Prysm 怎么样在验证者建议代码路径中处置 以太币1 数据投票。特别是,大家试图排除一些问题:

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

2.存款日志信息获得和 以太币1 信息混了或者不确定吗?

3.大家的存款默克尔树出现问题了吗?

在下面的 16 个小时左右,大家花费了很多的时间一同努力诊断潜在的问题。大家梳理了代码行,试图通过单元测试来重现问题过程,并尝试了各种办法。尽管大家已经有了一个潜在的解决方法,大家也因缺少信心而对发布修复版本而紧张。

事件时间线

注意,下面是技术细则!大伙可以跳到下一部分,阅读解决方法与该次事故带来的经验教训。

成为验证者的捷径

此事故会不会削弱大伙对 以太币2 的信心?

不会。该事故并没导致共识失败,并且该事件的影响范围与 以太币2 主网的规模相比很小 。自创世以来,以太币2 一直都很强大,验证者参与率特别高,并且每一个 epoch 都完成了敲定。从大家的角度来看,问题解决了之后,互联网有能力恢复到完美运行的状况,反而增强了社区对ETH的复原能力的信心。

此事故会不会削弱大伙对 Prysmatic Labs 团队的信心?

大家对此次事故做出的反应和解决方案与此前大家处置 以太币2 测试网中的问题时完全不同。此次事故发生后,大家团队立刻排除去错误信息;量化影响;与在等待解决方法时,给验证者们列出了明确的应付步骤。再者,大家完全确定知道决策略之后,才去让大伙升级推广客户端版本。值得注意的是,因为 Prysm 推广客户端是ETH 2.0 互联网中用户占比最大的软件,因此出现的任何 bug 都可能会引起更紧急的问题。

对于核心开发者来讲,工作的重要是要“约束复杂性” 。诸如 以太币2 之类的分布式系统具备这样多的变量,大家每一个团队都尽所有努力以降低其出 bug 的可能性。当然,在这个的软件中,出现 bug 是不可防止的,并且大家承认,Prysmatic Labs 确实出错了。但大家期望可以展示出大家团队解决问题的动力与能力,同时为验证者平衡速度和准确性之间的问题。

影响

一些初步数据表明,首次事故中,每一个受影响的验证者平均损失 122950 gwei 。而该次事故发生的 24 小时内,又发生了第二次相同的事故,每一个受影响的验证者损失约为 0.22 USD。

大家不了解的有:

1.无效的存款树根是怎么样产生的

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

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

较适当的根本缘由

此前在处置 以太币2 测试网中的 bug 时,大家得到了一些经验教训,光对根本缘由有信心是不够的。在高风险的状况下,在向用户公布解决方法之前,大家需要有 100% 的信心。在事故发生后 28 小时,大家坐下来并问自己:”大家还有哪些是不了解的呢?大家还可以问那些问题来让大家更接近发生问题的根本缘由呢?”然后大家知晓了以下几个方面:

1.大家的稀疏默克尔树 达成并没紧急的 bug,由于它用主网和 Prater 测试网的存款,与 Lighthouse 和 Protolambda 的 以太币2 zrnt 达成相匹配。

2.大家用于从 以太币1 节点检索 以太币1 数据的代码路径没 bug,也没返回不正确的数据。

解决方法

在北京时间 4 月 25 日周日 13:00,在不确定性中煎熬了多个小时后,大家发布了对该问题的修复。大家对这个解决方法有十足的把握,并不是常有信心在节点升级后,该问题在 以太币2 中不会再出现。

一些重要事实:

出处 |Prysmatic Labs

问题根源

事实证明,假如大家的存款树是空的,函数 len 将一直返回 1。这意味着当事实上大家应该把 lastReceivedMerkleIndex 的值设为 -1 时,大家会把它设为 0。上面的代码会致使一些在该代码路径的 Prysm 节点跳过把第 0 笔存款嵌入到树里。大家代码库的其他部分都指向问题出在大家存款树达成的这个奇怪部分,而不是这个代码路径。

为了检验这个假设,大家尝试用 Protolambda 提供给大家的测试夹具尽量地复制代码路径。大家直觉大家漏了将第 0 笔存款嵌入到存款树。当然,大家可以在一个可重复的测试中找到致使整个事件发生的、有问题的存款树根!然后,大家围绕该代码路径添加条件,以防止该条件第三出现,并筹备推出最后确定的修复版本。

参考

• 事件的交流 https://www.redpt.com/r/以太币staker/comments/mxpz57/regarpng_the_recent_beacon_chain_incident/

• 事后反省报告 https://docs.谷歌.com/document/d/1nJr6_bd-UnLBxvhT8lcRYdAZr69QdVQ3zJNUr3LgW-0/ept?usp=sharing

• Medalla 测试网事件 https://mepum.com/prysmatic-labs/以太币2-medalla-testnet-incident-f7fbc3cc934a

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

区块建议失败

Epoch 32302 开始出现区块建议丢失的问题。

Nishant 公告了团队,并召开了全领会议。然后,大家通过当地的主网信标节点重现事故,并开始了调查。

调查显示,Prysm 对奇怪的、错误的 以太币1 存款树根投票

大家注意到 Prysm 的节点正对奇怪的树根投票,该默克尔根用于验证 PoS 链中的验证者存款合约的存款完整性。在公共浏览器上查询了刚开始的区块建议者的历史信息之后 ,大家判断这并非一块攻击事件。

原文链接:

https://mepum.com/prysmatic-labs/以太币2-mainnet-incident-retrospective-f0338814340c

作者 |Raul Jordan

htth3s://beaconcha.in/eh3och/32302

以太币2 测试网不等于主网

对于 Prysm 推广客户端,大家在公共 以太币2 测试网中对 Prysm 商品前的候选版本进行了广泛的测试和监听。Prater 和 Pyrmont 测试网都是用户在加入到 以太币2 主网前用来测试他们的设置的好工具。但,这部分测试网都预设四个商品级 以太币2 推广客户端的占比是接近平均分的,即没什么推广客户端在验证者中有明显的多数份额。不幸的是,这可能没考虑到当某个推广客户端为大部分人所用时才会出现的漏洞。在将来,Prysmatic Labs 会在一个更接近主网环境、或一个 Prysm 互联网节点 50% 的环境里进行内部测试网里进行测试。

除此之外,大家建议其他推广客户端也在它们我们的内容测试中加入如此的环境,在它们成为大部分推广客户端的时候,它们也好了解自己推广客户端的潜在问题。

对信标链的敲定没影响

参与率还是非常高 (编者注,此数据与 Ben Edgington 撰写的最新一期《以太币2 进展更新》有出入。)

大部分验证者丢失 2 到 3 个证明,不管什么推广客户端类

这次不像是一次恶意或有意的攻击

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

回客户户端多样性的对话

自 以太币2 创世以来,大家一直听到的一个一同主题是推广客户端多样性。以太币2 是一个有世界各地的人作为验证者参与的分布式系统。不同人用不一样的软件参与到区块链的共识里,假如某个软件出现紧急问题,假如运行互联网的推广客户端达成由一个平衡分布的话,影响会更小。

Leonardo Bautista-Gomez 早在1月的时候公布了一份数据剖析,结果现实 Prysm 节点占互联网的65%,此次事件也显示 Prysm 验证者在今天占了大部分。

https://github.com/leobago/BSC-以太币2/tree/master/armiarma

大家建议你们客观地看待每一个推广客户端:它的软件、它的社区、还有它的韧性,然后决定选什么软件及其背后的团队是最好你的需要的。假如某个 以太币2 推广客户端缺少了对你来讲非常重要的东西,者正式你不选他们的推广客户端的原因,大家强烈推荐你提出一个功能请求。Prysmatic Labs 会继续专注于帮你参与到ETH互联网,并推进区块链软件的边界。

假如你想交流和对本文由疑问的话,请加入大家的Discord。

根本缘由概要

Prysm 把 以太币1 数据保存在磁盘上,以预防用户在每次重启进程时都需要对验证者存款合约日志发出请求。

假如一个节点重启并把 以太币1 数据保存在磁盘上,大家会从这部分数据初始化大家的存款缓存,但因为大家的稀疏默克尔树 帮助程序包的工作方法与从磁盘上的数据初始化此缓存的代码路径不相同,大家会跳过把第 0 笔存款嵌入存款树,导致无效存款树根。这个代码路径只影响那些创世以来还没数据库的节点,后来被修复了。

在官方规范里,Prysm 节点遵循“绝对多数”的原则实行一个 以太币1 数据投票算法,但,Prysm 并没完全达成该算法的一些有效条件。Prysm 节点随绝对多数 以太币1数据投票进行投票,该投票数据引用的是一个现存的区块根,这可能致使 Prysm 节点投票给一个由有问题的存款树生成的存款树哈希值,由于这部分存款是未被验证的。

因为互联网里大多数的节点都是 Prysm 节点,随绝对多数原则投票给有问题存款根这个问题的滚雪球效应进步成一个紧急问题,由于 Prysm 节点在随后一段时间里没办法在主网上生成区块。

一旦 以太币1数据投票期重置了,Prysm 节点又可以正确地建议区块了,直到在将来又遇见该漏洞。

事故根本缘由概要

以太币2 和 以太币1 链松散地连接着,以太币2 仅在验证者存款验证时需要用到 以太币1。也就是说,即便验证者对垃圾数据进行了投票,以太币2 PoS 链也可以继续运行。而唯一会干扰到的事就是,新的验证者存款没办法添加,直到 PoS 链第三对正确的 以太币1 数据进行投票。此“投票”是在“投票周期”中完成的,现在主网上将该周期设置为 64 epochs 。

投票的方法为一个容易的“绝对多数”原则,以太币2 验证者规范中有讲解其运作方法。不幸的是,Prysm 在实行该原则 时,丢失了一些验证。该事故中,因为 Prysm 出现了 bug,致使一名区块建议者创建了一个完全无效的 以太币1 存款树根,而其他 Prysm 节点第一发现了该区块建议。随后,他们对此投了有效票,由于 Prysm 推广客户端遵循的是容易的“绝对多数投票”原则,而没做明确的验证。

然后,所有 Prysm 节点”滚雪球“般地对无效信息投票,致使了区块建议者没办法将具备存款的区块打包进链。这是由于,这部分存款对节点的 以太币1 存款树根没有进行验证,所以区块建议会失败。而在投票期结束之后,该问题就自动解决了,但假如 bug 未修复,将第三出现这种问题。

事实上,这次出现无效 以太币1 存款数据树根的根本缘由是,存款缓存初始化中出现了 bug,但仅影响了用 Prysm 推广客户端的一部分信标节点。这致使这部分节点生产错误的存款树根,而其他 Prysm 节点对其进行投票,从而导致了此次事故。

为何用 Prysm 推广客户端做质押

质押者应该考虑什么

问题解答

问题解决

事故概要

从 epoch 32302 开始,信标链丢失了很多区块建议。因为 Prysm 是 以太币2 推广客户端中用户最多的,因此问题最大概出目前 Prysm 上。一段时间之后,大家在当地重现了该错误。这其实是大家已知的一个与 以太币1 数据投票和验证者存款有关的问题。尽管之前已经有人向大家报告过此问题了,但大家没办法重现这个 bug 并将其视为孤立事件。而且这个问题从未在任何测试网或者主网中广泛传播过。这是该问题初次致使区块建议失败事故。

在这 18 个 epochs 内,几乎所有 Prysm 信标节点都没办法生产新区块。Epoch 32320 又开始正常运行了,当时大伙常见觉得该事故已经结束了。然而大约 24 小时后,该事故第三发生,导致了类似的影响。

关于此事故的正式事后剖析报告已发布,访问链接查询:https://docs.谷歌.com/document/d/1nJr6_bd-UnLBxvhT8lcRYdAZr69QdVQ3zJNUr3LgW-0/ept

该回顾详细介绍了事故的时间线;剖析了根本缘由与列出了 以太币2 质押者和参与者应该注意的问题。

标签:ETH(26)以太坊(46)区块链(24)