From 778eb53a0e65ff3127e7d739c3a37cd81dbc5c49 Mon Sep 17 00:00:00 2001 From: Thomas Coratger Date: Sat, 21 Mar 2026 23:48:01 +0100 Subject: [PATCH] block: rename message to block in SignedBlock --- .../test_fixtures/fork_choice.py | 4 +- .../test_fixtures/verify_signatures.py | 2 +- .../subspecs/containers/block/block.py | 6 +-- src/lean_spec/subspecs/forkchoice/store.py | 2 +- .../subspecs/networking/service/service.py | 2 +- src/lean_spec/subspecs/sync/block_cache.py | 2 +- src/lean_spec/subspecs/sync/head_sync.py | 8 ++-- src/lean_spec/subspecs/sync/service.py | 8 ++-- src/lean_spec/subspecs/validator/service.py | 2 +- .../devnet/ssz/test_consensus_containers.py | 2 +- tests/lean_spec/helpers/builders.py | 4 +- tests/lean_spec/helpers/mocks.py | 8 ++-- .../forkchoice/test_attestation_target.py | 2 +- .../forkchoice/test_compute_block_weights.py | 12 ++--- .../networking/client/test_reqresp_client.py | 10 ++-- .../networking/reqresp/test_handler.py | 20 ++++---- .../networking/test_network_service.py | 10 ++-- tests/lean_spec/subspecs/ssz/test_block.py | 2 +- .../subspecs/sync/test_block_cache.py | 16 +++---- .../lean_spec/subspecs/sync/test_head_sync.py | 46 +++++++++---------- tests/lean_spec/subspecs/sync/test_service.py | 2 +- .../subspecs/validator/test_service.py | 22 ++++----- 22 files changed, 96 insertions(+), 96 deletions(-) diff --git a/packages/testing/src/consensus_testing/test_fixtures/fork_choice.py b/packages/testing/src/consensus_testing/test_fixtures/fork_choice.py index 988f1ced..f6fe3325 100644 --- a/packages/testing/src/consensus_testing/test_fixtures/fork_choice.py +++ b/packages/testing/src/consensus_testing/test_fixtures/fork_choice.py @@ -263,7 +263,7 @@ def make_fixture(self) -> Self: ) # Store the filled block for serialization. - block = signed_block.message + block = signed_block.block step._filled_block = block # Register labeled blocks for fork building. @@ -449,7 +449,7 @@ def _build_block_from_spec( # Assemble the signed block. return SignedBlock( - message=final_block, + block=final_block, signature=BlockSignatures( attestation_signatures=attestation_signatures_blob, proposer_signature=proposer_signature, diff --git a/packages/testing/src/consensus_testing/test_fixtures/verify_signatures.py b/packages/testing/src/consensus_testing/test_fixtures/verify_signatures.py index a8823b99..3c249926 100644 --- a/packages/testing/src/consensus_testing/test_fixtures/verify_signatures.py +++ b/packages/testing/src/consensus_testing/test_fixtures/verify_signatures.py @@ -286,7 +286,7 @@ def _build_block_from_spec( proposer_signature = create_dummy_signature() return SignedBlock( - message=final_block, + block=final_block, signature=BlockSignatures( attestation_signatures=attestation_signatures, proposer_signature=proposer_signature, diff --git a/src/lean_spec/subspecs/containers/block/block.py b/src/lean_spec/subspecs/containers/block/block.py index 42e0b148..39950611 100644 --- a/src/lean_spec/subspecs/containers/block/block.py +++ b/src/lean_spec/subspecs/containers/block/block.py @@ -89,7 +89,7 @@ class BlockSignatures(Container): class SignedBlock(Container): """Envelope carrying a block and its aggregated signatures.""" - message: Block + block: Block """The block being signed.""" signature: BlockSignatures @@ -116,9 +116,9 @@ def verify_signatures( Raises: AssertionError: On verification failure. """ - block = self.message + block = self.block signatures = self.signature - aggregated_attestations = block.body.attestations + aggregated_attestations = self.block.body.attestations attestation_signatures = signatures.attestation_signatures # Each attestation in the body must have a corresponding signature entry. diff --git a/src/lean_spec/subspecs/forkchoice/store.py b/src/lean_spec/subspecs/forkchoice/store.py index 4b4b18a3..eab10ea2 100644 --- a/src/lean_spec/subspecs/forkchoice/store.py +++ b/src/lean_spec/subspecs/forkchoice/store.py @@ -489,7 +489,7 @@ def on_block( Raises: AssertionError: If parent block/state not found in store. """ - block = signed_block.message + block = signed_block.block block_root = hash_tree_root(block) # Skip duplicate blocks (idempotent operation) diff --git a/src/lean_spec/subspecs/networking/service/service.py b/src/lean_spec/subspecs/networking/service/service.py index fe31fd4c..764b80c5 100644 --- a/src/lean_spec/subspecs/networking/service/service.py +++ b/src/lean_spec/subspecs/networking/service/service.py @@ -212,7 +212,7 @@ async def publish_block(self, block: SignedBlock) -> None: compressed = compress(ssz_bytes) await self.event_source.publish(topic.to_topic_id(), compressed) - logger.debug("Published block at slot %s", block.message.slot) + logger.debug("Published block at slot %s", block.block.slot) async def publish_attestation( self, attestation: SignedAttestation, subnet_id: SubnetId diff --git a/src/lean_spec/subspecs/sync/block_cache.py b/src/lean_spec/subspecs/sync/block_cache.py index 2fe5d833..9e8fb2d2 100644 --- a/src/lean_spec/subspecs/sync/block_cache.py +++ b/src/lean_spec/subspecs/sync/block_cache.py @@ -186,7 +186,7 @@ def add( Returns: The PendingBlock wrapper, either newly created or existing. """ - block_inner = block.message + block_inner = block.block root = hash_tree_root(block_inner) # Deduplication: if we already have this block, return the existing entry. diff --git a/src/lean_spec/subspecs/sync/head_sync.py b/src/lean_spec/subspecs/sync/head_sync.py index 2aee3e3f..7fd41f8e 100644 --- a/src/lean_spec/subspecs/sync/head_sync.py +++ b/src/lean_spec/subspecs/sync/head_sync.py @@ -161,7 +161,7 @@ async def on_gossip_block( Tuple of (result describing what happened, updated store). The store is unchanged if the block was cached. """ - block_inner = block.message + block_inner = block.block block_root = hash_tree_root(block_inner) parent_root = block_inner.parent_root slot = block_inner.slot @@ -234,8 +234,8 @@ async def _process_block_with_descendants( Returns: Result and updated store. """ - block_root = hash_tree_root(block.message) - slot = block.message.slot + block_root = hash_tree_root(block.block) + slot = block.block.slot self._processing.add(block_root) try: @@ -366,7 +366,7 @@ async def _cache_and_backfill( Returns: Result indicating the block was cached, and unchanged store. """ - block_inner = block.message + block_inner = block.block parent_root = block_inner.parent_root # Add to cache. diff --git a/src/lean_spec/subspecs/sync/service.py b/src/lean_spec/subspecs/sync/service.py index a2992cbf..328b63fa 100644 --- a/src/lean_spec/subspecs/sync/service.py +++ b/src/lean_spec/subspecs/sync/service.py @@ -272,7 +272,7 @@ def _process_block_wrapper( # This is write-through: data is persisted synchronously after processing. # The database call is optional - nodes can run without persistence. if self.database is not None: - self._persist_block(new_store, block.message) + self._persist_block(new_store, block.block) return new_store @@ -423,7 +423,7 @@ async def on_gossip_block( logger.info( "Block received from peer %s slot=%s (state=%s)", peer_id, - block.message.slot, + block.block.slot, self._state.name, ) @@ -445,8 +445,8 @@ async def on_gossip_block( # # A block may be cached instead of processed if its parent is unknown. if result.processed: - slot = block.message.slot - block_root = hash_tree_root(block.message) + slot = block.block.slot + block_root = hash_tree_root(block.block) logger.info( "Block processed slot=%s root=%s from peer %s", slot, diff --git a/src/lean_spec/subspecs/validator/service.py b/src/lean_spec/subspecs/validator/service.py index 704bd864..c26d5124 100644 --- a/src/lean_spec/subspecs/validator/service.py +++ b/src/lean_spec/subspecs/validator/service.py @@ -405,7 +405,7 @@ def _sign_block( ) return SignedBlock( - message=block, + block=block, signature=signature, ) diff --git a/tests/consensus/devnet/ssz/test_consensus_containers.py b/tests/consensus/devnet/ssz/test_consensus_containers.py index 1359668c..a9b768e4 100644 --- a/tests/consensus/devnet/ssz/test_consensus_containers.py +++ b/tests/consensus/devnet/ssz/test_consensus_containers.py @@ -297,7 +297,7 @@ def test_signed_block_minimal(ssz: SSZTestFiller) -> None: ) ssz( type_name="SignedBlock", - value=SignedBlock(message=block, signature=signature), + value=SignedBlock(block=block, signature=signature), ) diff --git a/tests/lean_spec/helpers/builders.py b/tests/lean_spec/helpers/builders.py index 3efd7393..726bdb2a 100644 --- a/tests/lean_spec/helpers/builders.py +++ b/tests/lean_spec/helpers/builders.py @@ -214,7 +214,7 @@ def make_signed_block( ) return SignedBlock( - message=block, + block=block, signature=BlockSignatures( attestation_signatures=AttestationSignatures(data=[]), proposer_signature=make_mock_signature(), @@ -458,7 +458,7 @@ def make_signed_block_from_store( attestation_signatures = key_manager.build_attestation_signatures(block.body.attestations) signed_block = SignedBlock( - message=block, + block=block, signature=BlockSignatures( attestation_signatures=attestation_signatures, proposer_signature=proposer_signature, diff --git a/tests/lean_spec/helpers/mocks.py b/tests/lean_spec/helpers/mocks.py index d462731a..15450852 100644 --- a/tests/lean_spec/helpers/mocks.py +++ b/tests/lean_spec/helpers/mocks.py @@ -48,7 +48,7 @@ async def request_block_by_root( def add_block(self, block: SignedBlock) -> Bytes32: """Add a block to the mock network. Returns its root.""" - root = hash_tree_root(block.message) + root = hash_tree_root(block.block) self.blocks_by_root[root] = block return root @@ -119,10 +119,10 @@ def on_block( **kwargs: object, ) -> MockForkchoiceStore: """Track block additions. Returns self for assignment chaining.""" - root = hash_tree_root(block.message) - self.blocks[root] = block.message + root = hash_tree_root(block.block) + self.blocks[root] = block.block self.head = root - self.head_slot = block.message.slot + self.head_slot = block.block.slot return self def on_gossip_attestation( diff --git a/tests/lean_spec/subspecs/forkchoice/test_attestation_target.py b/tests/lean_spec/subspecs/forkchoice/test_attestation_target.py index 9f188a25..98b262a1 100644 --- a/tests/lean_spec/subspecs/forkchoice/test_attestation_target.py +++ b/tests/lean_spec/subspecs/forkchoice/test_attestation_target.py @@ -558,7 +558,7 @@ def test_attestation_target_after_on_block( proposer_signature = key_manager.sign_block_root(proposer_1, slot_1, block_root) signed_block = SignedBlock( - message=block, + block=block, signature=BlockSignatures( attestation_signatures=AttestationSignatures(data=signatures), proposer_signature=proposer_signature, diff --git a/tests/lean_spec/subspecs/forkchoice/test_compute_block_weights.py b/tests/lean_spec/subspecs/forkchoice/test_compute_block_weights.py index 4a4289ea..148a993e 100644 --- a/tests/lean_spec/subspecs/forkchoice/test_compute_block_weights.py +++ b/tests/lean_spec/subspecs/forkchoice/test_compute_block_weights.py @@ -36,7 +36,7 @@ def test_linear_chain_weight_accumulates_upward(base_store: Store) -> None: parent_root=genesis_root, state_root=make_bytes32(10), ) - block1_root = hash_tree_root(block1.message) + block1_root = hash_tree_root(block1.block) block2 = make_signed_block( slot=Slot(2), @@ -44,11 +44,11 @@ def test_linear_chain_weight_accumulates_upward(base_store: Store) -> None: parent_root=block1_root, state_root=make_bytes32(20), ) - block2_root = hash_tree_root(block2.message) + block2_root = hash_tree_root(block2.block) new_blocks = dict(base_store.blocks) - new_blocks[block1_root] = block1.message - new_blocks[block2_root] = block2.message + new_blocks[block1_root] = block1.block + new_blocks[block2_root] = block2.block new_states = dict(base_store.states) genesis_state = base_store.states[genesis_root] @@ -93,10 +93,10 @@ def test_multiple_attestations_accumulate(base_store: Store) -> None: parent_root=genesis_root, state_root=make_bytes32(10), ) - block1_root = hash_tree_root(block1.message) + block1_root = hash_tree_root(block1.block) new_blocks = dict(base_store.blocks) - new_blocks[block1_root] = block1.message + new_blocks[block1_root] = block1.block new_states = dict(base_store.states) new_states[block1_root] = base_store.states[genesis_root] diff --git a/tests/lean_spec/subspecs/networking/client/test_reqresp_client.py b/tests/lean_spec/subspecs/networking/client/test_reqresp_client.py index a7fb5ab4..f3e25870 100644 --- a/tests/lean_spec/subspecs/networking/client/test_reqresp_client.py +++ b/tests/lean_spec/subspecs/networking/client/test_reqresp_client.py @@ -291,7 +291,7 @@ async def test_request_single_block_success(self) -> None: blocks = await client.request_blocks_by_root(peer_id, roots) assert len(blocks) == 1 - assert blocks[0].message.slot == Slot(10) + assert blocks[0].block.slot == Slot(10) async def test_request_multiple_blocks_success(self) -> None: """Successfully request multiple blocks.""" @@ -312,7 +312,7 @@ async def test_request_multiple_blocks_success(self) -> None: blocks = await client.request_blocks_by_root(peer_id, roots) assert len(blocks) == 2 - slots = {b.message.slot for b in blocks} + slots = {b.block.slot for b in blocks} assert Slot(10) in slots assert Slot(20) in slots @@ -335,7 +335,7 @@ async def test_request_blocks_partial_response(self) -> None: # Only one block returned, RESOURCE_UNAVAILABLE continues reading assert len(blocks) == 1 - assert blocks[0].message.slot == Slot(10) + assert blocks[0].block.slot == Slot(10) async def test_request_blocks_empty_request(self) -> None: """Empty root list returns empty without request.""" @@ -535,7 +535,7 @@ async def test_blocks_codec_error_stops_reading(self) -> None: # Only block before codec error is returned assert len(blocks) == 1 - assert blocks[0].message.slot == Slot(10) + assert blocks[0].block.slot == Slot(10) class TestReqRespClientConcurrency: @@ -615,7 +615,7 @@ async def test_concurrent_mixed_requests(self) -> None: assert status is not None assert status.head.slot == Slot(200) assert len(blocks) == 1 - assert blocks[0].message.slot == Slot(42) + assert blocks[0].block.slot == Slot(42) class TestReqRespClientStreamLifecycle: diff --git a/tests/lean_spec/subspecs/networking/reqresp/test_handler.py b/tests/lean_spec/subspecs/networking/reqresp/test_handler.py index 41282410..538e42e8 100644 --- a/tests/lean_spec/subspecs/networking/reqresp/test_handler.py +++ b/tests/lean_spec/subspecs/networking/reqresp/test_handler.py @@ -271,8 +271,8 @@ async def lookup(root: Bytes32) -> SignedBlock | None: decoded1 = SignedBlock.decode_bytes(response.successes[0]) decoded2 = SignedBlock.decode_bytes(response.successes[1]) - assert decoded1.message.slot == Slot(1) - assert decoded2.message.slot == Slot(2) + assert decoded1.block.slot == Slot(1) + assert decoded2.block.slot == Slot(2) async def test_handle_blocks_by_root_skips_missing_blocks(self) -> None: """Missing blocks are silently skipped.""" @@ -359,7 +359,7 @@ async def lookup(root: Bytes32) -> SignedBlock | None: assert len(response.successes) == 1 decoded = SignedBlock.decode_bytes(response.successes[0]) - assert decoded.message.slot == Slot(2) + assert decoded.block.slot == Slot(2) class TestReqRespServer: @@ -423,7 +423,7 @@ async def lookup(root: Bytes32) -> SignedBlock | None: assert code == ResponseCode.SUCCESS returned_block = SignedBlock.decode_bytes(ssz_data) - assert returned_block.message.slot == Slot(1) + assert returned_block.block.slot == Slot(1) async def test_empty_request_returns_error(self) -> None: """Empty request data returns INVALID_REQUEST error.""" @@ -618,7 +618,7 @@ async def lookup(root: Bytes32) -> SignedBlock | None: blocks.append(SignedBlock.decode_bytes(ssz_bytes)) assert len(blocks) == 2 - slots = {b.message.slot for b in blocks} + slots = {b.block.slot for b in blocks} assert Slot(10) in slots assert Slot(20) in slots @@ -652,7 +652,7 @@ async def lookup(root: Bytes32) -> SignedBlock | None: # Only one block returned assert len(blocks) == 1 - assert blocks[0].message.slot == Slot(10) + assert blocks[0].block.slot == Slot(10) class TestStreamResponseAdapterMultipleResponses: @@ -876,7 +876,7 @@ async def lookup(r: Bytes32) -> SignedBlock | None: assert len(response.successes) == 1 decoded = SignedBlock.decode_bytes(response.successes[0]) - assert decoded.message.slot == Slot(999) + assert decoded.block.slot == Slot(999) async def test_blocks_by_root_all_missing(self) -> None: """Request where all blocks are missing returns no success responses.""" @@ -938,8 +938,8 @@ async def lookup(root: Bytes32) -> SignedBlock | None: decoded1 = SignedBlock.decode_bytes(response.successes[0]) decoded2 = SignedBlock.decode_bytes(response.successes[1]) - assert decoded1.message.slot == Slot(1) - assert decoded2.message.slot == Slot(3) + assert decoded1.block.slot == Slot(1) + assert decoded2.block.slot == Slot(3) async def test_status_update_after_initialization(self) -> None: """Status can be updated after handler creation.""" @@ -1039,7 +1039,7 @@ async def lookup(r: Bytes32) -> SignedBlock | None: block_result = SignedBlock.decode_bytes(ssz_data) assert status_result.head.slot == Slot(200) - assert block_result.message.slot == Slot(42) + assert block_result.block.slot == Slot(42) class MockFailingStream: diff --git a/tests/lean_spec/subspecs/networking/test_network_service.py b/tests/lean_spec/subspecs/networking/test_network_service.py index bcfdc5eb..59b97aee 100644 --- a/tests/lean_spec/subspecs/networking/test_network_service.py +++ b/tests/lean_spec/subspecs/networking/test_network_service.py @@ -67,7 +67,7 @@ async def test_block_added_to_store_blocks_dict( parent_root=genesis_root, state_root=Bytes32.zero(), ) - block_root = hash_tree_root(block.message) + block_root = hash_tree_root(block.block) # Verify block is NOT in store before processing assert block_root not in sync_service.store.blocks @@ -105,7 +105,7 @@ async def test_store_head_updated_after_block( parent_root=genesis_root, state_root=Bytes32.zero(), ) - expected_new_head = hash_tree_root(block.message) + expected_new_head = hash_tree_root(block.block) events: list[NetworkEvent] = [ GossipBlockEvent(block=block, peer_id=peer_id, topic=block_topic), @@ -342,7 +342,7 @@ async def test_full_sync_flow_status_then_block( parent_root=genesis_root, state_root=Bytes32.zero(), ) - expected_head = hash_tree_root(block.message) + expected_head = hash_tree_root(block.block) events: list[NetworkEvent] = [ PeerStatusEvent(peer_id=peer_id, status=status), @@ -425,7 +425,7 @@ async def test_multiple_blocks_chain_extension( parent_root=genesis_root, state_root=Bytes32.zero(), ) - block1_root = hash_tree_root(block1.message) + block1_root = hash_tree_root(block1.block) block2 = make_signed_block( slot=Slot(2), @@ -433,7 +433,7 @@ async def test_multiple_blocks_chain_extension( parent_root=block1_root, state_root=Bytes32.zero(), ) - block2_root = hash_tree_root(block2.message) + block2_root = hash_tree_root(block2.block) events: list[NetworkEvent] = [ GossipBlockEvent(block=block1, peer_id=peer_id, topic=block_topic), diff --git a/tests/lean_spec/subspecs/ssz/test_block.py b/tests/lean_spec/subspecs/ssz/test_block.py index 3fcf45f8..c684de1f 100644 --- a/tests/lean_spec/subspecs/ssz/test_block.py +++ b/tests/lean_spec/subspecs/ssz/test_block.py @@ -24,7 +24,7 @@ def test_encode_decode_signed_block_roundtrip() -> None: ) signed_block = SignedBlock( - message=block, + block=block, signature=BlockSignatures( attestation_signatures=AttestationSignatures(data=[]), proposer_signature=make_mock_signature(), diff --git a/tests/lean_spec/subspecs/sync/test_block_cache.py b/tests/lean_spec/subspecs/sync/test_block_cache.py index 3e7da14d..b0512c69 100644 --- a/tests/lean_spec/subspecs/sync/test_block_cache.py +++ b/tests/lean_spec/subspecs/sync/test_block_cache.py @@ -26,13 +26,13 @@ def test_create_pending_block(self, peer_id: PeerId) -> None: parent_root=Bytes32.zero(), state_root=Bytes32.zero(), ) - root = hash_tree_root(block.message) + root = hash_tree_root(block.block) pending = PendingBlock( block=block, root=root, - parent_root=block.message.parent_root, - slot=block.message.slot, + parent_root=block.block.parent_root, + slot=block.block.slot, received_from=peer_id, ) @@ -55,7 +55,7 @@ def test_pending_block_default_received_at(self, peer_id: PeerId) -> None: parent_root=Bytes32.zero(), state_root=Bytes32.zero(), ) - root = hash_tree_root(block.message) + root = hash_tree_root(block.block) pending = PendingBlock( block=block, @@ -76,7 +76,7 @@ def test_pending_block_custom_backfill_depth(self, peer_id: PeerId) -> None: parent_root=Bytes32.zero(), state_root=Bytes32.zero(), ) - root = hash_tree_root(block.message) + root = hash_tree_root(block.block) pending = PendingBlock( block=block, @@ -120,7 +120,7 @@ def test_add_block(self, peer_id: PeerId) -> None: pending = cache.add(block, peer_id) - root = hash_tree_root(block.message) + root = hash_tree_root(block.block) assert len(cache) == 1 assert pending == PendingBlock( block=block, @@ -713,7 +713,7 @@ def test_add_with_backfill_depth(self, peer_id: PeerId) -> None: pending = cache.add(block, peer_id, backfill_depth=10) - root = hash_tree_root(block.message) + root = hash_tree_root(block.block) assert pending == PendingBlock( block=block, root=root, @@ -736,7 +736,7 @@ def test_add_default_backfill_depth_is_zero(self, peer_id: PeerId) -> None: pending = cache.add(block, peer_id) - root = hash_tree_root(block.message) + root = hash_tree_root(block.block) assert pending == PendingBlock( block=block, root=root, diff --git a/tests/lean_spec/subspecs/sync/test_head_sync.py b/tests/lean_spec/subspecs/sync/test_head_sync.py index 85cc08b8..91b68f1a 100644 --- a/tests/lean_spec/subspecs/sync/test_head_sync.py +++ b/tests/lean_spec/subspecs/sync/test_head_sync.py @@ -52,7 +52,7 @@ async def test_block_with_known_parent_processed_immediately( processed_blocks: list[Bytes32] = [] def track_processing(s: Any, block: SignedBlock) -> Any: - root = hash_tree_root(block.message) + root = hash_tree_root(block.block) processed_blocks.append(root) new_store = MockStore(set(s.blocks.keys()) | {root}) return new_store @@ -69,7 +69,7 @@ def track_processing(s: Any, block: SignedBlock) -> Any: parent_root=genesis_root, state_root=Bytes32.zero(), ) - block_root = hash_tree_root(block.message) + block_root = hash_tree_root(block.block) result, new_store = await head_sync.on_gossip_block(block, peer_id, store) @@ -103,7 +103,7 @@ async def test_block_with_unknown_parent_cached_and_triggers_backfill( parent_root=unknown_parent, state_root=Bytes32.zero(), ) - block_root = hash_tree_root(block.message) + block_root = hash_tree_root(block.block) result, _ = await head_sync.on_gossip_block(block, peer_id, store) @@ -132,8 +132,8 @@ async def test_duplicate_block_skipped( parent_root=genesis_root, state_root=Bytes32.zero(), ) - block_root = hash_tree_root(block.message) - store.blocks[block_root] = block.message + block_root = hash_tree_root(block.block) + store.blocks[block_root] = block.block process_block = MagicMock() head_sync = HeadSync( @@ -174,7 +174,7 @@ async def test_cached_children_processed_when_parent_arrives( parent_root=genesis_root, state_root=Bytes32(b"\x01" * 32), ) - parent_root = hash_tree_root(parent.message) + parent_root = hash_tree_root(parent.block) child = make_signed_block( slot=Slot(2), @@ -182,7 +182,7 @@ async def test_cached_children_processed_when_parent_arrives( parent_root=parent_root, state_root=Bytes32(b"\x02" * 32), ) - child_root = hash_tree_root(child.message) + child_root = hash_tree_root(child.block) # Pre-cache the child (waiting for parent) block_cache.add(child, peer_id) @@ -190,7 +190,7 @@ async def test_cached_children_processed_when_parent_arrives( processing_order: list[Bytes32] = [] def track_processing(s: Any, block: SignedBlock) -> Any: - root = hash_tree_root(block.message) + root = hash_tree_root(block.block) processing_order.append(root) new_store = MockStore(set(s.blocks.keys()) | {root}) return new_store @@ -235,7 +235,7 @@ async def test_chain_of_descendants_processed_in_slot_order( state_root=Bytes32(bytes([i]) * 32), ) blocks.append(block) - parent_root = hash_tree_root(block.message) + parent_root = hash_tree_root(block.block) # Cache all except the first (which will be gossiped) for block in blocks[1:]: @@ -244,8 +244,8 @@ async def test_chain_of_descendants_processed_in_slot_order( processing_order: list[int] = [] def track_processing(s: Any, block: SignedBlock) -> Any: - processing_order.append(int(block.message.slot)) - root = hash_tree_root(block.message) + processing_order.append(int(block.block.slot)) + root = hash_tree_root(block.block) new_store = MockStore(set(s.blocks.keys()) | {root}) return new_store @@ -303,7 +303,7 @@ async def test_processes_all_blocks_with_known_parents( def count_processing(s: Any, block: SignedBlock) -> Any: nonlocal processed_count processed_count += 1 - root = hash_tree_root(block.message) + root = hash_tree_root(block.block) new_store = MockStore(set(s.blocks.keys()) | {root}) return new_store @@ -336,7 +336,7 @@ async def test_processing_failure_removes_block_from_cache( parent_root=genesis_root, state_root=Bytes32.zero(), ) - block_root = hash_tree_root(block.message) + block_root = hash_tree_root(block.block) block_cache.add(block, peer_id) def fail_processing(s: Any, b: SignedBlock) -> Any: @@ -429,7 +429,7 @@ async def test_sibling_error_does_not_block_other_siblings( def fail_first(s: Any, block: SignedBlock) -> Any: nonlocal call_count call_count += 1 - root = hash_tree_root(block.message) + root = hash_tree_root(block.block) if call_count == 1: raise Exception("First fails") successful_roots.add(root) @@ -470,7 +470,7 @@ async def test_store_propagated_through_descendant_chain( parent_root=genesis_root, state_root=Bytes32(b"\x01" * 32), ) - parent_root = hash_tree_root(parent.message) + parent_root = hash_tree_root(parent.block) child1 = make_signed_block( slot=Slot(2), @@ -478,7 +478,7 @@ async def test_store_propagated_through_descendant_chain( parent_root=parent_root, state_root=Bytes32(b"\x02" * 32), ) - child1_root = hash_tree_root(child1.message) + child1_root = hash_tree_root(child1.block) child2 = make_signed_block( slot=Slot(3), @@ -486,14 +486,14 @@ async def test_store_propagated_through_descendant_chain( parent_root=child1_root, state_root=Bytes32(b"\x03" * 32), ) - child2_root = hash_tree_root(child2.message) + child2_root = hash_tree_root(child2.block) # Pre-cache descendants. block_cache.add(child1, peer_id) block_cache.add(child2, peer_id) def track_processing(s: Any, block: SignedBlock) -> Any: - root = hash_tree_root(block.message) + root = hash_tree_root(block.block) new_store = MockStore(set(s.blocks.keys()) | {root}) return new_store @@ -539,7 +539,7 @@ async def test_reentrant_call_returns_not_processed( parent_root=genesis_root, state_root=Bytes32.zero(), ) - block_root = hash_tree_root(block.message) + block_root = hash_tree_root(block.block) # Simulate reentrant call by pre-adding to _processing. head_sync._processing.add(block_root) @@ -577,7 +577,7 @@ async def test_chain_processed_in_single_call( parent_root=genesis_root, state_root=Bytes32(b"\x01" * 32), ) - root_a = hash_tree_root(block_a.message) + root_a = hash_tree_root(block_a.block) block_b = make_signed_block( slot=Slot(2), @@ -585,7 +585,7 @@ async def test_chain_processed_in_single_call( parent_root=root_a, state_root=Bytes32(b"\x02" * 32), ) - root_b = hash_tree_root(block_b.message) + root_b = hash_tree_root(block_b.block) block_c = make_signed_block( slot=Slot(3), @@ -601,8 +601,8 @@ async def test_chain_processed_in_single_call( processing_order: list[int] = [] def track_processing(s: Any, block: SignedBlock) -> Any: - processing_order.append(int(block.message.slot)) - root = hash_tree_root(block.message) + processing_order.append(int(block.block.slot)) + root = hash_tree_root(block.block) new_store = MockStore(set(s.blocks.keys()) | {root}) return new_store diff --git a/tests/lean_spec/subspecs/sync/test_service.py b/tests/lean_spec/subspecs/sync/test_service.py index 3f53e57d..807ed523 100644 --- a/tests/lean_spec/subspecs/sync/test_service.py +++ b/tests/lean_spec/subspecs/sync/test_service.py @@ -217,7 +217,7 @@ async def test_caches_orphan_in_syncing_state( parent_root=Bytes32(b"\x01" * 32), state_root=Bytes32.zero(), ) - block_root = hash_tree_root(block.message) + block_root = hash_tree_root(block.block) await sync_service.on_gossip_block(block, peer_id) diff --git a/tests/lean_spec/subspecs/validator/test_service.py b/tests/lean_spec/subspecs/validator/test_service.py index f2a2e6e1..3301bb36 100644 --- a/tests/lean_spec/subspecs/validator/test_service.py +++ b/tests/lean_spec/subspecs/validator/test_service.py @@ -510,17 +510,17 @@ async def capture_block(block: SignedBlock) -> None: signed_block = blocks_produced[0] # Verify block structure - assert signed_block.message.slot == Slot(1) - assert signed_block.message.proposer_index == ValidatorIndex(1) + assert signed_block.block.slot == Slot(1) + assert signed_block.block.proposer_index == ValidatorIndex(1) # Verify proposer signature is cryptographically valid - proposer_index = signed_block.message.proposer_index - block_root = hash_tree_root(signed_block.message) + proposer_index = signed_block.block.proposer_index + block_root = hash_tree_root(signed_block.block) proposer_public_key = key_manager[proposer_index].proposal_public is_valid = TARGET_SIGNATURE_SCHEME.verify( pk=proposer_public_key, - slot=signed_block.message.slot, + slot=signed_block.block.slot, message=block_root, sig=signed_block.signature.proposer_signature, ) @@ -642,13 +642,13 @@ async def capture_block(block: SignedBlock) -> None: assert len(blocks_produced) == 1 signed_block = blocks_produced[0] - proposer_index = signed_block.message.proposer_index - block_root = hash_tree_root(signed_block.message) + proposer_index = signed_block.block.proposer_index + block_root = hash_tree_root(signed_block.block) public_key = key_manager[proposer_index].proposal_public is_valid = TARGET_SIGNATURE_SCHEME.verify( pk=public_key, - slot=signed_block.message.slot, + slot=signed_block.block.slot, message=block_root, sig=signed_block.signature.proposer_signature, ) @@ -724,7 +724,7 @@ async def capture_block(block: SignedBlock) -> None: signed_block = blocks_produced[0] # Block should contain the pending attestations - body_attestations = signed_block.message.body.attestations + body_attestations = signed_block.block.body.attestations assert len(body_attestations) > 0 # Verify the attestation signatures are included and valid @@ -811,7 +811,7 @@ async def capture_attestation(attestation: SignedAttestation) -> None: # One block should be produced assert len(blocks_produced) == 1 - assert blocks_produced[0].message.proposer_index == proposer_index + assert blocks_produced[0].block.proposer_index == proposer_index # ALL validators should have attested (including proposer) attestation_validator_ids = {att.validator_id for att in attestations_produced} @@ -845,7 +845,7 @@ async def capture_block(block: SignedBlock) -> None: await service._maybe_produce_block(Slot(4)) assert len(blocks_produced) == 1 - produced_block = blocks_produced[0].message + produced_block = blocks_produced[0].block # The state root should not be zero (it was computed) assert produced_block.state_root != Bytes32.zero()