You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This issue stems from insufficient future attestation handling in Teku spec test. In Teku, it has an attestation scheduling so the future slot attestations can be deferred until their slot in the past. However, Teku's spec test environment does not fully support future attestations, i.e., it cannot defer attestations more than one slot. Teku assigns one of the two states for incoming future slot attestation. The first state is DEFER_FOR_FORK_CHOICE, indicating that the attestation should be handled in the next slot. The other state is SAVED_FOR_FUTURE, which is used to save attestations that should be handled after several slots in the future. Teku's fork-choice testing environment supports DEFER_FOR_FORK_CHOICE state attestations but not SAVED_FOR_FUTURE state attestations. This results in test cases with attestations attesting the future after the one slot failing in Teku tester. See scenario below.
Steps to Reproduce
Scenario
Assumption: No attestation except Attestation X and Y, or B and C has same vote.
Steps:
N N+1 N+2 N+3
[A] – [B] – [ ] – [ ]
\ [ ] – [C] – [ ]
Slot N : Block A
Slot N+1 : Block B (parent: A)
Slot N+2 : Block C (parent also A)
Receive Attestation_0 from validator X of slot N+4 (attesting block B)
Slot N+4 : Check head
Expect: head is B due to Teku can handle deferred attestation (later ignored)
Result: Teku decide with tie-break rule
Description
This issue stems from insufficient future attestation handling in Teku spec test. In Teku, it has an attestation scheduling so the future slot attestations can be deferred until their slot in the past. However, Teku's spec test environment does not fully support future attestations, i.e., it cannot defer attestations more than one slot. Teku assigns one of the two states for incoming future slot attestation. The first state is
DEFER_FOR_FORK_CHOICE
, indicating that the attestation should be handled in the next slot. The other state isSAVED_FOR_FUTURE
, which is used to save attestations that should be handled after several slots in the future. Teku's fork-choice testing environment supportsDEFER_FOR_FORK_CHOICE
state attestations but notSAVED_FOR_FUTURE
state attestations. This results in test cases with attestations attesting the future after the one slot failing in Teku tester. See scenario below.Steps to Reproduce
Scenario
Assumption: No attestation except Attestation X and Y, or B and C has same vote.
Steps:
Expect: head is B due to Teku can handle deferred attestation (later ignored)
Result: Teku decide with tie-break rule
Reference: deferredAttestations, futureAttestations
The text was updated successfully, but these errors were encountered: