🎯 Problem to be solved
Previously we have introduced chain_split_halt feature so that Charon nodes continue QBFT rounds for attestation only if the proposed attestation has the same source and target votes as the one they have fetched. The intent of this is to protect against chain forks in scenarios of faulty CL/EL. We have purposefully excluded head votes from this, as they can differ because of purely performance reasons and it may cause unnecessarily missing of attestations.
However, matching head votes can improve a cluster's head vote accuracy in cases when there is low enough latency between the nodes. If we use the same logic as chain_split_halt, we can agree on the proposed attestation only if it has the same head vote as ours. Optionally, we can do this check only for the first and/or second QBFT round, so that we don't risk of missing the whole attestation because of that.
🎯 Problem to be solved
Previously we have introduced
chain_split_haltfeature so that Charon nodes continue QBFT rounds for attestation only if the proposed attestation has the same source and target votes as the one they have fetched. The intent of this is to protect against chain forks in scenarios of faulty CL/EL. We have purposefully excluded head votes from this, as they can differ because of purely performance reasons and it may cause unnecessarily missing of attestations.However, matching head votes can improve a cluster's head vote accuracy in cases when there is low enough latency between the nodes. If we use the same logic as
chain_split_halt, we can agree on the proposed attestation only if it has the same head vote as ours. Optionally, we can do this check only for the first and/or second QBFT round, so that we don't risk of missing the whole attestation because of that.