Skip to content

Commit d2fe172

Browse files
committed
fix Bytes32
1 parent 4a2ffbf commit d2fe172

File tree

10 files changed

+34
-38
lines changed

10 files changed

+34
-38
lines changed

packages/testing/src/consensus_testing/keys.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
TEST_SIGNATURE_SCHEME,
5656
GeneralizedXmssScheme,
5757
)
58-
from lean_spec.types import Bytes32, Uint64
58+
from lean_spec.types import Uint64
5959

6060
if TYPE_CHECKING:
6161
from collections.abc import Mapping
@@ -296,7 +296,7 @@ def build_attestation_signatures(
296296
public_keys: list[PublicKey] = [self.get_public_key(vid) for vid in validator_ids]
297297
signatures: list[Signature] = [
298298
(
299-
lookup.get(SignatureKey(vid, Bytes32(message)))
299+
lookup.get(SignatureKey(vid, message))
300300
or self.sign_attestation_data(vid, agg.data)
301301
)
302302
for vid in validator_ids

packages/testing/src/consensus_testing/test_fixtures/fork_choice.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -423,9 +423,7 @@ def _build_attestations_from_spec(
423423

424424
attestation = Attestation(validator_id=signed_att.validator_id, data=signed_att.message)
425425
attestations.append(attestation)
426-
sig_key = SignatureKey(
427-
attestation.validator_id, Bytes32(attestation.data.data_root_bytes())
428-
)
426+
sig_key = SignatureKey(attestation.validator_id, attestation.data.data_root_bytes())
429427
signature_lookup[sig_key] = signed_att.signature
430428

431429
return attestations, signature_lookup

packages/testing/src/consensus_testing/test_fixtures/state_transition.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ def _build_block_from_spec(self, spec: BlockSpec, state: State) -> tuple[Block,
264264
key_manager = get_shared_key_manager(max_slot=spec.slot)
265265
gossip_signatures = {
266266
SignatureKey(
267-
att.validator_id, Bytes32(att.data.data_root_bytes())
267+
att.validator_id, att.data.data_root_bytes()
268268
): key_manager.sign_attestation_data(
269269
att.validator_id,
270270
att.data,

packages/testing/src/consensus_testing/test_fixtures/verify_signatures.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ def _build_block_from_spec(
188188
# fixed-point collection when available_attestations/known_block_roots are used.
189189
# This might contain invalid signatures as we are not validating them here.
190190
gossip_signatures = {
191-
SignatureKey(att.validator_id, Bytes32(att.data.data_root_bytes())): sig
191+
SignatureKey(att.validator_id, att.data.data_root_bytes()): sig
192192
for att, sig in zip(attestations, attestation_signature_inputs, strict=True)
193193
}
194194

src/lean_spec/subspecs/containers/attestation/attestation.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
from lean_spec.subspecs.containers.slot import Slot
2020
from lean_spec.subspecs.ssz import hash_tree_root
21-
from lean_spec.types import Container, Uint64
21+
from lean_spec.types import Bytes32, Container, Uint64
2222

2323
from ...xmss.containers import Signature
2424
from ..checkpoint import Checkpoint
@@ -40,9 +40,9 @@ class AttestationData(Container):
4040
source: Checkpoint
4141
"""The checkpoint representing the source block as observed by the validator."""
4242

43-
def data_root_bytes(self) -> bytes:
43+
def data_root_bytes(self) -> Bytes32:
4444
"""The root of the attestation data."""
45-
return bytes(hash_tree_root(self))
45+
return hash_tree_root(self)
4646

4747

4848
class Attestation(Container):

src/lean_spec/subspecs/containers/state/state.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -613,7 +613,7 @@ def state_transition(self, block: Block, valid_signatures: bool = True) -> "Stat
613613
def _aggregate_signatures_from_gossip(
614614
self,
615615
validator_ids: list[Uint64],
616-
data_root: bytes,
616+
data_root: Bytes32,
617617
epoch: Slot,
618618
gossip_signatures: dict[SignatureKey, "Signature"] | None = None,
619619
) -> tuple[AggregatedSignatureProof, set[Uint64]] | None:
@@ -638,7 +638,7 @@ def _aggregate_signatures_from_gossip(
638638

639639
for validator_index in validator_ids:
640640
# Attempt to retrieve the signature; fail fast if any are missing.
641-
key = SignatureKey(validator_index, Bytes32(data_root))
641+
key = SignatureKey(validator_index, data_root)
642642
if (sig := gossip_signatures.get(key)) is None:
643643
missing_validator_ids.add(validator_index)
644644
continue
@@ -733,7 +733,7 @@ def build_block(
733733
data = attestation.data
734734
validator_id = attestation.validator_id
735735
data_root = data.data_root_bytes()
736-
sig_key = SignatureKey(validator_id, Bytes32(data_root))
736+
sig_key = SignatureKey(validator_id, data_root)
737737

738738
# Skip if target block is unknown
739739
if data.head.root not in known_block_roots:
@@ -873,7 +873,7 @@ def compute_aggregated_signatures(
873873
def _pick_from_aggregated_proofs(
874874
self,
875875
remaining_validator_ids: set[Uint64],
876-
data_root: bytes,
876+
data_root: Bytes32,
877877
aggregated_payloads: dict[SignatureKey, list[AggregatedSignatureProof]] | None = None,
878878
) -> tuple[AggregatedSignatureProof, set[Uint64]]:
879879
"""
@@ -901,7 +901,7 @@ def _pick_from_aggregated_proofs(
901901
best_remaining: set[Uint64] = set()
902902

903903
representative_validator_id = next(iter(remaining_validator_ids))
904-
key = SignatureKey(representative_validator_id, Bytes32(data_root))
904+
key = SignatureKey(representative_validator_id, data_root)
905905

906906
for proof in aggregated_payloads.get(key, []):
907907
participants = set(proof.participants.to_validator_indices())

src/lean_spec/subspecs/forkchoice/store.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ def on_gossip_attestation(
317317

318318
# Store signature for later lookup during block building
319319
new_gossip_sigs = dict(self.gossip_signatures)
320-
sig_key = SignatureKey(validator_id, Bytes32(attestation_data.data_root_bytes()))
320+
sig_key = SignatureKey(validator_id, attestation_data.data_root_bytes())
321321
new_gossip_sigs[sig_key] = signature
322322

323323
# Process the attestation data
@@ -573,7 +573,7 @@ def on_block(
573573
# Update Proof Map
574574
#
575575
# Store the proof so future block builders can reuse this aggregation
576-
key = SignatureKey(vid, Bytes32(data_root))
576+
key = SignatureKey(vid, data_root)
577577
new_block_proofs.setdefault(key, []).append(proof)
578578

579579
# Update Fork Choice
@@ -604,7 +604,7 @@ def on_block(
604604
# We also store the proposer's signature for potential future block building.
605605
proposer_sig_key = SignatureKey(
606606
proposer_attestation.validator_id,
607-
Bytes32(proposer_attestation.data.data_root_bytes()),
607+
proposer_attestation.data.data_root_bytes(),
608608
)
609609
new_gossip_sigs = dict(store.gossip_signatures)
610610
new_gossip_sigs[proposer_sig_key] = (

tests/lean_spec/subspecs/containers/test_state_aggregation.py

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -249,9 +249,7 @@ def test_compute_aggregated_signatures_prefers_full_gossip_payload() -> None:
249249
att_data = make_attestation_data(2, make_bytes32(3), make_bytes32(4), source=source)
250250
attestations = [Attestation(validator_id=Uint64(i), data=att_data) for i in range(2)]
251251
data_root = att_data.data_root_bytes()
252-
gossip_signatures = {
253-
SignatureKey(Uint64(i), Bytes32(data_root)): make_signature(i) for i in range(2)
254-
}
252+
gossip_signatures = {SignatureKey(Uint64(i), data_root): make_signature(i) for i in range(2)}
255253

256254
aggregated_atts, aggregated_proofs = state.compute_aggregated_signatures(
257255
attestations,
@@ -269,12 +267,12 @@ def test_compute_aggregated_signatures_splits_when_needed() -> None:
269267
att_data = make_attestation_data(3, make_bytes32(5), make_bytes32(6), source=source)
270268
attestations = [Attestation(validator_id=Uint64(i), data=att_data) for i in range(3)]
271269
data_root = att_data.data_root_bytes()
272-
gossip_signatures = {SignatureKey(Uint64(0), Bytes32(data_root)): make_signature(0)}
270+
gossip_signatures = {SignatureKey(Uint64(0), data_root): make_signature(0)}
273271

274272
block_proof = make_test_proof([Uint64(1), Uint64(2)], b"block-12")
275273
aggregated_payloads = {
276-
SignatureKey(Uint64(1), Bytes32(data_root)): [block_proof],
277-
SignatureKey(Uint64(2), Bytes32(data_root)): [block_proof],
274+
SignatureKey(Uint64(1), data_root): [block_proof],
275+
SignatureKey(Uint64(2), data_root): [block_proof],
278276
}
279277

280278
aggregated_atts, aggregated_proofs = state.compute_aggregated_signatures(
@@ -317,7 +315,7 @@ def test_build_block_collects_valid_available_attestations() -> None:
317315
attestation = Attestation(validator_id=Uint64(0), data=att_data)
318316
data_root = att_data.data_root_bytes()
319317

320-
gossip_signatures = {SignatureKey(Uint64(0), Bytes32(data_root)): make_signature(0)}
318+
gossip_signatures = {SignatureKey(Uint64(0), data_root): make_signature(0)}
321319

322320
# Proposer for slot 1 with 2 validators: slot % num_validators = 1 % 2 = 1
323321
block, post_state, aggregated_atts, aggregated_proofs = state.build_block(
@@ -453,10 +451,10 @@ def test_compute_aggregated_signatures_with_multiple_data_groups() -> None:
453451
data_root2 = att_data2.data_root_bytes()
454452

455453
gossip_signatures = {
456-
SignatureKey(Uint64(0), Bytes32(data_root1)): make_signature(0),
457-
SignatureKey(Uint64(1), Bytes32(data_root1)): make_signature(1),
458-
SignatureKey(Uint64(2), Bytes32(data_root2)): make_signature(2),
459-
SignatureKey(Uint64(3), Bytes32(data_root2)): make_signature(3),
454+
SignatureKey(Uint64(0), data_root1): make_signature(0),
455+
SignatureKey(Uint64(1), data_root1): make_signature(1),
456+
SignatureKey(Uint64(2), data_root2): make_signature(2),
457+
SignatureKey(Uint64(3), data_root2): make_signature(3),
460458
}
461459

462460
aggregated_atts, aggregated_proofs = state.compute_aggregated_signatures(
@@ -478,13 +476,13 @@ def test_compute_aggregated_signatures_falls_back_to_block_payload() -> None:
478476
data_root = att_data.data_root_bytes()
479477

480478
# Only gossip signature for validator 0 (incomplete)
481-
gossip_signatures = {SignatureKey(Uint64(0), Bytes32(data_root)): make_signature(0)}
479+
gossip_signatures = {SignatureKey(Uint64(0), data_root): make_signature(0)}
482480

483481
# Block payload covers both validators
484482
block_proof = make_test_proof([Uint64(0), Uint64(1)], b"block-fallback")
485483
aggregated_payloads = {
486-
SignatureKey(Uint64(0), Bytes32(data_root)): [block_proof],
487-
SignatureKey(Uint64(1), Bytes32(data_root)): [block_proof],
484+
SignatureKey(Uint64(0), data_root): [block_proof],
485+
SignatureKey(Uint64(1), data_root): [block_proof],
488486
}
489487

490488
aggregated_atts, aggregated_proofs = state.compute_aggregated_signatures(

tests/lean_spec/subspecs/forkchoice/test_store_attestations.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def test_on_block_processes_multi_validator_aggregations() -> None:
6060
# Store signatures in gossip_signatures
6161
data_root = attestation_data.data_root_bytes()
6262
gossip_sigs = {
63-
SignatureKey(validator_id, Bytes32(data_root)): key_manager.sign_attestation_data(
63+
SignatureKey(validator_id, data_root): key_manager.sign_attestation_data(
6464
validator_id, attestation_data
6565
)
6666
for validator_id in (Uint64(1), Uint64(2))
@@ -151,7 +151,7 @@ def test_on_block_preserves_immutability_of_aggregated_payloads() -> None:
151151
validator_id: attestation_data_1 for validator_id in (Uint64(1), Uint64(2))
152152
}
153153
gossip_sigs_1 = {
154-
SignatureKey(validator_id, Bytes32(data_root_1)): key_manager.sign_attestation_data(
154+
SignatureKey(validator_id, data_root_1): key_manager.sign_attestation_data(
155155
validator_id, attestation_data_1
156156
)
157157
for validator_id in (Uint64(1), Uint64(2))
@@ -217,7 +217,7 @@ def test_on_block_preserves_immutability_of_aggregated_payloads() -> None:
217217
validator_id: attestation_data_2 for validator_id in (Uint64(1), Uint64(2))
218218
}
219219
gossip_sigs_2 = {
220-
SignatureKey(validator_id, Bytes32(data_root_2)): key_manager.sign_attestation_data(
220+
SignatureKey(validator_id, data_root_2): key_manager.sign_attestation_data(
221221
validator_id, attestation_data_2
222222
)
223223
for validator_id in (Uint64(1), Uint64(2))

tests/lean_spec/subspecs/forkchoice/test_validator.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,8 @@ def test_produce_block_with_attestations(self, sample_store: Store) -> None:
196196
)
197197
sample_store.latest_known_attestations[Uint64(5)] = signed_5.message
198198
sample_store.latest_known_attestations[Uint64(6)] = signed_6.message
199-
sig_key_5 = SignatureKey(Uint64(5), Bytes32(signed_5.message.data_root_bytes()))
200-
sig_key_6 = SignatureKey(Uint64(6), Bytes32(signed_6.message.data_root_bytes()))
199+
sig_key_5 = SignatureKey(Uint64(5), signed_5.message.data_root_bytes())
200+
sig_key_6 = SignatureKey(Uint64(6), signed_6.message.data_root_bytes())
201201
sample_store.gossip_signatures[sig_key_5] = signed_5.signature
202202
sample_store.gossip_signatures[sig_key_6] = signed_6.signature
203203

@@ -290,7 +290,7 @@ def test_produce_block_state_consistency(self, sample_store: Store) -> None:
290290
target=sample_store.get_attestation_target(),
291291
)
292292
sample_store.latest_known_attestations[Uint64(7)] = signed_7.message
293-
sig_key_7 = SignatureKey(Uint64(7), Bytes32(signed_7.message.data_root_bytes()))
293+
sig_key_7 = SignatureKey(Uint64(7), signed_7.message.data_root_bytes())
294294
sample_store.gossip_signatures[sig_key_7] = signed_7.signature
295295

296296
store, block, _signatures = sample_store.produce_block_with_signatures(

0 commit comments

Comments
 (0)