Skip to content

Commit d717c2d

Browse files
authored
fix: fix index bug and add blockRootLabel (#215)
Signed-off-by: Chen Kai <281165273grape@gmail.com>
1 parent 0e3e539 commit d717c2d

6 files changed

Lines changed: 29 additions & 11 deletions

File tree

packages/testing/src/consensus_testing/test_types/genesis.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from lean_spec.subspecs.containers.state import State, Validators
66
from lean_spec.subspecs.containers.validator import Validator
7-
from lean_spec.types import Bytes52, Uint64
7+
from lean_spec.types import Bytes52, Uint64, ValidatorIndex
88

99

1010
def generate_pre_state(**kwargs: Any) -> State:
@@ -24,7 +24,9 @@ def generate_pre_state(**kwargs: Any) -> State:
2424
# If validators not provided, create a default set of 4 validators with dummy pubkeys
2525
# TODO: Set an appropriate default here for test fixtures
2626
if "validators" not in kwargs:
27-
validators = Validators(data=[Validator(pubkey=Bytes52.zero()) for _ in range(4)])
27+
validators = Validators(
28+
data=[Validator(pubkey=Bytes52.zero(), index=ValidatorIndex(i)) for i in range(4)]
29+
)
2830
else:
2931
validators = kwargs["validators"]
3032

packages/testing/src/consensus_testing/test_types/step_types.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,15 @@ def serialize_block(self, value: BlockSpec) -> dict[str, Any]:
102102
ValueError
103103
If _filled_block is None (make_fixture not called yet).
104104
"""
105-
del value
106105
if self._filled_block is None:
107106
raise ValueError(
108107
"Block not filled yet - make_fixture() must be called before serialization. "
109108
"This BlockStep should only be serialized after the fixture has been processed."
110109
)
111-
return self._filled_block.to_json()
110+
result = self._filled_block.to_json()
111+
if value.label:
112+
result["blockRootLabel"] = value.label
113+
return result
112114

113115

114116
class AttestationStep(BaseForkChoiceStep):

tests/consensus/devnet/fc/test_fork_choice_reorgs.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,9 @@ def test_reorg_with_slot_gaps(
362362
"""
363363
fork_choice_test(
364364
anchor_state=generate_pre_state(
365-
validators=Validators(data=[Validator(pubkey=Bytes52.zero()) for _ in range(10)]),
365+
validators=Validators(
366+
data=[Validator(pubkey=Bytes52.zero(), index=ValidatorIndex(i)) for i in range(10)]
367+
),
366368
),
367369
steps=[
368370
# Base at slot 1
@@ -576,7 +578,9 @@ def test_reorg_prevention_heavy_fork_resists_light_competition(
576578
"""
577579
fork_choice_test(
578580
anchor_state=generate_pre_state(
579-
validators=Validators(data=[Validator(pubkey=Bytes52.zero()) for _ in range(12)])
581+
validators=Validators(
582+
data=[Validator(pubkey=Bytes52.zero(), index=ValidatorIndex(i)) for i in range(12)]
583+
)
580584
),
581585
steps=[
582586
# Common base
@@ -811,7 +815,9 @@ def test_reorg_on_newly_justified_slot(
811815
fork_choice_test(
812816
# Using 9 validators: 3 for Fork A and 6 for Fork B to achieve 2/3rd for Fork B
813817
anchor_state=generate_pre_state(
814-
validators=Validators(data=[Validator(pubkey=Bytes52.zero()) for _ in range(9)])
818+
validators=Validators(
819+
data=[Validator(pubkey=Bytes52.zero(), index=ValidatorIndex(i)) for i in range(9)]
820+
)
815821
),
816822
steps=[
817823
# Common base at slot 1

tests/consensus/devnet/state_transition/test_genesis.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,9 @@ def test_genesis_custom_validator_set(
128128
maintaining all other genesis properties.
129129
"""
130130
# Create 8 validators with unique pubkeys
131-
validators = Validators(data=[Validator(pubkey=Bytes52(bytes([i] * 52))) for i in range(8)])
131+
validators = Validators(
132+
data=[Validator(pubkey=Bytes52(bytes([i] * 52)), index=ValidatorIndex(i)) for i in range(8)]
133+
)
132134

133135
state_transition_test(
134136
pre=generate_pre_state(validators=validators),

tests/lean_spec/subspecs/forkchoice/test_time_management.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ def sample_store(sample_config: Config) -> Store:
4242
checkpoint = Checkpoint(root=genesis_hash, slot=Slot(0))
4343

4444
# Create genesis state with 10 validators for testing
45-
validators = Validators(data=[Validator(pubkey=Bytes52.zero()) for _ in range(10)])
45+
validators = Validators(
46+
data=[Validator(pubkey=Bytes52.zero(), index=ValidatorIndex(i)) for i in range(10)]
47+
)
4648
state = State.generate_genesis(
4749
genesis_time=sample_config.genesis_time,
4850
validators=validators,

tests/lean_spec/subspecs/forkchoice/test_validator.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,9 @@ def sample_state(config: Config) -> State:
5959
temp_finalized = Checkpoint(root=Bytes32(b"genesis" + b"\x00" * 25), slot=Slot(0))
6060

6161
# Create validators list with 10 validators for testing
62-
validators = Validators(data=[Validator(pubkey=Bytes52.zero()) for _ in range(10)])
62+
validators = Validators(
63+
data=[Validator(pubkey=Bytes52.zero(), index=ValidatorIndex(i)) for i in range(10)]
64+
)
6365

6466
return State(
6567
config=config,
@@ -523,7 +525,9 @@ def test_validator_operations_empty_store(self) -> None:
523525
genesis_body = BlockBody(attestations=Attestations(data=[]))
524526

525527
# Create validators list with 3 validators
526-
validators = Validators(data=[Validator(pubkey=Bytes52.zero()) for _ in range(3)])
528+
validators = Validators(
529+
data=[Validator(pubkey=Bytes52.zero(), index=ValidatorIndex(i)) for i in range(3)]
530+
)
527531

528532
# Create minimal state with temporary header
529533
checkpoint = Checkpoint.default()

0 commit comments

Comments
 (0)