sigil-network · config
Source declarations, signatures and documentation for config.
Source: sigil/node/sigil-network/src/config.rs. SHA-256: e13b53ac23e6afcda0fe0e70da55f3912733308aa6a36c1b44ba2eed3b6cedcb.
This reference follows declared source modules, retains conditional attributes, and includes public declarations and implementation methods. Private-module re-exports and trait resolution require the compiler; this is a source reference, not a claim that every listed item is a root import. Function bodies and constant values are omitted.
config::NetworkConfig
Complete network configuration for a Sigil node.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct NetworkConfig {
/// P2P listen address (e.g. "0.0.0.0:26656").
pub listen_addr: String,
/// External address advertised to peers (e.g. "1.2.3.4:26656").
/// If `None`, the node will attempt to auto-detect its external address.
#[serde(default, skip_serializing_if = "Option::is_none")]
pub external_addr: Option<String>,
/// Seed node addresses for initial peer discovery.
pub seed_nodes: Vec<String>,
/// Persistent peer addresses that should always be connected.
#[serde(default)]
pub persistent_peers: Vec<String>,
/// Maximum number of inbound connections.
pub max_inbound: u32,
/// Maximum number of outbound connections.
pub max_outbound: u32,
/// NAT traversal configuration.
pub nat: NatConfig,
/// Gossipsub protocol parameters.
pub gossipsub: GossipsubConfig,
/// QUIC transaction ingress parameters.
#[serde(default)]
pub quic_ingress: QuicIngressConfig,
/// Stake-weighted sender quota parameters.
#[serde(default)]
pub stake_weighted_ingress: StakeWeightedIngressConfig,
/// Erasure-sharded block propagation parameters.
#[serde(default)]
pub block_propagation: BlockPropagationConfig,
/// Connection timeout in seconds.
pub connection_timeout_secs: u64,
/// Dial-back interval in seconds for persistent peers.
pub dial_back_interval_secs: u64,
/// Enable Kademlia DHT for peer discovery.
pub enable_dht: bool,
/// Protocol identifier prefix (e.g. "/sigil/testnet-1").
pub protocol_prefix: String
}Source line: 14.
config::NetworkConfig::testnet_default
Create a testnet network configuration with sensible defaults.
pub fn testnet_default() -> Self;Source line: 77.
config::NetworkConfig::max_peers
Total maximum peer count (inbound + outbound).
pub fn max_peers(&self) -> u32;Source line: 98.
config::NetworkConfig::validate
Validate the network configuration.
pub fn validate(&self) -> Result<(), NetworkConfigError>;Source line: 103.
config::NatConfig
NAT traversal configuration.
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct NatConfig {
/// Enable UPnP port mapping.
pub enable_upnp: bool,
/// Enable NAT-PMP port mapping.
pub enable_nat_pmp: bool,
/// Enable relay circuit for nodes behind restrictive NATs.
pub enable_relay: bool,
/// Enable hole punching for direct connections through NAT.
pub enable_hole_punching: bool
}Source line: 129.
config::GossipsubConfig
Gossipsub protocol parameters.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct GossipsubConfig {
/// Target number of peers in the mesh for each topic.
pub mesh_n: u32,
/// Minimum number of peers in the mesh before requesting more.
pub mesh_n_low: u32,
/// Maximum number of peers in the mesh before pruning excess.
pub mesh_n_high: u32,
/// Number of lazy (gossip-only) peers per topic.
pub gossip_lazy: u32,
/// Heartbeat interval in milliseconds.
pub heartbeat_interval_ms: u64,
/// Maximum message size in bytes.
pub max_message_size: u32,
/// Time-to-live for seen message deduplication cache (seconds).
pub seen_messages_ttl_secs: u64,
/// Maximum number of messages in the deduplication cache.
pub seen_messages_capacity: u32,
/// Per-topic overrides.
#[serde(default)]
pub topic_overrides: Vec<TopicConfig>
}Source line: 153.
config::GossipsubConfig::testnet_default
Testnet gossipsub defaults with smaller mesh and faster heartbeat.
pub fn testnet_default() -> Self;Source line: 193.
config::GossipsubConfig::validate
Validate gossipsub parameters.
pub fn validate(&self) -> Result<(), NetworkConfigError>;Source line: 223.
config::TopicConfig
Per-topic gossipsub parameter overrides.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct TopicConfig {
/// Which gossip topic this override applies to.
pub topic: GossipTopic,
/// Override mesh_n for this topic.
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mesh_n: Option<u32>,
/// Override mesh_n_low for this topic.
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mesh_n_low: Option<u32>,
/// Override mesh_n_high for this topic.
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mesh_n_high: Option<u32>,
/// Override max_message_size for this topic.
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_message_size: Option<u32>
}Source line: 250.
config::NetworkConfigError
Errors in network configuration.
#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
pub enum NetworkConfigError {
#[error("invalid address: {0}")]
InvalidAddress(String),
#[error("invalid peer limits: {0}")]
InvalidPeerLimits(String),
#[error("invalid timeout: {0}")]
InvalidTimeout(String),
#[error("invalid gossipsub config: {0}")]
InvalidGossipsub(String),
#[error("invalid ingress config: {0}")]
InvalidIngress(String),
#[error("invalid propagation config: {0}")]
InvalidPropagation(String),
}Source line: 269.