mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-18 20:32:45 +00:00
* Use `E` for `EthSpec` globally * Fix tests * Merge branch 'unstable' into e-ethspec * Merge branch 'unstable' into e-ethspec # Conflicts: # beacon_node/execution_layer/src/engine_api.rs # beacon_node/execution_layer/src/engine_api/http.rs # beacon_node/execution_layer/src/engine_api/json_structures.rs # beacon_node/execution_layer/src/test_utils/handle_rpc.rs # beacon_node/store/src/partial_beacon_state.rs # consensus/types/src/beacon_block.rs # consensus/types/src/beacon_block_body.rs # consensus/types/src/beacon_state.rs # consensus/types/src/config_and_preset.rs # consensus/types/src/execution_payload.rs # consensus/types/src/execution_payload_header.rs # consensus/types/src/light_client_optimistic_update.rs # consensus/types/src/payload.rs # lcli/src/parse_ssz.rs
41 lines
1.4 KiB
Rust
41 lines
1.4 KiB
Rust
use crate::discovery::Discovery;
|
|
use crate::peer_manager::PeerManager;
|
|
use crate::rpc::{ReqId, RPC};
|
|
use crate::types::SnappyTransform;
|
|
|
|
use libp2p::identify;
|
|
use libp2p::swarm::behaviour::toggle::Toggle;
|
|
use libp2p::swarm::NetworkBehaviour;
|
|
use libp2p::upnp::tokio::Behaviour as Upnp;
|
|
use types::EthSpec;
|
|
|
|
use super::api_types::RequestId;
|
|
|
|
pub type SubscriptionFilter =
|
|
gossipsub::MaxCountSubscriptionFilter<gossipsub::WhitelistSubscriptionFilter>;
|
|
pub type Gossipsub = gossipsub::Behaviour<SnappyTransform, SubscriptionFilter>;
|
|
|
|
#[derive(NetworkBehaviour)]
|
|
pub(crate) struct Behaviour<AppReqId, E>
|
|
where
|
|
AppReqId: ReqId,
|
|
E: EthSpec,
|
|
{
|
|
/// Keep track of active and pending connections to enforce hard limits.
|
|
pub connection_limits: libp2p::connection_limits::Behaviour,
|
|
/// The peer manager that keeps track of peer's reputation and status.
|
|
pub peer_manager: PeerManager<E>,
|
|
/// The Eth2 RPC specified in the wire-0 protocol.
|
|
pub eth2_rpc: RPC<RequestId<AppReqId>, E>,
|
|
/// Discv5 Discovery protocol.
|
|
pub discovery: Discovery<E>,
|
|
/// Keep regular connection to peers and disconnect if absent.
|
|
// NOTE: The id protocol is used for initial interop. This will be removed by mainnet.
|
|
/// Provides IP addresses and peer information.
|
|
pub identify: identify::Behaviour,
|
|
/// Libp2p UPnP port mapping.
|
|
pub upnp: Toggle<Upnp>,
|
|
/// The routing pub-sub mechanism for eth2.
|
|
pub gossipsub: Gossipsub,
|
|
}
|