mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-06 18:21:45 +00:00
## Issue Addressed Resolves #2278 ## Proposed Changes Implements the networking components for the Altair hard fork https://github.com/ethereum/eth2.0-specs/blob/dev/specs/altair/p2p-interface.md ## Additional Info This PR acts as the base branch for networking changes and tracks https://github.com/sigp/lighthouse/pull/2279 . Changes to gossip, rpc and discovery can be separate PRs to be merged here for ease of review. Co-authored-by: realbigsean <seananderson33@gmail.com>
51 lines
1.7 KiB
Rust
51 lines
1.7 KiB
Rust
pub mod attestation_subnets;
|
|
pub mod sync_subnets;
|
|
|
|
use eth2_libp2p::{Subnet, SubnetDiscovery};
|
|
|
|
pub use attestation_subnets::AttestationService;
|
|
pub use sync_subnets::SyncCommitteeService;
|
|
|
|
#[cfg(test)]
|
|
mod tests;
|
|
|
|
#[derive(Debug, Clone)]
|
|
pub enum SubnetServiceMessage {
|
|
/// Subscribe to the specified subnet id.
|
|
Subscribe(Subnet),
|
|
/// Unsubscribe to the specified subnet id.
|
|
Unsubscribe(Subnet),
|
|
/// Add the `SubnetId` to the ENR bitfield.
|
|
EnrAdd(Subnet),
|
|
/// Remove the `SubnetId` from the ENR bitfield.
|
|
EnrRemove(Subnet),
|
|
/// Discover peers for a list of `SubnetDiscovery`.
|
|
DiscoverPeers(Vec<SubnetDiscovery>),
|
|
}
|
|
|
|
/// Note: This `PartialEq` impl is for use only in tests.
|
|
/// The `DiscoverPeers` comparison is good enough for testing only.
|
|
#[cfg(test)]
|
|
impl PartialEq for SubnetServiceMessage {
|
|
fn eq(&self, other: &SubnetServiceMessage) -> bool {
|
|
match (self, other) {
|
|
(SubnetServiceMessage::Subscribe(a), SubnetServiceMessage::Subscribe(b)) => a == b,
|
|
(SubnetServiceMessage::Unsubscribe(a), SubnetServiceMessage::Unsubscribe(b)) => a == b,
|
|
(SubnetServiceMessage::EnrAdd(a), SubnetServiceMessage::EnrAdd(b)) => a == b,
|
|
(SubnetServiceMessage::EnrRemove(a), SubnetServiceMessage::EnrRemove(b)) => a == b,
|
|
(SubnetServiceMessage::DiscoverPeers(a), SubnetServiceMessage::DiscoverPeers(b)) => {
|
|
if a.len() != b.len() {
|
|
return false;
|
|
}
|
|
for i in 0..a.len() {
|
|
if a[i].subnet != b[i].subnet || a[i].min_ttl != b[i].min_ttl {
|
|
return false;
|
|
}
|
|
}
|
|
true
|
|
}
|
|
_ => false,
|
|
}
|
|
}
|
|
}
|