kona_node_service/actors/network/
config.rs1use alloy_primitives::Address;
4use discv5::Enr;
5use kona_genesis::RollupConfig;
6use kona_p2p::{GaterConfig, LocalNode};
7use kona_peers::{PeerMonitoring, PeerScoreLevel};
8use kona_sources::BlockSigner;
9use libp2p::{Multiaddr, identity::Keypair};
10use std::path::PathBuf;
11use tokio::time::Duration;
12
13#[derive(Debug, Clone)]
15pub struct NetworkConfig {
16 pub discovery_config: discv5::Config,
18 pub discovery_address: LocalNode,
21 pub discovery_interval: Duration,
23 pub discovery_randomize: Option<Duration>,
25 pub gossip_address: libp2p::Multiaddr,
27 pub unsafe_block_signer: Address,
29 pub keypair: Keypair,
31 pub gossip_config: libp2p::gossipsub::Config,
33 pub scoring: PeerScoreLevel,
35 pub topic_scoring: bool,
37 pub monitor_peers: Option<PeerMonitoring>,
39 pub bootstore: Option<PathBuf>,
41 pub gater_config: GaterConfig,
43 pub bootnodes: Vec<Enr>,
45 pub rollup_config: RollupConfig,
47 pub gossip_signer: Option<BlockSigner>,
49}
50
51impl NetworkConfig {
52 const DEFAULT_DISCOVERY_INTERVAL: Duration = Duration::from_secs(5);
53 const DEFAULT_DISCOVERY_RANDOMIZE: Option<Duration> = None;
54
55 pub fn new(
58 rollup_config: RollupConfig,
59 discovery_listen: LocalNode,
60 gossip_address: Multiaddr,
61 unsafe_block_signer: Address,
62 ) -> Self {
63 Self {
64 rollup_config,
65 discovery_config: discv5::ConfigBuilder::new((&discovery_listen).into()).build(),
66 discovery_address: discovery_listen,
67 discovery_interval: Self::DEFAULT_DISCOVERY_INTERVAL,
68 discovery_randomize: Self::DEFAULT_DISCOVERY_RANDOMIZE,
69 gossip_address,
70 unsafe_block_signer,
71 keypair: Keypair::generate_secp256k1(),
72 bootnodes: Default::default(),
73 bootstore: Default::default(),
74 gater_config: Default::default(),
75 gossip_config: Default::default(),
76 scoring: Default::default(),
77 topic_scoring: Default::default(),
78 monitor_peers: Default::default(),
79 gossip_signer: Default::default(),
80 }
81 }
82}