Context
PR #942 adds proposer consensus-data spec tests that require fake_crypto to run full assertions. Without it, Lighthouse's SSZ decoder rejects the invalid BLS points in ssv-spec's Capella/Deneb proposer fixtures, and the tests fall back to a path that skips block root, block SSZ, and blinded state checks.
The root cause is fixture quality in ssv-spec: the proposer fixtures use placeholder BLS values (0x000102... pubkeys, 0x606162... signatures) copied from go-eth2-client codec tests. These are correct length but not valid compressed BLS curve points. Go accepts them because its decoder only checks hex+length.
Upstream
Action
Trigger: ssv-spec #627 lands and the spec-tests JSONs are regenerated against it; bump the Anchor submodule to that revision. Then:
- Remove the
fake_crypto feature from spec_tests/Cargo.toml
- Remove the BLS fallback path in
ConsensusDataProposerTest (is_bls_validation_error handling in consensus_data_proposer.rs)
- Remove the BLS fallback path in
SSZSpecTest (is_bls_validation_error handling in ssz_spec_test.rs)
- Remove the BLS fallback in
can_decode_block (is_bls_validation_error handling in encoding_helpers.rs)
- Remove the BLS fallback in
ProposerConsensusDataTest (uses can_decode_block in proposer_consensus_data.rs)
- Remove the
is_bls_validation_error helper from encoding_helpers.rs
- Drop any CI targets that run spec tests with
--features fake_crypto
Discussion
Context
PR #942 adds proposer consensus-data spec tests that require
fake_cryptoto run full assertions. Without it, Lighthouse's SSZ decoder rejects the invalid BLS points in ssv-spec's Capella/Deneb proposer fixtures, and the tests fall back to a path that skips block root, block SSZ, and blinded state checks.The root cause is fixture quality in ssv-spec: the proposer fixtures use placeholder BLS values (
0x000102...pubkeys,0x606162...signatures) copied from go-eth2-client codec tests. These are correct length but not valid compressed BLS curve points. Go accepts them because its decoder only checks hex+length.Upstream
spec-test-ci)Action
Trigger: ssv-spec #627 lands and the spec-tests JSONs are regenerated against it; bump the Anchor submodule to that revision. Then:
fake_cryptofeature fromspec_tests/Cargo.tomlConsensusDataProposerTest(is_bls_validation_errorhandling inconsensus_data_proposer.rs)SSZSpecTest(is_bls_validation_errorhandling inssz_spec_test.rs)can_decode_block(is_bls_validation_errorhandling inencoding_helpers.rs)ProposerConsensusDataTest(usescan_decode_blockinproposer_consensus_data.rs)is_bls_validation_errorhelper fromencoding_helpers.rs--features fake_cryptoDiscussion