Skip to content

Commit 69d39e7

Browse files
authored
types: cleanup bitfields implementation (leanEthereum#50)
* types: cleanup bitfields implementation * better doc * some doc fixes * make justified_slots a bitlist * make justifications_validators a bitlist * linter fix
1 parent 36f4d2c commit 69d39e7

5 files changed

Lines changed: 307 additions & 191 deletions

File tree

src/lean_spec/subspecs/containers/state.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from lean_spec.subspecs.ssz.hash import hash_tree_root
1111
from lean_spec.types import Boolean, Bytes32, Container, Uint64, ValidatorIndex
1212
from lean_spec.types import List as SSZList
13+
from lean_spec.types.bitfields import Bitlist
1314

1415
from .block import Block, BlockBody, BlockHeader, SignedBlock
1516
from .checkpoint import Checkpoint
@@ -43,17 +44,16 @@ class State(Container):
4344
historical_block_hashes: SSZList[Bytes32, DEVNET_CONFIG.historical_roots_limit.as_int()] # type: ignore
4445
"""A list of historical block root hashes."""
4546

46-
justified_slots: SSZList[Boolean, DEVNET_CONFIG.historical_roots_limit.as_int()] # type: ignore
47+
justified_slots: Bitlist[DEVNET_CONFIG.historical_roots_limit.as_int()] # type: ignore
4748
"""A bitfield indicating which historical slots were justified."""
4849

4950
# Justification tracking (flattened for SSZ compatibility)
5051
justifications_roots: SSZList[Bytes32, DEVNET_CONFIG.historical_roots_limit.as_int()] # type: ignore
5152
"""Roots of justified blocks."""
5253

53-
justifications_validators: SSZList[ # type: ignore
54-
Boolean,
54+
justifications_validators: Bitlist[ # type: ignore[valid-type, type-arg]
5555
DEVNET_CONFIG.historical_roots_limit.as_int()
56-
* DEVNET_CONFIG.historical_roots_limit.as_int(),
56+
* DEVNET_CONFIG.historical_roots_limit.as_int()
5757
]
5858
"""A bitlist of validators who participated in justifications."""
5959

0 commit comments

Comments
 (0)