Sigil documentation
ReferenceRust referencesigil-network

sigil-network · propagation

Source declarations, signatures and documentation for propagation.

Source: sigil/node/sigil-network/src/propagation.rs. SHA-256: 8dac13c5581f4e2aef5e7d0031392e4a4cfde473b23b72339e91595bc1554cc7.

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.

propagation::DEFAULT_BLOCK_SHARD_BYTES

Default block shard payload size.

pub const DEFAULT_BLOCK_SHARD_BYTES: usize;

Source line: 11.

propagation::DEFAULT_PROPAGATION_FANOUT

Default number of peers each shard is initially forwarded to.

pub const DEFAULT_PROPAGATION_FANOUT: usize;

Source line: 13.

propagation::DEFAULT_PARITY_SHARDS

Default parity shard count. One XOR parity shard recovers any one missing data shard in a propagation group.

pub const DEFAULT_PARITY_SHARDS: usize;

Source line: 16.

propagation::DEFAULT_MAX_BLOCK_PAYLOAD_BYTES

Default maximum serialized block payload accepted by the propagation layer.

pub const DEFAULT_MAX_BLOCK_PAYLOAD_BYTES: usize;

Source line: 18.

propagation::QuicIngressConfig

QUIC ingress transport settings.

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct QuicIngressConfig {
/// Enable QUIC listener startup in the transport layer.

pub enabled: bool,
/// UDP socket address for QUIC ingress.

pub listen_addr: String,
/// Maximum concurrently handshaking or established ingress streams.

pub max_concurrent_streams: u32,
/// Maximum bytes accepted for a single transaction envelope.

pub max_transaction_bytes: u32
}

Source line: 22.

propagation::BlockPropagationConfig

Block propagation parameters for the Turbine-equivalent fanout path.

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct BlockPropagationConfig {
/// Enable sharded block propagation.

pub enabled: bool,
/// Payload bytes per data shard.

pub shard_bytes: usize,
/// Number of parity shards emitted per block.

pub parity_shards: usize,
/// Initial peer fanout per shard.

pub fanout: usize,
/// Maximum serialized block payload accepted for propagation.

pub max_payload_bytes: usize
}

Source line: 46.

propagation::QuicIngressConfig::validate

pub fn validate(&self) -> Result<(), PropagationConfigError>;

Source line: 72.

propagation::BlockPropagationConfig::validate

pub fn validate(&self) -> Result<(), PropagationConfigError>;

Source line: 93.

propagation::PropagationConfigError

Errors raised by ingress/propagation policy validation or planning.

#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
pub enum PropagationConfigError {
    #[error("invalid QUIC ingress config: {0}")]
    InvalidQuicIngress(String),
    #[error("invalid block propagation config: {0}")]
    InvalidBlockPropagation(String),
    #[error("serialized block payload too large: {actual} bytes exceeds {max} bytes")]
    PayloadTooLarge { actual: usize, max: usize },
    #[error("block serialization failed: {0}")]
    Serialization(String),
    #[error("not enough shards to recover payload")]
    NotEnoughShards,
}

Source line: 115.

propagation::PropagationPeer

Peer metadata used for deterministic propagation fanout.

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct PropagationPeer {
pub peer_id: String,
pub did: Option<String>,
pub stake: u64
}

Source line: 130.

propagation::BlockPropagationShard

One data or parity shard of a serialized block payload.

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct BlockPropagationShard {
pub block_hash: SigilHash,
pub block_height: u64,
pub shard_index: usize,
pub data_shards: usize,
pub parity_shards: usize,
pub original_payload_len: usize,
pub payload_hash: SigilHash,
pub bytes: Vec<u8>,
pub parity: bool
}

Source line: 138.

propagation::PeerShardAssignment

Deterministic assignment of one shard to one peer.

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct PeerShardAssignment {
pub peer_id: String,
pub shard_index: usize,
pub parity: bool
}

Source line: 152.

propagation::BlockPropagationPlan

Complete transport-independent propagation plan.

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct BlockPropagationPlan {
pub block_hash: SigilHash,
pub block_height: u64,
pub payload_hash: SigilHash,
pub shards: Vec<BlockPropagationShard>,
pub assignments: Vec<PeerShardAssignment>
}

Source line: 160.

propagation::plan_block_propagation

Build deterministic shards and peer assignments for a block.

pub fn plan_block_propagation(
    block: &Block,
    peers: &[PropagationPeer],
    config: &BlockPropagationConfig,
) -> Result<BlockPropagationPlan, PropagationConfigError>;

Source line: 169.

propagation::recover_payload_from_shards

Recover the original serialized block payload from data shards and, if one data shard is missing, one XOR parity shard.

pub fn recover_payload_from_shards(
    shards: &[BlockPropagationShard],
) -> Result<Vec<u8>, PropagationConfigError>;

Source line: 269.

On this page