In the old version, due to different operators (OPs) obtaining different proposed blocks from different beacon nodes, consensus couldn't be achieved, thus missing propose duties. In our old version, consensus required that the duties obtained from the beacon node by each operator were identical, thereby forming a 3f+1 consensus.
Changes made last night revamped the code to let the leader of each round dominate the consensus. Once the leader obtains the task, it broadcasts to form a consensus before submitting the task to the beacon node. However, this modification assumes that there should only be one leader in each round. In our old code, there were two leaders initiating consensus in each round. Hence, in a cluster, if new nodes coexist with old ones, there might be two operators who agree upon and sign different duties, leading to a slash
the problem is:
2 leaders for both attest and propose, will achieve consensus even if 2 leaders got 2 different duties
the commit caused the problem:
https://github.com/ParaState/SafeStakeOperator/commit/26f0d7cc80349e2363d91eb51d8368571c92555c
this commit should fix the problem:
https://github.com/ParaState/SafeStakeOperator/commit/be5dc7c2f250ec2996c6e7dcfad10c234e4078c0