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
{{ message }}
Repository navigation
Commit b1f3ccd
Browse filesBrowse the repository at this point in the historyBrowse files
Merge perf/beacon-more-state-fields-on-tree (#650) into tmp/bci-626-63-64-633-636-638-gloas-live
Conflicted files:
- crates/blockchain/state_transition/src/beacon/stf/epoch/altair.rs
- crates/blockchain/state_transition/src/beacon/stf/mod.rs
- crates/common/ssz-tree/tests/model.rs
- crates/common/types/src/beacon/containers/mod.rs
- crates/common/types/src/beacon/containers/shared.rs
Gloas adaptations:
- tree_fields! gets a gloas line: validators and balances (progressive
trees) plus block_roots, state_roots, historical_roots, eth1_data_votes,
randao_mixes, slashings and historical_summaries, which gloas takes from
the shared aliases. inactivity_scores is left out on purpose: gloas
declares its own flat libssz ProgressiveList for it, which buffers
nothing, so there is nothing to flush or rebase.
- ssz-tree: ProgressiveList implements Buffered, so the field list can
hold the progressive registry beside the bounded fields.
- apply_pending_mutations / has_pending_mutations dispatch over all eight
beacon forks through buffered()/buffered_mut(); the lean guard on
has_pending_mutations is kept (the merge had dropped it with the old
registry match).
- rebase_on: the validators/balances list-kind match stays (so a gloas
state still rebases onto a gloas base only); the other fields are shared
types in every fork and rebase unconditionally; inactivity scores
rebase only for a Tree/Tree pair.
- Inactivity scores are a tree List before gloas and a flat slice-like list
in gloas, so no &[u64] can serve both. altair_validator_lists now returns
an InactivityScoresRef view (len, get, in-order iter, ptr_eq,
has_pending_updates, PartialEq) as its third element, and
inactivity_scores_mut (a &mut [u64]) becomes inactivity_score_mut(index),
an element write that dispatches over both kinds.
- stf/epoch/altair.rs update_inactivity_scores: decides over an in-order
walk of the scores (in step with the summary) and writes only changed
scores afterwards, which subsumes both #633's "write if different" and
#650's no-op skip; the error order (first eligible validator without a
score, then checked-add overflow) is unchanged.
- stf/mod.rs tests: BEACON_FORKS now includes Gloas, the historical
summaries write covers gloas, and the inactivity score case expects no
pending write on gloas. process_slot's registry check uses the new
BeaconState::registry_has_pending_updates, since the per-slot roots
writes stay buffered by design.
- storage store.rs test and the epoch-processing fixture runner comments
follow the renamed accessors.
Other: shared.rs imports both List/Vector and the progressive alias; model.rs
keeps both sides' tests (the base side was empty).
0 commit comments