最新多客户端测试网出现敲定失败问题,2.0信标链上线恐延期。
### 敲定失败详解
早上一点多,多客户端节点陆续收到`超前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区块导致内存暂用过高。
今天早上一点多,
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
- 阅读 ( 1285 )
- 学分 ( 30 )
- 分类:以太访2.0