1aff082eea
## Issue Addressed - #4293 - #4264 ## Proposed Changes *Changes largely follow those suggested in the main issue*. - Add new routes to HTTP API - `post_beacon_blocks_v2` - `post_blinded_beacon_blocks_v2` - Add new routes to `BeaconNodeHttpClient` - `post_beacon_blocks_v2` - `post_blinded_beacon_blocks_v2` - Define new Eth2 common types - `BroadcastValidation`, enum representing the level of validation to apply to blocks prior to broadcast - `BroadcastValidationQuery`, the corresponding HTTP query string type for the above type - ~~Define `_checked` variants of both `publish_block` and `publish_blinded_block` that enforce a validation level at a type level~~ - Add interactive tests to the `bn_http_api_tests` test target covering each validation level (to their own test module, `broadcast_validation_tests`) - `beacon/blocks` - `broadcast_validation=gossip` - Invalid (400) - Full Pass (200) - Partial Pass (202) - `broadcast_validation=consensus` - Invalid (400) - Only gossip (400) - Only consensus pass (i.e., equivocates) (200) - Full pass (200) - `broadcast_validation=consensus_and_equivocation` - Invalid (400) - Invalid due to early equivocation (400) - Only gossip (400) - Only consensus (400) - Pass (200) - `beacon/blinded_blocks` - `broadcast_validation=gossip` - Invalid (400) - Full Pass (200) - Partial Pass (202) - `broadcast_validation=consensus` - Invalid (400) - Only gossip (400) - ~~Only consensus pass (i.e., equivocates) (200)~~ - Full pass (200) - `broadcast_validation=consensus_and_equivocation` - Invalid (400) - Invalid due to early equivocation (400) - Only gossip (400) - Only consensus (400) - Pass (200) - Add a new trait, `IntoGossipVerifiedBlock`, which allows type-level guarantees to be made as to gossip validity - Modify the structure of the `ObservedBlockProducers` cache from a `(slot, validator_index)` mapping to a `((slot, validator_index), block_root)` mapping - Modify `ObservedBlockProducers::proposer_has_been_observed` to return a `SeenBlock` rather than a boolean on success - Punish gossip peer (low) for submitting equivocating blocks - Rename `BlockError::SlashablePublish` to `BlockError::SlashableProposal` ## Additional Info This PR contains changes that directly modify how blocks are verified within the client. For more context, consult [comments in-thread](https://github.com/sigp/lighthouse/pull/4316#discussion_r1234724202). Co-authored-by: Michael Sproul <michael@sigmaprime.io> |
||
---|---|---|
.. | ||
attestation_verification | ||
schema_change | ||
attestation_rewards.rs | ||
attestation_verification.rs | ||
attester_cache.rs | ||
beacon_block_reward.rs | ||
beacon_block_streamer.rs | ||
beacon_chain.rs | ||
beacon_fork_choice_store.rs | ||
beacon_proposer_cache.rs | ||
beacon_snapshot.rs | ||
block_reward.rs | ||
block_times_cache.rs | ||
block_verification.rs | ||
builder.rs | ||
canonical_head.rs | ||
capella_readiness.rs | ||
chain_config.rs | ||
early_attester_cache.rs | ||
errors.rs | ||
eth1_chain.rs | ||
eth1_finalization_cache.rs | ||
events.rs | ||
execution_payload.rs | ||
fork_choice_signal.rs | ||
fork_revert.rs | ||
head_tracker.rs | ||
historical_blocks.rs | ||
lib.rs | ||
light_client_finality_update_verification.rs | ||
light_client_optimistic_update_verification.rs | ||
merge_readiness.rs | ||
metrics.rs | ||
migrate.rs | ||
naive_aggregation_pool.rs | ||
observed_aggregates.rs | ||
observed_attesters.rs | ||
observed_block_producers.rs | ||
observed_operations.rs | ||
otb_verification_service.rs | ||
persisted_beacon_chain.rs | ||
persisted_fork_choice.rs | ||
pre_finalization_cache.rs | ||
proposer_prep_service.rs | ||
schema_change.rs | ||
shuffling_cache.rs | ||
snapshot_cache.rs | ||
state_advance_timer.rs | ||
sync_committee_rewards.rs | ||
sync_committee_verification.rs | ||
test_utils.rs | ||
timeout_rw_lock.rs | ||
validator_monitor.rs | ||
validator_pubkey_cache.rs |