mirror of
https://github.com/ethereum/consensus-specs.git
synced 2026-02-02 10:54:59 -05:00
`LightClientUpdate` structures currently use different merkle proof root depending on the presence of `finalized_header`. By always rooting it in the same state (the `attested_header.state_root`), logic gets simpler. Caveats: - In periods of extended non-finality, `update.finalized_header` may now be outdated by several sync committee periods. The old implementation rejected such updates as the `next_sync_committee` in them was stale, but the new implementation can properly handle this case. - The `next_sync_committee` can no longer be considered finalized based on `is_finality_update`. Instead, waiting until `finalized_header` is in the `attested_header`'s sync committee period is now necessary. - Because `update.finalized_header > store.finalized_header` no longer holds (for updates with finality), an `is_better_update` helper is added to improve `best_valid_update` tracking (in the past, finalized updates with supermajority participation would always directly apply) This PR builds on prior work from: - @hwwhww at https://github.com/ethereum/consensus-specs/pull/2829
17 lines
488 B
Python
17 lines
488 B
Python
from eth2spec.test.helpers.constants import ALTAIR, BELLATRIX
|
|
from eth2spec.gen_helpers.gen_from_tests.gen import run_state_test_generators
|
|
|
|
|
|
if __name__ == "__main__":
|
|
altair_mods = {key: 'eth2spec.test.altair.sync_protocol.test_' + key for key in [
|
|
'update_ranking',
|
|
]}
|
|
bellatrix_mods = altair_mods
|
|
|
|
all_mods = {
|
|
ALTAIR: altair_mods,
|
|
BELLATRIX: bellatrix_mods,
|
|
}
|
|
|
|
run_state_test_generators(runner_name="sync_protocol", all_mods=all_mods)
|