Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
abac19c
Add support for Heze block production
conache Jul 22, 2026
4b5074f
Use latest fork for state_by_root_pruned_from_fork_choice
conache Jul 22, 2026
602508c
Merge branch 'unstable' into heze-block-production
conache Jul 29, 2026
d676427
Merge branch 'unstable' into heze-block-production
conache Jul 30, 2026
6fa22e9
Merge branch 'unstable' into heze-block-production
conache Aug 1, 2026
b89aa8d
Merge branch 'unstable' into heze-block-production
conache Aug 3, 2026
d473556
Fix formatting
conache Aug 3, 2026
2476042
Merge branch 'unstable' of https://github.com/sigp/lighthouse into he…
conache Aug 4, 2026
ab96ea5
Merge branch 'unstable' into heze-block-production
conache Aug 5, 2026
fd4782e
Merge branch 'unstable' into heze-block-production
conache Aug 6, 2026
49870eb
Merge branch 'unstable' into heze-block-production
conache Aug 8, 2026
0b0cdf7
Merge branch 'unstable' into heze-block-production
conache Aug 10, 2026
d8a3403
Merge branch 'unstable' into heze-block-production
conache Aug 10, 2026
db57fb7
Add clearer comments
conache Aug 10, 2026
fd951f1
Merge branch 'unstable' into heze-block-production
conache Aug 11, 2026
02250f9
Merge branch 'unstable' into heze-block-production
conache Aug 12, 2026
448e7ba
Merge branch 'unstable' into heze-block-production
conache Aug 13, 2026
d615a12
Merge branch 'unstable' into heze-block-production
conache Aug 16, 2026
a173bf9
Merge branch 'unstable' into heze-block-production
conache Aug 17, 2026
2bc85d6
Add inclusion list gossip work type and queue
rahulbarmann Aug 18, 2026
374a34e
Wire the inclusion_list gossip topic
rahulbarmann Aug 18, 2026
f7fe75d
Merge branch 'unstable' into heze-block-production
conache Aug 18, 2026
c2ffa59
Merge branch 'unstable' into heze-block-production
conache Aug 18, 2026
736b49d
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Aug 18, 2026
18fd4f1
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Aug 20, 2026
152c09a
Merge branch 'heze-block-production' into focil-bn-il-publishing-base
conache Aug 20, 2026
8b994fb
Boostrap IL publishing in the beacon node
conache Aug 19, 2026
8772d7c
Scaffold gossip verification of inclusion lists
conache Aug 19, 2026
0608094
Wire gossip verification of inclusion lists into the il publishing ha…
conache Aug 19, 2026
c7585bd
Ensure endpoint throws before heze and while syncing
conache Aug 19, 2026
b4cb8d6
Publish inclusion list pubsub message if verification succeeded
conache Aug 19, 2026
663fdb1
Update naming and add more cleanup
conache Aug 19, 2026
c61503b
Tests: add incorrect fork name tests
conache Aug 19, 2026
5fd1a6e
Tests: add remaining Heze and pre-Heze endpoint tests
conache Aug 20, 2026
2218f67
Tests: cleanup
conache Aug 20, 2026
83db96d
Cleanup
conache Aug 20, 2026
49c5200
Remove unnecessary clone and add is_timely as part of the gossip-veri…
conache Aug 21, 2026
8414f50
Merge branch 'unstable' into heze-block-production
conache Aug 24, 2026
4e2bbd4
Merge branch 'unstable' into heze-block-production
conache Aug 24, 2026
cf7f4fd
Merge branch 'unstable' into focil-bn-il-publishing-base
conache Aug 24, 2026
bfc6943
Merge branch 'focil-bn-il-publishing-base' into focil-bn-il-publishing
conache Aug 24, 2026
3ea7ca1
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Aug 24, 2026
1f10c5a
Merge branch 'unstable' into heze-block-production
conache Aug 25, 2026
8facbaf
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Aug 25, 2026
9740cd1
Merge branch 'unstable' into heze-block-production
conache Aug 26, 2026
9cc0936
Merge branch 'unstable' into focil/il-gossip-topic
eserilev Aug 27, 2026
bfacf65
Merge branch 'unstable' into heze-block-production
conache Aug 27, 2026
9bfb7cf
Add PayloadAttributesV5
conache Aug 27, 2026
3394507
Guard inclusion list decode size and raise its queue priority
rahulbarmann Aug 27, 2026
c6386b2
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Aug 27, 2026
0c20954
Add support for engine_forkchoiceUpdatedV5
conache Aug 28, 2026
c78fc2d
Test the fcU call at the fork boundary
conache Aug 29, 2026
d0a01c3
Fix clippy error
conache Aug 29, 2026
30c1e95
Merge remote-tracking branch 'origin/unstable' into focil-add-forkcho…
conache Aug 29, 2026
3ee997c
Add engine api test
conache Aug 29, 2026
b9387af
Remove duplicate arm
conache Aug 29, 2026
4345884
Merge branch 'unstable' into focil-add-forkchoiceupdated-v5
conache Aug 29, 2026
8c625d2
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Aug 29, 2026
10f82a0
Merge branch 'unstable' into focil-add-forkchoiceupdated-v5
conache Aug 30, 2026
643c0e4
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Aug 30, 2026
75c315a
Merge branch 'unstable' into focil-add-forkchoiceupdated-v5
conache Aug 31, 2026
dda7246
Update MAX_SIGNED_INCLUSION_LIST_SIZE per consensus-specs#5576
rahulbarmann Sep 1, 2026
54fd63f
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Sep 1, 2026
a945563
Wire the inclusion list store into BeaconChain
rahulbarmann Sep 1, 2026
907c99c
Merge branch 'unstable' into heze-block-production
conache Sep 2, 2026
572afda
Merge branch 'unstable' into focil-add-forkchoiceupdated-v5
conache Sep 2, 2026
73bfb17
Handle PayloadStatusV2 in the forkchoiceUpdatedV5's call response
conache Sep 2, 2026
c7bbd48
Merge branch 'unstable' into focil-add-forkchoiceupdated-v5
conache Sep 3, 2026
96f7e7a
Merge branch 'unstable' into heze-block-production
conache Sep 3, 2026
7018347
Merge branch 'unstable' into focil/il-store-wiring
rahulbarmann Sep 3, 2026
607a53c
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Sep 3, 2026
b7806ce
Merge branch 'unstable' into heze-block-production
conache Sep 3, 2026
30b93c5
Merge branch 'unstable' into focil-add-forkchoiceupdated-v5
conache Sep 3, 2026
314ef99
Merge branch 'unstable' into focil-add-forkchoiceupdated-v5
conache Sep 4, 2026
d98c05f
Merge branch 'unstable' into heze-block-production
conache Sep 4, 2026
fd284e3
Merge focil-add-forkchoiceupdated-v5 (#9935) into focil-bp-il-wiring-…
conache Sep 4, 2026
0a93336
Merge focil/il-store-wiring (#9960) into focil-bp-il-wiring-base
conache Sep 4, 2026
3291663
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Sep 4, 2026
bdc70a1
Merge branch 'unstable' into focil/il-store-wiring
rahulbarmann Sep 4, 2026
8ad3cce
Fix complete_state_advance call the inests around the heze fork boundary
conache Sep 5, 2026
955aca6
Merge focil-add-forkchoiceupdated-v5 (#9935, state-advance test fix) …
conache Sep 5, 2026
c40c86e
Merge branch 'unstable' into heze-block-production
conache Sep 8, 2026
2eef490
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Sep 8, 2026
7463320
Merge branch 'unstable' into focil/il-store-wiring
rahulbarmann Sep 8, 2026
2723c65
Merge branch 'unstable' into focil-add-forkchoiceupdated-v5
conache Sep 8, 2026
a1a86c7
Merge branch 'focil-add-forkchoiceupdated-v5' into focil-bp-il-wiring…
conache Sep 8, 2026
cf3b6e5
Merge branch 'focil-bp-il-wiring-base' into focil-bn-il-publishing-base
conache Sep 8, 2026
da8009f
Merge remote-tracking branch 'rahulbarmann/focil/il-gossip-topic' int…
conache Sep 8, 2026
acffd0a
Merge branch 'focil-bn-il-publishing-base' into focil-bn-il-publishing
conache Sep 8, 2026
99e5a64
Merge branch 'unstable' into focil/il-store-wiring
rahulbarmann Sep 9, 2026
f1045cf
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Sep 9, 2026
d4131f4
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Sep 9, 2026
4455bcf
Merge remote-tracking branch 'upstream/unstable' into focil/il-store-…
rahulbarmann Sep 10, 2026
1abcd32
Merge branch 'unstable' into heze-block-production
conache Sep 10, 2026
c132555
Merge branch 'unstable' into focil-add-forkchoiceupdated-v5
conache Sep 10, 2026
fa07cdf
Merge branch 'heze-block-production' into focil-bp-il-wiring-base
conache Sep 10, 2026
f98deea
Merge branch 'focil-add-forkchoiceupdated-v5' into focil-bp-il-wiring…
conache Sep 10, 2026
a25d203
Merge remote-tracking branch 'rahulbarmann/focil/il-store-wiring' int…
conache Sep 10, 2026
9f48e02
Merge branch 'focil-bp-il-wiring-base' into focil-bn-il-publishing-base
conache Sep 10, 2026
9510fe6
Merge remote-tracking branch 'rahulbarmann/focil/il-gossip-topic' int…
conache Sep 10, 2026
b48ccc6
Merge branch 'focil-bn-il-publishing-base' into focil-bn-il-publishing
conache Sep 10, 2026
6f47b47
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Sep 10, 2026
76b43ba
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Sep 13, 2026
03445d4
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Sep 15, 2026
5a56dbc
Add MAX_SIGNED_INCLUSION_LIST_SIZE to the Heze preset
rahulbarmann Sep 16, 2026
d3b44f8
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Sep 16, 2026
b0106de
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Sep 16, 2026
40ce848
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Sep 16, 2026
5ab2714
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Sep 16, 2026
ec9c3a3
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Sep 18, 2026
7b6d00f
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Sep 19, 2026
8914d5d
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Sep 22, 2026
9e8c08d
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Sep 23, 2026
8b90cc4
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Sep 25, 2026
4efa3f4
Merge branch 'unstable' into focil/il-gossip-topic
rahulbarmann Sep 27, 2026
95a9ce0
Merge branch 'focil-bn-il-publishing-base' into focil-bn-il-publishing
conache Sep 28, 2026
c4560a6
Merge branch 'unstable' into focil-bn-il-publishing
conache Sep 30, 2026
19e84f0
Remove redundant clone
conache Sep 30, 2026
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
use crate::inclusion_list_verification::InclusionListVerificationError;
use crate::{BeaconChain, BeaconChainTypes};
use tracing::debug;
use types::{ChainSpec, SignedInclusionList};

pub struct GossipVerificationContext<'a, T: BeaconChainTypes> {
// TODO(heze): complete while implementing the gossip verification of inclusion lists
pub slot_clock: &'a T::SlotClock,
pub spec: &'a ChainSpec,
}

pub struct GossipVerifiedInclusionList {
pub signed_inclusion_list: SignedInclusionList,
pub is_timely: bool,
}

impl GossipVerifiedInclusionList {
pub fn new<T: BeaconChainTypes>(
signed_inclusion_list: SignedInclusionList,
_ctx: &GossipVerificationContext<'_, T>,
) -> Result<Self, InclusionListVerificationError> {
// TODO(heze): implement gossip verification for inclusion lists
Ok(Self {
signed_inclusion_list,
is_timely: true,
})
}
}

impl<T: BeaconChainTypes> BeaconChain<T> {
pub fn inclusion_list_gossip_verification_context(&self) -> GossipVerificationContext<'_, T> {
GossipVerificationContext {
slot_clock: &self.slot_clock,
spec: &self.spec,
}
}

pub fn verify_inclusion_list_for_gossip(
&self,
signed_inclusion_list: SignedInclusionList,
) -> Result<GossipVerifiedInclusionList, InclusionListVerificationError> {
let slot = signed_inclusion_list.message.slot;
let validator_index = signed_inclusion_list.message.validator_index;

let ctx = self.inclusion_list_gossip_verification_context();
match GossipVerifiedInclusionList::new(signed_inclusion_list, &ctx) {
Ok(verified) => {
debug!(
%slot,
%validator_index,
"Successfully verified gossip inclusion list"
);

// TODO(heze): emit the inclusion_list SSE event

Ok(verified)
}
Err(e) => {
debug!(
error = ?e,
%slot,
%validator_index,
"Rejected gossip inclusion list"
);
Err(e)
}
}
}
}
35 changes: 35 additions & 0 deletions beacon_node/beacon_chain/src/inclusion_list_verification/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
use crate::BeaconChainError;
use std::sync::Arc;
use types::{BeaconStateError, Slot};

pub mod gossip_verified_inclusion_list;

#[derive(Debug)]
pub enum InclusionListVerificationError {
/// Two valid inclusion lists were already seen from this validator for this slot.
AlreadySeenTwice { validator_index: u64, slot: Slot },
/// The slot clock cannot read.
UnableToReadSlot,
/// Beacon Chain error
BeaconChainError(Arc<BeaconChainError>),
/// Beacon State error
BeaconStateError(BeaconStateError),
}

impl std::fmt::Display for InclusionListVerificationError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{:?}", self)
}
}

impl From<BeaconChainError> for InclusionListVerificationError {
fn from(e: BeaconChainError) -> Self {
InclusionListVerificationError::BeaconChainError(Arc::new(e))
}
}

impl From<BeaconStateError> for InclusionListVerificationError {
fn from(e: BeaconStateError) -> Self {
InclusionListVerificationError::BeaconStateError(e)
}
}
1 change: 1 addition & 0 deletions beacon_node/beacon_chain/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ pub mod graffiti_calculator;
pub mod historical_blocks;
pub mod historical_data_columns;
pub mod inclusion_list_store;
pub mod inclusion_list_verification;
pub mod invariants;
pub mod kzg_utils;
pub mod light_client_finality_update_verification;
Expand Down
25 changes: 24 additions & 1 deletion beacon_node/http_api/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1924,6 +1924,27 @@ pub async fn serve<T: BeaconChainTypes>(
},
);

/*
* inclusion lists
*/

// POST validator/inclusion_list (JSON)
let post_validator_inclusion_list = post_validator_inclusion_list(
eth_v1.clone(),
not_while_syncing_filter.clone(),
task_spawner_filter.clone(),
chain_filter.clone(),
network_tx_filter.clone(),
);

// POST validator/inclusion_list (SSZ)
let post_validator_inclusion_list_ssz = post_validator_inclusion_list_ssz(
eth_v1.clone(),
not_while_syncing_filter.clone(),
task_spawner_filter.clone(),
chain_filter.clone(),
network_tx_filter.clone(),
);
/*
* config
*/
Expand Down Expand Up @@ -3497,7 +3518,8 @@ pub async fn serve<T: BeaconChainTypes>(
.uor(post_beacon_execution_payload_envelopes_ssz)
.uor(post_beacon_execution_payload_bids_ssz)
.uor(post_beacon_pool_payload_attestations_ssz)
.uor(post_validator_proposer_preferences_ssz),
.uor(post_validator_proposer_preferences_ssz)
.uor(post_validator_inclusion_list_ssz),
)
.uor(post_beacon_blocks)
.uor(post_beacon_blinded_blocks)
Expand All @@ -3511,6 +3533,7 @@ pub async fn serve<T: BeaconChainTypes>(
.uor(post_beacon_pool_payload_attestations)
.uor(post_beacon_pool_bls_to_execution_changes)
.uor(post_validator_proposer_preferences)
.uor(post_validator_inclusion_list)
.uor(post_beacon_execution_payload_envelopes)
.uor(post_beacon_execution_payload_bids)
.uor(post_beacon_state_validators)
Expand Down
153 changes: 149 additions & 4 deletions beacon_node/http_api/src/validator/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ use crate::utils::{
use crate::version::{V1, V2, V3, add_ssz_content_type_header, unsupported_version_rejection};
use crate::{StateId, attester_duties, proposer_duties, ptc_duties, sync_committees};
use beacon_chain::attestation_verification::VerifiedAttestation;
use beacon_chain::inclusion_list_verification::InclusionListVerificationError;
use beacon_chain::proposer_preferences_verification::ProposerPreferencesError;
use beacon_chain::{AttestationError, BeaconChain, BeaconChainError, BeaconChainTypes};
use bls::PublicKeyBytes;
Expand All @@ -33,8 +34,8 @@ use tokio::sync::oneshot;
use tracing::{debug, error, info, warn};
use types::{
BeaconState, Epoch, EthSpec, ForkName, ProposerPreparationData, SignedAggregateAndProof,
SignedContributionAndProof, SignedProposerPreferences, SignedValidatorRegistrationData, Slot,
SyncContributionData, ValidatorSubscription,
SignedContributionAndProof, SignedInclusionList, SignedProposerPreferences,
SignedValidatorRegistrationData, Slot, SyncContributionData, ValidatorSubscription,
};
use warp::{Filter, Rejection, Reply, http::response::Builder};
use warp_utils::reject::convert_rejection;
Expand Down Expand Up @@ -73,7 +74,7 @@ pub fn get_validator_sync_committee_contribution<T: BeaconChainTypes>(
.and(warp::path("sync_committee_contribution"))
.and(warp::path::end())
.and(warp::query::<SyncContributionData>())
.and(not_while_syncing_filter.clone())
.and(not_while_syncing_filter)
.and(task_spawner_filter.clone())
.and(chain_filter.clone())
.then(
Expand Down Expand Up @@ -120,7 +121,7 @@ pub fn post_validator_duties_sync<T: BeaconChainTypes>(
))
}))
.and(warp::path::end())
.and(not_while_syncing_filter.clone())
.and(not_while_syncing_filter)
.and(warp_utils::json::json())
.and(task_spawner_filter.clone())
.and(chain_filter.clone())
Expand Down Expand Up @@ -1517,3 +1518,147 @@ fn publish_proposer_preferences<T: BeaconChainTypes>(
))
}
}

/// POST validator/inclusion_list (JSON)
pub fn post_validator_inclusion_list<T: BeaconChainTypes>(
eth_v1: EthV1Filter,
not_while_syncing_filter: NotWhileSyncingFilter,
task_spawner_filter: TaskSpawnerFilter<T>,
chain_filter: ChainFilter<T>,
network_tx_filter: NetworkTxFilter<T>,
) -> ResponseFilter {
eth_v1
.and(warp::path("validator"))
.and(warp::path("inclusion_list"))
.and(warp::path::end())
.and(warp_utils::json::json())
.and(warp::header::<ForkName>(CONSENSUS_VERSION_HEADER))
.and(not_while_syncing_filter)
.and(task_spawner_filter)
.and(chain_filter)
.and(network_tx_filter)
.then(
|request_body: GenericResponse<SignedInclusionList>,
fork_name: ForkName,
not_synced_filter: Result<(), Rejection>,
task_spawner: TaskSpawner<T::EthSpec>,
chain: Arc<BeaconChain<T>>,
network_tx: UnboundedSender<NetworkMessage<T::EthSpec>>| {
task_spawner.blocking_response_task(Priority::P0, move || {
not_synced_filter?;
ensure_heze_consensus_version(fork_name)?;
publish_inclusion_list(&chain, &network_tx, request_body.data)?;
Ok(warp::reply())
})
},
)
.boxed()
}

/// POST validator/inclusion_list (SSZ)
pub fn post_validator_inclusion_list_ssz<T: BeaconChainTypes>(
eth_v1: EthV1Filter,
not_while_syncing_filter: NotWhileSyncingFilter,
task_spawner_filter: TaskSpawnerFilter<T>,
chain_filter: ChainFilter<T>,
network_tx_filter: NetworkTxFilter<T>,
) -> ResponseFilter {
eth_v1
.and(warp::path("validator"))
.and(warp::path("inclusion_list"))
.and(warp::path::end())
.and(warp::body::bytes())
.and(warp::header::<ForkName>(CONSENSUS_VERSION_HEADER))
.and(not_while_syncing_filter)
.and(task_spawner_filter)
.and(chain_filter)
.and(network_tx_filter)
.then(
|body_bytes: Bytes,
fork_name: ForkName,
not_synced_filter: Result<(), Rejection>,
task_spawner: TaskSpawner<T::EthSpec>,
chain: Arc<BeaconChain<T>>,
network_tx: UnboundedSender<NetworkMessage<T::EthSpec>>| {
task_spawner.blocking_response_task(Priority::P0, move || {
not_synced_filter?;
ensure_heze_consensus_version(fork_name)?;
let signed_inclusion_list = SignedInclusionList::from_ssz_bytes(&body_bytes)
.map_err(|e| {
warp_utils::reject::custom_bad_request(format!("invalid SSZ: {e:?}"))
})?;
publish_inclusion_list(&chain, &network_tx, signed_inclusion_list)?;
Ok(warp::reply())
})
},
)
.boxed()
}

fn ensure_heze_consensus_version(fork_name: ForkName) -> Result<(), Rejection> {
if !fork_name.heze_enabled() {
return Err(warp_utils::reject::custom_bad_request(format!(
"Eth-Consensus-Version {fork_name} is not supported for inclusion lists"
)));
}
Ok(())
}

fn publish_inclusion_list<T: BeaconChainTypes>(
chain: &BeaconChain<T>,
network_tx: &UnboundedSender<NetworkMessage<T::EthSpec>>,
signed_inclusion_list: SignedInclusionList,
) -> Result<(), warp::Rejection> {
let slot = signed_inclusion_list.message.slot;
let validator_index = signed_inclusion_list.message.validator_index;
let fork_name = chain.spec.fork_name_at_slot::<T::EthSpec>(slot);

if !fork_name.heze_enabled() {
return Err(warp_utils::reject::custom_bad_request(
"Inclusion lists publishing is not supported before the Heze fork".into(),
));
}

match chain.verify_inclusion_list_for_gossip(signed_inclusion_list) {
Ok(verified_inclusion_list) => {
crate::utils::publish_pubsub_message(
network_tx,
PubsubMessage::InclusionList(Box::new(
verified_inclusion_list.signed_inclusion_list,
)),
)?;
Ok(())
}
Err(InclusionListVerificationError::AlreadySeenTwice { .. }) => {
debug!(
%slot,
%validator_index,
"Two valid inclusion lists were already seen"
);
Ok(())
}
Err(
e @ (InclusionListVerificationError::BeaconChainError(_)
| InclusionListVerificationError::BeaconStateError(_)
| InclusionListVerificationError::UnableToReadSlot),
) => {
error!(%slot, error = ?e, "Internal error verifying inclusion list");
Err(warp_utils::reject::custom_server_error(format!(
"internal error verifying inclusion list: {e}"
)))
}
// TODO(heze): remove once the IL gossip verification errors are added to InclusionListVerificationError
#[allow(unreachable_patterns)]
Err(e) => {
warn!(
%slot,
%validator_index,
error = ?e,
"Inclusion list failed gossip verification"
);
Err(warp_utils::reject::custom_bad_request(format!(
"inclusion list failed gossip verification: {e}"
)))
}
}
}
Loading
Loading