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信息如下 ![在这里插入图片描述](https://img.learnblockchain.cn/2020/08/17_/351719895.png) `LightHouse客户端`开始讨论这个问题, ![](https://img.learnblockchain.cn/2020/08/17_/107428881.png) 通过问题定位很快找到了`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各客户端占比** ![在这里插入图片描述](https://img.learnblockchain.cn/2020/08/17_/262366433.png) **出现此问题是staking奖励为负,被惩罚了。** ![在这里插入图片描述](https://img.learnblockchain.cn/2020/08/17_/265156919.jpg) **此图是验证人参与率在1点的急剧下降。** ![在这里插入图片描述](https://img.learnblockchain.cn/2020/08/17_/393346845.jpg) ### Bug解析 错误的`roughtime`响应导致验证人产生无效的`证明`和`块`(未来的Slot),提前对一个slot做证明其他`节点拒绝接收`。每个验证人都会被分配一个Slot来做证明,但如果时间错误则它将过早地进行证明`Attestations`,其他客户端节点认为当前Slot尚未发生将拒绝该证明,而正确的Slot由于收齐的证明难以满足3分之二的要求,导致合理化和敲定​停止。​ ### Roughtime优点 `cloudflare`优点是他们是`ntp`的签名版本,可以阻止你遭受`中间人的攻击`,`roughtime`是解决`attestations`时间不一致问题,网络可以更快达成共识。而就是这一小Bug导致了全网瘫痪。 `lighthouse`没有使用这个实现 ### 其他客户端问题 LightHouse在本次bug中也暴露了内存问题,每分钟收到300 gossip区块导致内存暂用过高。

今天早上一点多,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
  • 阅读 ( 907 )
  • 学分 ( 30 )
  • 分类:以太访2.0

评论