Skip to content
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
159 commits
Select commit Hold shift + click to select a range
3c64dcc
initial stateless-validation flag
kevaundray Jul 2, 2025
1a372d8
add initial execution payload proof store
kevaundray Jul 2, 2025
5e56ab8
add initial code to config subnets (without having subnets)
kevaundray Jul 2, 2025
ab60fbf
Add code for proof generation + some refactor
kevaundray Jul 2, 2025
2ec002d
gossip subnet
kevaundray Jul 2, 2025
260b642
proof broadcasting
kevaundray Jul 2, 2025
9f7fca3
remove unneeded methods
kevaundray Jul 2, 2025
4b07bdf
cargo fmt
kevaundray Jul 3, 2025
42c269e
make cli
kevaundray Jul 3, 2025
bc9fa8f
add code to re-evaluate blocks when a proof arrives
kevaundray Jul 3, 2025
089cf75
avoid duplicate blocks and cleanup pending blocks after some period
kevaundray Jul 3, 2025
b372270
add TODO about orphaned proofs
kevaundray Jul 3, 2025
38cb552
short lived write lock
kevaundray Jul 3, 2025
23008f4
rough architecture doc
kevaundray Jul 4, 2025
e3071aa
log lines
kevaundray Jul 4, 2025
98e350c
add proof subnets to whitelist
kevaundray Jul 4, 2025
c63f439
All nodes subscribe to all subnets
kevaundray Jul 4, 2025
0364285
fmt
kevaundray Jul 4, 2025
82557b7
add generate-execution-proofs flag
kevaundray Jul 4, 2025
7bea51d
remove `spawn_proof_generation_task`
kevaundray Jul 4, 2025
f42ee91
execution payload instead of hash
kevaundray Jul 6, 2025
b7c1dfe
typo in logs
kevaundray Jul 6, 2025
1a5be90
add execution state witness and random proof delays
kevaundray Jul 6, 2025
b5b922e
allow min_proofs parameter
kevaundray Jul 6, 2025
7100010
add cli arg for stateless-min-proofs
kevaundray Jul 6, 2025
bdd7ad2
check node level maximum against protocol level maximum
kevaundray Jul 6, 2025
a700e3b
docs
kevaundray Jul 6, 2025
2108ca3
refactor
kevaundray Jul 6, 2025
0cc34e4
make cli
kevaundray Jul 6, 2025
8708639
cargo fmt
kevaundray Jul 6, 2025
ee48e62
commit
kevaundray Jul 8, 2025
54f9f32
update logs
kevaundray Jul 12, 2025
d2afdec
refactor loggin and add proof delay
kevaundray Jul 13, 2025
5cf853b
refactor
kevaundray Jul 13, 2025
9156429
refactor
kevaundray Jul 13, 2025
855224d
be more concise
kevaundray Jul 13, 2025
5343347
tests
kevaundray Jul 13, 2025
c497fca
decrease number of proof generators
kevaundray Jul 13, 2025
bc281d3
refactor subnet_id
kevaundray Jul 16, 2025
9fc5733
refactor code
kevaundray Jul 16, 2025
9e70570
remove timestamp
kevaundray Jul 16, 2025
3d51683
add comment on version
kevaundray Jul 16, 2025
98d01df
Make ProofId::new failable
kevaundray Jul 16, 2025
0f9a272
remove return values -- tech debt
kevaundray Jul 16, 2025
1f48d27
api cleanup
kevaundray Jul 17, 2025
c3ea66e
add separate storage for broadcast_queue
kevaundray Jul 17, 2025
8950959
refactor
kevaundray Jul 17, 2025
682741a
make state machine clearer
kevaundray Jul 17, 2025
e8ae9cb
cleanup when proofs exceed max_attempts
kevaundray Jul 17, 2025
88ce599
guard broadcaster with stateless-validation flag
kevaundray Jul 17, 2025
bc72b4f
cargo fmt
kevaundray Jul 17, 2025
3a51953
remove unused parameter
kevaundray Jul 17, 2025
8c39d67
fix
kevaundray Jul 17, 2025
c45b7f3
refactor comments
kevaundray Jul 17, 2025
3c8bdcc
refactor
kevaundray Jul 17, 2025
b1b5d64
remove outdated comment
kevaundray Jul 17, 2025
0e7bbb1
remove unused methods
kevaundray Jul 17, 2025
b649fb2
typo
kevaundray Jul 17, 2025
3fea602
small comment on take_unqueued_proofs
kevaundray Jul 17, 2025
bf99fa3
cusot -> new and remove timestamp field
kevaundray Jul 17, 2025
bf122f5
remove ExecutionPayloadProof
kevaundray Jul 17, 2025
ac6a5bc
fix rename
kevaundray Jul 17, 2025
1d3d492
cleanup
kevaundray Jul 17, 2025
66be583
fix rename to generate_proof
kevaundray Jul 17, 2025
72ee1e2
move proof generation to separate module
kevaundray Jul 17, 2025
189a01c
move proofs to execution_proof_generation
kevaundray Jul 17, 2025
cdd79ae
add comments
kevaundray Jul 17, 2025
718122b
fix comments
kevaundray Jul 17, 2025
219edb9
rename to cleanup_pending_blocks
kevaundray Jul 17, 2025
97c4b29
comment
kevaundray Jul 17, 2025
6cdc7a0
small clean up of cleanup_pending_block
kevaundray Jul 17, 2025
e496b45
add comment on 1:1 being common
kevaundray Jul 17, 2025
80e0fc6
comments
kevaundray Jul 17, 2025
9ed554c
change visibility of private methods
kevaundray Jul 17, 2025
6d3a621
refactor
kevaundray Jul 17, 2025
ca49ad3
fmt
kevaundray Jul 17, 2025
6a44879
refactor tests
kevaundray Jul 17, 2025
82763b5
make ProvenBlockInfo private
kevaundray Jul 17, 2025
4c64988
add an impl block for test methods
kevaundray Jul 17, 2025
791bb96
cargo clippy
kevaundray Jul 17, 2025
29acac5
update doc comment for ExecutionPayloadProofStore
kevaundray Jul 17, 2025
4bd7692
decrease public API and temporarily use comments to organize code
kevaundray Jul 17, 2025
2ad9161
refactor more of the logging
kevaundray Jul 17, 2025
9e7a312
pull out execution proof changes from beacon_chain.rs
kevaundray Jul 17, 2025
34bfeb3
remove `cleanup_pending_blocks_older_than` method
kevaundray Jul 17, 2025
5440f97
remove unneeded methods
kevaundray Jul 17, 2025
9551136
refactor comments
kevaundray Jul 17, 2025
611715c
remove comment
kevaundray Jul 17, 2025
40de678
comments
kevaundray Jul 17, 2025
2346b5f
fix cli flag
kevaundray Jul 17, 2025
7005acb
make proof generation async
kevaundray Jul 17, 2025
0072d08
remove unused methods
kevaundray Jul 17, 2025
2b5b870
remove debug log
kevaundray Jul 17, 2025
1b6fde7
fix test
kevaundray Jul 17, 2025
843803e
clean up logging
kevaundray Jul 17, 2025
392269a
make cli
kevaundray Jul 17, 2025
7f1eb7f
less indenting
kevaundray Jul 17, 2025
a131e06
refactor logs
kevaundray Jul 17, 2025
88c48a2
add comment on code expectation
kevaundray Jul 17, 2025
75922d7
add comment
kevaundray Jul 17, 2025
c41a475
revert
kevaundray Jul 17, 2025
7de9914
use direct method to get execution payload
kevaundray Jul 17, 2025
59df8ff
cache proof generation
kevaundray Jul 17, 2025
dfad96b
cargo fmt
kevaundray Jul 17, 2025
3f0c9de
add comment
kevaundray Jul 17, 2025
94190c6
fix
kevaundray Jul 17, 2025
ff93ee1
more notes
kevaundray Jul 17, 2025
4e99f8d
top level import
kevaundray Jul 17, 2025
4de9df0
remove debug test
kevaundray Jul 17, 2025
ab30139
rename execution_payload_proof -> execution_proof_store
kevaundray Jul 17, 2025
19b6960
refactor rest of code
kevaundray Jul 17, 2025
588ba6a
fix tests
kevaundray Jul 17, 2025
c13724a
Merge branch 'unstable' into kw/exec-proofs
kevaundray Jul 17, 2025
b187aa9
remove out of place tests
kevaundray Jul 18, 2025
f176dde
Update beacon_node/beacon_chain/src/execution_payload.rs
kevaundray Jul 18, 2025
8fbe3f5
Update beacon_node/network/src/network_beacon_processor/gossip_method…
kevaundray Jul 18, 2025
dfbd22b
DA checker (#7)
kevaundray Sep 3, 2025
5e71b02
Merge branch 'unstable' into kw/exec-proofs
kevaundray Sep 3, 2025
709fdbc
add Gloas
kevaundray Sep 3, 2025
61046fe
fix
kevaundray Sep 3, 2025
b62dc76
fmt
kevaundray Sep 3, 2025
53550d8
consolidate merge
kevaundray Sep 3, 2025
4af1147
remove alias
kevaundray Sep 3, 2025
f45d010
partial change: Availability -> Importability
kevaundray Sep 3, 2025
c92826e
ImportableProofData
kevaundray Sep 3, 2025
3189def
change version from u32 to u64
kevaundray Sep 3, 2025
100074e
revert return param
kevaundray Sep 3, 2025
70995a3
fix compile: mainly changing Availability to Importability
kevaundray Sep 3, 2025
b5df3ff
fix test
kevaundray Sep 3, 2025
3485889
make proof processing similar to blob processing
kevaundray Sep 3, 2025
41b5ff6
fmt
kevaundray Sep 3, 2025
e145533
remove debug log
kevaundray Sep 3, 2025
c4a9590
add TODO
kevaundray Sep 3, 2025
04e21dd
change payload verification status if proofs are available
kevaundray Sep 3, 2025
34ed2b5
comments
kevaundray Sep 3, 2025
5013d84
revert Importability -> Availability
kevaundray Sep 3, 2025
3fa9929
remove import
kevaundray Sep 3, 2025
06c195b
use VerifiedExecutionProof in overflow_lru_cache
kevaundray Sep 3, 2025
26ee389
fmt
kevaundray Sep 3, 2025
5ef5f5e
create proofs during publish_block workflow
kevaundray Sep 13, 2025
bf156ce
remove proof generation from execution_payload
kevaundray Sep 13, 2025
5cb92a4
fmt
kevaundray Sep 13, 2025
2d92d5c
remove now unused channel
kevaundray Sep 13, 2025
ba72507
add proof networking code to execution_proof_network
kevaundray Sep 13, 2025
37ee3e7
generate proofs when forwarding and remove now duplicated code since …
kevaundray Sep 13, 2025
1a10639
remove debugging postfix
kevaundray Sep 13, 2025
715e650
Merge pull request #12 from kevaundray/kw/networking-exec-proof
kevaundray Sep 13, 2025
4ba3974
Merge branch 'unstable' into kw/exec-proofs
kevaundray Sep 13, 2025
b7754f1
add proofs to PeerSubnetInfo
kevaundray Sep 13, 2025
6e1ad67
cargo fmt
kevaundray Sep 13, 2025
2d9c7ac
add todo
kevaundray Sep 13, 2025
0caee2d
Merge remote-tracking branch 'sigp/unstable' into kw/exec-proofs
dapplion Sep 29, 2025
6bffe33
Lion minor review changes
dapplion Sep 29, 2025
7adbdd7
delete file
kevaundray Oct 13, 2025
e84526b
Merge branch 'unstable' into kw/exec-proofs
kevaundray Oct 13, 2025
471c3a9
Add SSE
kevaundray Oct 13, 2025
ff5e23d
add ENR
kevaundray Oct 13, 2025
088741c
change number of subnets to 1
kevaundray Oct 14, 2025
ebbad4c
Review PR
dapplion Oct 27, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 12 additions & 15 deletions beacon_node/beacon_chain/src/beacon_chain.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3673,25 +3673,22 @@ impl<T: BeaconChainTypes> BeaconChain<T> {
Item = crate::execution_proof_verification::GossipVerifiedExecutionProof<T, O>,
>,
) -> Result<AvailabilityProcessingStatus, BlockError> {
// Obtain the slot from the DA checker pending components. If we don't have the
// block pending yet, return an error.
//
// Note: This assumes that we won't ask for a proof if its in the store.
let slot = self
.data_availability_checker
.get_execution_valid_block(&block_root)
.map(|b| b.slot())
// TODO: This is not an InternalError, just means we've received a proof without a block
.ok_or_else(|| {
BlockError::InternalError(
"missing block in DA checker for execution proof".to_string(),
)
})?;

let availability = self
.data_availability_checker
.put_gossip_verified_execution_proofs(block_root, execution_proofs)?;

// Note: the slot is only used for logging, default to 0 for now. The proof type may change
// in the future making the block's slot easily available.
let slot = self
.data_availability_checker
.get_cached_block(&block_root)
.map(|b| match b {
BlockProcessStatus::Unknown => Slot::new(0),
BlockProcessStatus::NotValidated(block, _)
| BlockProcessStatus::ExecutionValidated(block) => block.slot(),
})
.unwrap_or(Slot::new(0));

self.process_availability(slot, availability, || Ok(()))
.await
}
Expand Down
2 changes: 1 addition & 1 deletion beacon_node/beacon_chain/src/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -899,7 +899,7 @@ where
let genesis_time = head_snapshot.beacon_state.genesis_time();
let canonical_head = CanonicalHead::new(fork_choice, Arc::new(head_snapshot));
let shuffling_cache_size = self.chain_config.shuffling_cache_size;
let max_execution_payload_proofs = self.chain_config.max_execution_payload_proofs;
let complete_blob_backfill = self.chain_config.complete_blob_backfill;

// Calculate the weak subjectivity point in which to backfill blocks to.
let genesis_backfill_slot = if self.chain_config.genesis_backfill {
Expand Down
3 changes: 0 additions & 3 deletions beacon_node/beacon_chain/src/chain_config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,6 @@ pub struct ChainConfig {
/// Nodes that have this enabled will be used to bootstrap proofs into the subnets,
/// whether they are a proposer or not.
pub generate_execution_proofs: bool,
/// Maximum number of execution payload proofs to store in memory.
pub max_execution_payload_proofs: usize,
/// Maximum number of execution proof subnets this node will participate in.
///
/// This is a per-node configuration that must not exceed the protocol maximum
Expand Down Expand Up @@ -176,7 +174,6 @@ impl Default for ChainConfig {
optimistic_finalized_sync: true,
stateless_validation: false,
generate_execution_proofs: false,
max_execution_payload_proofs: 10_000,
max_execution_proof_subnets: 8,
stateless_min_proofs_required: 1,
shuffling_cache_size: crate::shuffling_cache::DEFAULT_CACHE_SIZE,
Expand Down
17 changes: 13 additions & 4 deletions beacon_node/beacon_chain/src/data_availability_checker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ use task_executor::TaskExecutor;
use tracing::{debug, error, instrument};
use types::blob_sidecar::{BlobIdentifier, BlobSidecar, FixedBlobSidecarList};
use types::{
BlobSidecarList, ChainSpec, DataColumnSidecar, DataColumnSidecarList, Epoch, EthSpec,
ExecutionProof, Hash256, SignedBeaconBlock, Slot,
BlobSidecarList, BlockImportSource, ChainSpec, DataColumnSidecar, DataColumnSidecarList, Epoch,
EthSpec, ExecutionProof, Hash256, SignedBeaconBlock, Slot,
};

mod error;
Expand Down Expand Up @@ -1165,7 +1165,16 @@ mod test {
let kzg = get_kzg(&spec);
let store = Arc::new(HotColdDB::open_ephemeral(<_>::default(), spec.clone()).unwrap());
let custody_context = Arc::new(CustodyContext::new(false));
DataAvailabilityChecker::new(slot_clock, kzg, store, custody_context, spec, None)
.expect("should initialise data availability checker")
let complete_blob_backfill = false;
DataAvailabilityChecker::new(
complete_blob_backfill,
slot_clock,
kzg,
store,
custody_context,
spec,
None,
)
.expect("should initialise data availability checker")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ use crate::block_verification_types::{
use crate::data_availability_checker::{Availability, AvailabilityCheckError, ImportableProofData};
use crate::data_column_verification::KzgVerifiedCustodyDataColumn;
use crate::execution_proof_verification::VerifiedExecutionProof;
use crate::{BeaconChainTypes, BlockProcessStatus};
use lighthouse_tracing::SPAN_PENDING_COMPONENTS;
use lru::LruCache;
use parking_lot::{MappedRwLockReadGuard, RwLock, RwLockReadGuard, RwLockWriteGuard};
Expand Down Expand Up @@ -211,9 +212,9 @@ impl<E: EthSpec> PendingComponents<E> {
) {
for vproof in execution_proofs {
let subnet_id = vproof.as_proof().subnet_id;
if !self.verified_execution_proofs.contains_key(&subnet_id) {
self.verified_execution_proofs.insert(subnet_id, vproof);
}
self.verified_execution_proofs
.entry(subnet_id)
.or_insert(vproof);
}
}

Expand Down
17 changes: 17 additions & 0 deletions beacon_node/beacon_chain/src/errors.rs
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,23 @@ pub enum BeaconChainError {
},
FailedToReconstructBlobs(String),
ExecutionProofError(String),
ProposerCacheIncorrectState {
state_decision_block_root: Hash256,
requested_decision_block_root: Hash256,
},
ProposerCacheAccessorFailure {
decision_block_root: Hash256,
proposal_epoch: Epoch,
},
ProposerCacheOutOfBounds {
slot: Slot,
epoch: Epoch,
},
ProposerCacheWrongEpoch {
request_epoch: Epoch,
cache_epoch: Epoch,
},
SkipProposerPreparation,
}

easy_from_to!(SlotProcessingError, BeaconChainError);
Expand Down
6 changes: 3 additions & 3 deletions beacon_node/beacon_chain/src/execution_proof_network.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
use crate::{BeaconChain, BeaconChainTypes, BlockProductionError};
use crate::{BeaconChain, BeaconChainTypes};
use std::sync::Arc;
use tracing::{debug, info, warn};
use types::{
BeaconBlockRef, BeaconStateError, ExecPayload, ExecutionPayload, ExecutionProofSubnetId,
FullPayload, FullPayloadRef, Hash256,
BeaconBlockRef, BeaconStateError, ExecutionPayload, ExecutionProofSubnetId, FullPayload,
FullPayloadRef, Hash256,
};

/// Spawn a background task to generate and store execution proofs with publishing via callback
Expand Down
15 changes: 8 additions & 7 deletions beacon_node/beacon_chain/src/execution_proof_verification.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,10 @@ use std::time::Duration;
use crate::BeaconChainError;
use crate::beacon_chain::{BeaconChain, BeaconChainTypes};
use crate::execution_proof_generation;
use crate::observed_data_sidecars::{DoNotObserve, ObservationStrategy, Observe};
use crate::observed_data_sidecars::{ObservationStrategy, Observe};
use slot_clock::SlotClock;
use tracing::debug;
use types::execution_proof_subnet_id::ExecutionProofSubnetId;
use types::{EthSpec, ExecutionProof, Hash256, Slot};
use types::{ExecutionProof, Hash256, Slot};

/// An error occurred while validating a gossip execution proof.
#[derive(Debug)]
Expand All @@ -37,12 +36,12 @@ pub enum GossipExecutionProofError {
/// The execution proof is structurally invalid.
InvalidStructure { reason: String },
/// Some other error occurred.
BeaconChainError(BeaconChainError),
BeaconChainError(Box<BeaconChainError>),
}

impl From<BeaconChainError> for GossipExecutionProofError {
fn from(e: BeaconChainError) -> Self {
Self::BeaconChainError(e)
Self::BeaconChainError(e.into())
}
}

Expand Down Expand Up @@ -161,7 +160,7 @@ impl<T: BeaconChainTypes, O: ObservationStrategy> GossipVerifiedExecutionProof<T
fn validate_execution_proof_for_gossip<T: BeaconChainTypes, O: ObservationStrategy>(
proof: Arc<ExecutionProof>,
subnet_id: ExecutionProofSubnetId,
chain: &BeaconChain<T>,
_chain: &BeaconChain<T>,
) -> Result<(), GossipExecutionProofError> {
// Check subnet ID matches
if proof.subnet_id != subnet_id {
Expand All @@ -179,7 +178,9 @@ fn validate_execution_proof_for_gossip<T: BeaconChainTypes, O: ObservationStrate
}

// TODO: Add timing validation based on slot
// TODO: Add duplicate proof detection
if O::observe() {
// TODO: Add duplicate proof detection
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Related to this, one assumption also being made is that the block will arrive before the proofs. This assumption is reasonably sound given the time it takes to create proofs, however I can see it being broken in the following cases:

  • The slot time is decreased (implying the execution payload gas limit is lowered) which would mean that proofs are created faster
  • A node is not well-connected and does not receive the block until after the proof due to network lag. This may happen more frequently for empty blocks.

One solution here would be to store proofs for blocks currentSlot + N in the future, but we would need to store the slot number also in the execution proof message because an unknown beacon root cannot tell you how far in the future it is

}
// TODO: Add block existence validation

Ok(())
Expand Down
9 changes: 4 additions & 5 deletions beacon_node/http_api/src/publish_blocks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use std::future::Future;

use beacon_chain::blob_verification::{GossipBlobError, GossipVerifiedBlob};
use beacon_chain::block_verification_types::{AsBlock, RpcBlock};
use beacon_chain::data_column_verification::{GossipDataColumnError, GossipVerifiedDataColumn};
use beacon_chain::data_column_verification::GossipVerifiedDataColumn;
use beacon_chain::execution_proof_network;
use beacon_chain::validator_monitor::{get_block_delay_ms, timestamp_now};
use beacon_chain::{
Expand All @@ -29,10 +29,9 @@ use tokio::sync::mpsc::UnboundedSender;
use tracing::{Span, debug, debug_span, error, info, instrument, warn};
use tree_hash::TreeHash;
use types::{
AbstractExecPayload, BeaconBlockRef, BeaconStateError, BlobSidecar, BlobsList,
BlockImportSource, DataColumnSubnetId, EthSpec, ExecPayload, ExecutionBlockHash,
ExecutionPayload, ForkName, FullPayload, FullPayloadBellatrix, FullPayloadRef, Hash256,
KzgProofs, SignedBeaconBlock, SignedBlindedBeaconBlock,
AbstractExecPayload, BeaconBlockRef, BlobSidecar, BlobsList, BlockImportSource,
DataColumnSubnetId, EthSpec, ExecPayload, ExecutionBlockHash, ForkName, FullPayload,
FullPayloadBellatrix, Hash256, KzgProofs, SignedBeaconBlock, SignedBlindedBeaconBlock,
};
use warp::http::StatusCode;
use warp::{Rejection, Reply, reply::Response};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,10 @@ use std::path::PathBuf;
use std::sync::Arc;
use std::time::{Duration, Instant, SystemTime, UNIX_EPOCH};
use store::hot_cold_store::HotColdDBError;
use tokio::sync::mpsc::UnboundedSender;
use tokio::sync::mpsc::error::TrySendError;
use tracing::{Instrument, Span, debug, error, info, instrument, trace, warn};
use types::{
Attestation, AttestationData, AttestationRef, AttesterSlashing, BeaconBlockRef,
BeaconStateError, BlobSidecar, DataColumnSidecar, DataColumnSubnetId, EthSpec, ExecPayload,
ExecutionPayload, ExecutionProof, ExecutionProofSubnetId, FullPayload, FullPayloadRef, Hash256,
Attestation, AttestationData, AttestationRef, AttesterSlashing, BlobSidecar, DataColumnSidecar,
DataColumnSubnetId, EthSpec, ExecPayload, ExecutionProof, ExecutionProofSubnetId, Hash256,
IndexedAttestation, LightClientFinalityUpdate, LightClientOptimisticUpdate, ProposerSlashing,
SignedAggregateAndProof, SignedBeaconBlock, SignedBlsToExecutionChange,
SignedContributionAndProof, SignedVoluntaryExit, SingleAttestation, Slot, SubnetId,
Expand Down Expand Up @@ -3369,7 +3366,6 @@ impl<T: BeaconChainTypes> NetworkBeaconProcessor<T> {
"execution_proof_validation_failed",
);
self.propagate_validation_result(message_id, peer_id, MessageAcceptance::Reject);
return;
}
Ok(availability_status) => {
match availability_status {
Expand Down
You are viewing a condensed version of this merge commit. You can view the full changes here.