mirror of
https://github.com/sigp/lighthouse.git
synced 2026-06-15 09:48:20 +00:00
Add more testing, additional checks
This commit is contained in:
@@ -2178,6 +2178,8 @@ impl<T: BeaconChainTypes> BeaconChain<T> {
|
||||
.await
|
||||
.map_err(|e| Error::ExecutionLayerGetInclusionListFailed(Box::new(e)))?;
|
||||
|
||||
debug!(self.log, "Inclusion list fetched from EL"; "tx_count" => inclusion_list.len());
|
||||
|
||||
Ok(Some(inclusion_list))
|
||||
}
|
||||
|
||||
@@ -2373,11 +2375,8 @@ impl<T: BeaconChainTypes> BeaconChain<T> {
|
||||
})
|
||||
}
|
||||
|
||||
/// Accepts some `Attestation` from the network and attempts to verify it, returning `Ok(_)` if
|
||||
/// Accepts some `inclusion_list` from the network and attempts to verify it, returning `Ok(_)` if
|
||||
/// it is valid to be (re)broadcast on the gossip network.
|
||||
///
|
||||
/// The attestation must be "unaggregated", that is it must have exactly one
|
||||
/// aggregation bit set.
|
||||
pub fn verify_inclusion_list_for_gossip(
|
||||
&self,
|
||||
inclusion_list: &SignedInclusionList<T::EthSpec>,
|
||||
@@ -7393,9 +7392,10 @@ impl<T: BeaconChainTypes> BeaconChain<T> {
|
||||
}
|
||||
|
||||
pub fn on_verified_inclusion_list(&self, signed_il: SignedInclusionList<T::EthSpec>) {
|
||||
debug!(self.log, "Adding verified inclusion list to the cache");
|
||||
self.inclusion_list_cache
|
||||
.write()
|
||||
.on_inclusion_list(signed_il);
|
||||
.on_inclusion_list(signed_il, &self.log);
|
||||
}
|
||||
|
||||
pub fn metrics(&self) -> BeaconChainMetrics {
|
||||
|
||||
@@ -103,11 +103,21 @@ impl<T: BeaconChainTypes> PayloadNotifier<T> {
|
||||
Some(PayloadVerificationStatus::Irrelevant)
|
||||
};
|
||||
|
||||
let inclusion_list_transactions = chain
|
||||
.inclusion_list_cache
|
||||
.read()
|
||||
.get_inclusion_list_transactions(block.slot())
|
||||
.unwrap_or(vec![].into());
|
||||
let inclusion_list_transactions = if chain
|
||||
.spec
|
||||
.is_focil_enabled_for_epoch(block.slot().epoch(T::EthSpec::slots_per_epoch()))
|
||||
{
|
||||
let inclusion_list_transactions = chain
|
||||
.inclusion_list_cache
|
||||
.read()
|
||||
.get_inclusion_list_transactions(block.slot())
|
||||
.unwrap_or(vec![].into());
|
||||
|
||||
debug!(chain.log, "Adding inclusion list transactions in the Payload Notifier"; "count" => inclusion_list_transactions.len());
|
||||
inclusion_list_transactions
|
||||
} else {
|
||||
vec![].into()
|
||||
};
|
||||
|
||||
Ok(Self {
|
||||
chain,
|
||||
|
||||
@@ -64,8 +64,14 @@ pub async fn publish_inclusion_lists<T: BeaconChainTypes>(
|
||||
&network_tx,
|
||||
&inner_log,
|
||||
) {
|
||||
Ok(()) => PublishInclusionListResult::Success,
|
||||
Err(e) => PublishInclusionListResult::Failure(e),
|
||||
Ok(()) => {
|
||||
debug!(inner_log, "Successfully verified gossip inclusion list");
|
||||
PublishInclusionListResult::Success
|
||||
},
|
||||
Err(e) => {
|
||||
debug!(inner_log, "Failed to verify gossip inclusion list"; "error" => format!("{:?}", e));
|
||||
PublishInclusionListResult::Failure(e)
|
||||
},
|
||||
}
|
||||
})
|
||||
.map(Some)
|
||||
|
||||
@@ -257,6 +257,7 @@ pub(crate) fn create_whitelist_filter(
|
||||
add(BlsToExecutionChange);
|
||||
add(LightClientFinalityUpdate);
|
||||
add(LightClientOptimisticUpdate);
|
||||
add(InclusionList);
|
||||
for id in 0..spec.attestation_subnet_count {
|
||||
add(Attestation(SubnetId::new(id)));
|
||||
}
|
||||
|
||||
@@ -42,6 +42,8 @@ pub const LIGHT_CLIENT_GOSSIP_TOPICS: [GossipKind; 2] = [
|
||||
GossipKind::LightClientOptimisticUpdate,
|
||||
];
|
||||
|
||||
pub const FULU_CORE_TOPICS: [GossipKind; 1] = [GossipKind::InclusionList];
|
||||
|
||||
/// Returns the core topics associated with each fork that are new to the previous fork
|
||||
pub fn fork_core_topics<E: EthSpec>(fork_name: &ForkName, spec: &ChainSpec) -> Vec<GossipKind> {
|
||||
match fork_name {
|
||||
@@ -63,13 +65,9 @@ pub fn fork_core_topics<E: EthSpec>(fork_name: &ForkName, spec: &ChainSpec) -> V
|
||||
for i in 0..spec.blob_sidecar_subnet_count(ForkName::Electra) {
|
||||
electra_blob_topics.push(GossipKind::BlobSidecar(i));
|
||||
}
|
||||
|
||||
if spec.is_focil_scheduled() {
|
||||
electra_blob_topics.push(GossipKind::InclusionList)
|
||||
}
|
||||
electra_blob_topics
|
||||
}
|
||||
ForkName::Fulu => vec![],
|
||||
ForkName::Fulu => FULU_CORE_TOPICS.to_vec(),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user