最新多客户端测试网出现敲定失败问题,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点的急剧下降。

错误的roughtime响应导致验证人产生无效的证明和块(未来的Slot),提前对一个slot做证明其他节点拒绝接收。每个验证人都会被分配一个Slot来做证明,但如果时间错误则它将过早地进行证明Attestations,其他客户端节点认为当前Slot尚未发生将拒绝该证明,而正确的Slot由于收齐的证明难以满足3分之二的要求,导致合理化和敲定停止。
cloudflare优点是他们是ntp的签名版本,可以阻止你遭受中间人的攻击,roughtime是解决attestations时间不一致问题,网络可以更快达成共识。而就是这一小Bug导致了全网瘫痪。 lighthouse没有使用这个实现
LightHouse在本次bug中也暴露了内存问题,每分钟收到300 gossip区块导致内存暂用过高。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!
