Eth2.0惊现时钟Bug,Medalla测试网停止敲定

最新多客户端测试网出现敲定失败问题,2.0信标链上线恐延期。

今天早上一点多,Medalla测试网陆续收到超前Slot区块和证明,由于prysm中的roughtime获取时钟提前4h,导致节点计算Slot错误,所有prysm节点陷入瘫痪,而prysm客户端占据全网64%以上的份额,剩下的30%客户端难以达成全网共识,客户端多样性再一次显得尤为重要。

敲定失败详解

早上一点多,多客户端节点陆续收到超前Slot错误

Getting a lot "error: FutureSlot { present_slot: Slot(73455), block_slot: Slot(74374) }, service: router" now 73280  73311
WARN Could not verify block for gossip       error: RepeatProposal { proposer: 22212, slot: Slot(73452) }, service: router
WARN Could not verify block for gossip       error: RepeatProposal { proposer: 829, slot: Slot(73642) }, service: router

Roughtime报告当前时钟提前4H信息。

Roughtime reports your clock is off by more than 2 seconds offset=4h0m0.023067914s

详细Log信息如下 在这里插入图片描述 LightHouse客户端开始讨论这个问题, 通过问题定位很快找到了roughtime出了问题,roughtime依赖cloudflare,而cloudflare的7个时钟服务全部宕机,prysm的补救措施也没生效,这再次强调了客户多样性的必要性。其他客户端暂时不受影响。 Prysm推出了补救措施,更新本地DNS,但没解决问题

roughtime.chainpoint.org
roughtime.cloudflare.com
roughtime.sandbox.google.com
roughtime.int08h.com
ticktock.mixmin.net

立即有人提了Issue https://github.com/prysmaticlabs/prysm/issues/6825 roughtime的相关实现在这里 https://github.com/cloudflare/roughtime

以下为2.0各客户端占比 在这里插入图片描述 出现此问题是staking奖励为负,被惩罚了。 在这里插入图片描述

此图是验证人参与率在1点的急剧下降。

在这里插入图片描述

Bug解析

错误的roughtime响应导致验证人产生无效的证明(未来的Slot),提前对一个slot做证明其他节点拒绝接收。每个验证人都会被分配一个Slot来做证明,但如果时间错误则它将过早地进行证明Attestations,其他客户端节点认为当前Slot尚未发生将拒绝该证明,而正确的Slot由于收齐的证明难以满足3分之二的要求,导致合理化和敲定​停止。​

Roughtime优点

cloudflare优点是他们是ntp的签名版本,可以阻止你遭受中间人的攻击roughtime是解决attestations时间不一致问题,网络可以更快达成共识。而就是这一小Bug导致了全网瘫痪。 lighthouse没有使用这个实现

其他客户端问题

LightHouse在本次bug中也暴露了内存问题,每分钟收到300 gossip区块导致内存暂用过高。

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 2020-08-16 09:59
  • 阅读 ( 518 )
  • 学分 ( 30 )
  • 分类:以太访2.0

0 条评论

请先 登录 后评论
科帆区块链
科帆区块链

区块链底层开发

13 篇文章, 727 学分