针对当前测试网停止出块问题,我们已提出修复方案和计划,内部正在测试验证,现对问题原因和后续升级方案做个简要说明,也欢迎大家积极参与讨论。
问题原因
由于存储在链上的验证节点数据异常,且该数据异常的节点被选中参与共识,轮到数据异常的节点出块时,由于数据异常导致出块逻辑无法正常执行,即无法正常生产和验证区块。
升级方案及风险
风险
目前测试网卡在当前共识轮的最后一个区块,目前网络是在下一轮的第230个区块进行上一轮零出块判定,经检查当前共识轮验证节点均已出过块,在下个共识轮不会被处罚,但后续存在被罚的风险,原因有以下2点:
1、由于当前共识轮中会有17个节点选入下一轮共识,如果这17个节点中的部分节点在下一轮共识来不及升级,就会在下下轮被处罚。
2、其他验证节点如果没有及时升级,在后续被选择共识轮验证节点,也可能被处罚。
升级方案
基于升级操作风险,我们提出如下升级方案:
1、先确定一个时间段(比如6小时),没有参与当前轮共识的验证节点先升级完成,此时区块生产没有恢复,不会进入新共识轮
2、时间段过后,当前共识轮的验证节点(如下列表)再升级,但是为避免出现被处罚,可通过脚本定时统一升级。
当前共识轮验证节点:KubePool 、CloudPool、istaking、MATPool、PlatGo、DolphinTwo、Walkpos、Bit Cat、topool、浜離宮、BlockTEST、RooPool、WonderBox、OG、SNZPool、platon.node.3、BlockPool、FinNX、crazybee、DeepCore、wayish、S5、DMX、Xpool、HelloPool
欢迎大家从各种角度对我们升级方案提出挑战和质疑,也欢迎提出更好的升级建议,我们会充分征求社区意见!
另外,我们正在论坛讨论零出块处罚优化方案,欢迎大家积极参与讨论,希望这个优化方案能在兼顾安全性的基础上,更有利于节点升级或迁移!