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.