Sigil documentation
ReferenceRust referencesigil-network

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.

On this page