mirror of
https://github.com/sigp/lighthouse.git
synced 2026-05-30 12:47:05 +00:00
add IL type, gossip kind, and pubsub message
This commit is contained in:
@@ -211,6 +211,7 @@ impl GossipCache {
|
||||
GossipKind::BlsToExecutionChange => self.bls_to_execution_change,
|
||||
GossipKind::LightClientFinalityUpdate => self.light_client_finality_update,
|
||||
GossipKind::LightClientOptimisticUpdate => self.light_client_optimistic_update,
|
||||
GossipKind::InclusionList => None,
|
||||
};
|
||||
let Some(expire_timeout) = expire_timeout else {
|
||||
return;
|
||||
|
||||
@@ -9,7 +9,7 @@ use std::sync::Arc;
|
||||
use types::{
|
||||
Attestation, AttestationBase, AttestationElectra, AttesterSlashing, AttesterSlashingBase,
|
||||
AttesterSlashingElectra, BlobSidecar, DataColumnSidecar, DataColumnSubnetId, EthSpec,
|
||||
ForkContext, ForkName, LightClientFinalityUpdate, LightClientOptimisticUpdate,
|
||||
ForkContext, ForkName, InclusionList, LightClientFinalityUpdate, LightClientOptimisticUpdate,
|
||||
ProposerSlashing, SignedAggregateAndProof, SignedAggregateAndProofBase,
|
||||
SignedAggregateAndProofElectra, SignedBeaconBlock, SignedBeaconBlockAltair,
|
||||
SignedBeaconBlockBase, SignedBeaconBlockBellatrix, SignedBeaconBlockCapella,
|
||||
@@ -45,6 +45,8 @@ pub enum PubsubMessage<E: EthSpec> {
|
||||
LightClientFinalityUpdate(Box<LightClientFinalityUpdate<E>>),
|
||||
/// Gossipsub message providing notification of a light client optimistic update.
|
||||
LightClientOptimisticUpdate(Box<LightClientOptimisticUpdate<E>>),
|
||||
/// Gossipsub message providing notification of an inclusion list.
|
||||
InclusionList(Box<InclusionList<E>>),
|
||||
}
|
||||
|
||||
// Implements the `DataTransform` trait of gossipsub to employ snappy compression
|
||||
@@ -138,6 +140,7 @@ impl<E: EthSpec> PubsubMessage<E> {
|
||||
PubsubMessage::LightClientOptimisticUpdate(_) => {
|
||||
GossipKind::LightClientOptimisticUpdate
|
||||
}
|
||||
PubsubMessage::InclusionList(_) => GossipKind::InclusionList,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -390,6 +393,11 @@ impl<E: EthSpec> PubsubMessage<E> {
|
||||
light_client_optimistic_update,
|
||||
)))
|
||||
}
|
||||
GossipKind::InclusionList => {
|
||||
let il =
|
||||
InclusionList::from_ssz_bytes(data).map_err(|e| format!("{:?}", e))?;
|
||||
Ok(PubsubMessage::InclusionList(Box::new(il)))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -416,6 +424,7 @@ impl<E: EthSpec> PubsubMessage<E> {
|
||||
PubsubMessage::BlsToExecutionChange(data) => data.as_ssz_bytes(),
|
||||
PubsubMessage::LightClientFinalityUpdate(data) => data.as_ssz_bytes(),
|
||||
PubsubMessage::LightClientOptimisticUpdate(data) => data.as_ssz_bytes(),
|
||||
PubsubMessage::InclusionList(data) => data.as_ssz_bytes(),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -477,6 +486,9 @@ impl<E: EthSpec> std::fmt::Display for PubsubMessage<E> {
|
||||
PubsubMessage::LightClientOptimisticUpdate(_data) => {
|
||||
write!(f, "Light CLient Optimistic Update")
|
||||
}
|
||||
PubsubMessage::InclusionList(_data) => {
|
||||
write!(f, "Inclusion List")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ pub const SYNC_COMMITTEE_PREFIX_TOPIC: &str = "sync_committee_";
|
||||
pub const BLS_TO_EXECUTION_CHANGE_TOPIC: &str = "bls_to_execution_change";
|
||||
pub const LIGHT_CLIENT_FINALITY_UPDATE: &str = "light_client_finality_update";
|
||||
pub const LIGHT_CLIENT_OPTIMISTIC_UPDATE: &str = "light_client_optimistic_update";
|
||||
pub const INCLUSION_LIST_TOPIC: &str = "inclusion_list";
|
||||
|
||||
pub const BASE_CORE_TOPICS: [GossipKind; 5] = [
|
||||
GossipKind::BeaconBlock,
|
||||
@@ -43,6 +44,8 @@ pub const LIGHT_CLIENT_GOSSIP_TOPICS: [GossipKind; 2] = [
|
||||
|
||||
pub const DENEB_CORE_TOPICS: [GossipKind; 0] = [];
|
||||
|
||||
pub const ELECTRA_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 {
|
||||
@@ -60,7 +63,7 @@ pub fn fork_core_topics<E: EthSpec>(fork_name: &ForkName, spec: &ChainSpec) -> V
|
||||
deneb_topics.append(&mut deneb_blob_topics);
|
||||
deneb_topics
|
||||
}
|
||||
ForkName::Electra => vec![],
|
||||
ForkName::Electra => ELECTRA_CORE_TOPICS.to_vec(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -135,6 +138,8 @@ pub enum GossipKind {
|
||||
LightClientFinalityUpdate,
|
||||
/// Topic for publishing optimistic updates for light clients.
|
||||
LightClientOptimisticUpdate,
|
||||
/// Topic for publishing inclusion lists.
|
||||
InclusionList,
|
||||
}
|
||||
|
||||
impl std::fmt::Display for GossipKind {
|
||||
@@ -217,6 +222,7 @@ impl GossipTopic {
|
||||
BLS_TO_EXECUTION_CHANGE_TOPIC => GossipKind::BlsToExecutionChange,
|
||||
LIGHT_CLIENT_FINALITY_UPDATE => GossipKind::LightClientFinalityUpdate,
|
||||
LIGHT_CLIENT_OPTIMISTIC_UPDATE => GossipKind::LightClientOptimisticUpdate,
|
||||
INCLUSION_LIST_TOPIC => GossipKind::InclusionList,
|
||||
topic => match subnet_topic_index(topic) {
|
||||
Some(kind) => kind,
|
||||
None => return Err(format!("Unknown topic: {}", topic)),
|
||||
@@ -282,6 +288,7 @@ impl std::fmt::Display for GossipTopic {
|
||||
GossipKind::BlsToExecutionChange => BLS_TO_EXECUTION_CHANGE_TOPIC.into(),
|
||||
GossipKind::LightClientFinalityUpdate => LIGHT_CLIENT_FINALITY_UPDATE.into(),
|
||||
GossipKind::LightClientOptimisticUpdate => LIGHT_CLIENT_OPTIMISTIC_UPDATE.into(),
|
||||
GossipKind::InclusionList => INCLUSION_LIST_TOPIC.into(),
|
||||
};
|
||||
write!(
|
||||
f,
|
||||
|
||||
Reference in New Issue
Block a user