Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
19 changes: 18 additions & 1 deletion src/types/pubsub.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ use types::{
},
primitives::{ForkDigest, SubnetId},
},
eip7805::{InclusionList, SignedInclusionList},
preset::Preset,
traits::SignedBeaconBlock as _,
};
Expand Down Expand Up @@ -70,6 +71,8 @@ pub enum PubsubMessage<P: Preset> {
LightClientFinalityUpdate(Box<LightClientFinalityUpdate<P>>),
/// Gossipsub message providing notification of a light client optimistic update.
LightClientOptimisticUpdate(Box<LightClientOptimisticUpdate<P>>),
/// Gossipsub message providing notification of a signed inclusion list.
SignedInclusionList(Arc<SignedInclusionList>),
}

// Implements the `DataTransform` trait of gossipsub to employ snappy compression
Expand Down Expand Up @@ -171,7 +174,8 @@ impl<P: Preset> PubsubMessage<P> {
PubsubMessage::LightClientFinalityUpdate(_) => GossipKind::LightClientFinalityUpdate,
PubsubMessage::LightClientOptimisticUpdate(_) => {
GossipKind::LightClientOptimisticUpdate
}
},
PubsubMessage::SignedInclusionList(_) => GossipKind::SignedInclusionList,
}
}

Expand Down Expand Up @@ -498,6 +502,14 @@ impl<P: Preset> PubsubMessage<P> {
light_client_optimistic_update,
)))
}
GossipKind::SignedInclusionList => {
let signed_inclusion_list =
SignedInclusionList::from_ssz_default(data)
.map_err(|e| format!("{:?}", e))?;
Ok(PubsubMessage::SignedInclusionList(Arc::new(
signed_inclusion_list,
)))
}
}
}
}
Expand Down Expand Up @@ -525,6 +537,7 @@ impl<P: Preset> PubsubMessage<P> {
PubsubMessage::BlsToExecutionChange(data) => data.to_ssz(),
PubsubMessage::LightClientFinalityUpdate(data) => data.to_ssz(),
PubsubMessage::LightClientOptimisticUpdate(data) => data.to_ssz(),
PubsubMessage::SignedInclusionList(data) => data.to_ssz(),
}
}
}
Expand Down Expand Up @@ -594,6 +607,10 @@ impl<P: Preset> std::fmt::Display for PubsubMessage<P> {
PubsubMessage::LightClientOptimisticUpdate(_data) => {
write!(f, "Light CLient Optimistic Update")
}
PubsubMessage::SignedInclusionList(_) => {
write!(f, "Signed Inclusion List")
},

}
}
}
6 changes: 6 additions & 0 deletions src/types/topics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,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 SIGNED_INCLUSION_LIST: &str = "inclusion_list";

pub const BASE_CORE_TOPICS: [GossipKind; 5] = [
GossipKind::BeaconBlock,
Expand Down Expand Up @@ -158,6 +159,8 @@ pub enum GossipKind {
LightClientFinalityUpdate,
/// Topic for publishing optimistic updates for light clients.
LightClientOptimisticUpdate,
/// Topic for publishing inclusion list.
SignedInclusionList,
}

impl std::fmt::Display for GossipKind {
Expand Down Expand Up @@ -239,6 +242,7 @@ impl GossipTopic {
BLS_TO_EXECUTION_CHANGE_TOPIC => GossipKind::BlsToExecutionChange,
LIGHT_CLIENT_FINALITY_UPDATE => GossipKind::LightClientFinalityUpdate,
LIGHT_CLIENT_OPTIMISTIC_UPDATE => GossipKind::LightClientOptimisticUpdate,
SIGNED_INCLUSION_LIST => GossipKind::SignedInclusionList,
topic => match subnet_topic_index(topic) {
Some(kind) => kind,
None => return Err(format!("Unknown topic: {}", topic)),
Expand Down Expand Up @@ -304,6 +308,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::SignedInclusionList => SIGNED_INCLUSION_LIST.into(),
};
write!(
f,
Expand Down Expand Up @@ -375,6 +380,7 @@ mod tests {
VoluntaryExit,
ProposerSlashing,
AttesterSlashing,
SignedInclusionList,
]
.iter()
{
Expand Down