Add option to disable EB tx cache backpressure
Home /
Input Output /
ouroboros-leios-sim
Mar 25, 9-10 AM (3)
Mar 25, 10-11 AM (0)
Mar 25, 11-12 PM (1)
Mar 25, 12-1 PM (26)
Mar 25, 1-2 PM (0)
Mar 25, 2-3 PM (2)
Mar 25, 3-4 PM (0)
Mar 25, 4-5 PM (0)
Mar 25, 5-6 PM (0)
Mar 25, 6-7 PM (1)
Mar 25, 7-8 PM (0)
Mar 25, 8-9 PM (0)
Mar 25, 9-10 PM (0)
Mar 25, 10-11 PM (0)
Mar 25, 11-12 AM (0)
Mar 26, 12-1 AM (0)
Mar 26, 1-2 AM (0)
Mar 26, 2-3 AM (0)
Mar 26, 3-4 AM (0)
Mar 26, 4-5 AM (0)
Mar 26, 5-6 AM (0)
Mar 26, 6-7 AM (0)
Mar 26, 7-8 AM (1)
Mar 26, 8-9 AM (1)
Mar 26, 9-10 AM (4)
Mar 26, 10-11 AM (1)
Mar 26, 11-12 PM (5)
Mar 26, 12-1 PM (3)
Mar 26, 1-2 PM (2)
Mar 26, 2-3 PM (1)
Mar 26, 3-4 PM (2)
Mar 26, 4-5 PM (2)
Mar 26, 5-6 PM (1)
Mar 26, 6-7 PM (0)
Mar 26, 7-8 PM (0)
Mar 26, 8-9 PM (0)
Mar 26, 9-10 PM (0)
Mar 26, 10-11 PM (0)
Mar 26, 11-12 AM (0)
Mar 27, 12-1 AM (0)
Mar 27, 1-2 AM (0)
Mar 27, 2-3 AM (0)
Mar 27, 3-4 AM (0)
Mar 27, 4-5 AM (0)
Mar 27, 5-6 AM (0)
Mar 27, 6-7 AM (0)
Mar 27, 7-8 AM (0)
Mar 27, 8-9 AM (0)
Mar 27, 9-10 AM (1)
Mar 27, 10-11 AM (0)
Mar 27, 11-12 PM (0)
Mar 27, 12-1 PM (0)
Mar 27, 1-2 PM (0)
Mar 27, 2-3 PM (0)
Mar 27, 3-4 PM (0)
Mar 27, 4-5 PM (0)
Mar 27, 5-6 PM (0)
Mar 27, 6-7 PM (0)
Mar 27, 7-8 PM (0)
Mar 27, 8-9 PM (0)
Mar 27, 9-10 PM (0)
Mar 27, 10-11 PM (0)
Mar 27, 11-12 AM (0)
Mar 28, 12-1 AM (0)
Mar 28, 1-2 AM (0)
Mar 28, 2-3 AM (0)
Mar 28, 3-4 AM (0)
Mar 28, 4-5 AM (0)
Mar 28, 5-6 AM (0)
Mar 28, 6-7 AM (0)
Mar 28, 7-8 AM (0)
Mar 28, 8-9 AM (0)
Mar 28, 9-10 AM (0)
Mar 28, 10-11 AM (0)
Mar 28, 11-12 PM (0)
Mar 28, 12-1 PM (0)
Mar 28, 1-2 PM (0)
Mar 28, 2-3 PM (0)
Mar 28, 3-4 PM (0)
Mar 28, 4-5 PM (0)
Mar 28, 5-6 PM (0)
Mar 28, 6-7 PM (0)
Mar 28, 7-8 PM (0)
Mar 28, 8-9 PM (0)
Mar 28, 9-10 PM (0)
Mar 28, 10-11 PM (0)
Mar 28, 11-12 AM (0)
Mar 29, 12-1 AM (0)
Mar 29, 1-2 AM (0)
Mar 29, 2-3 AM (0)
Mar 29, 3-4 AM (0)
Mar 29, 4-5 AM (0)
Mar 29, 5-6 AM (0)
Mar 29, 6-7 AM (0)
Mar 29, 7-8 AM (0)
Mar 29, 8-9 AM (0)
Mar 29, 9-10 AM (0)
Mar 29, 10-11 AM (0)
Mar 29, 11-12 PM (0)
Mar 29, 12-1 PM (0)
Mar 29, 1-2 PM (0)
Mar 29, 2-3 PM (0)
Mar 29, 3-4 PM (0)
Mar 29, 4-5 PM (0)
Mar 29, 5-6 PM (0)
Mar 29, 6-7 PM (0)
Mar 29, 7-8 PM (0)
Mar 29, 8-9 PM (0)
Mar 29, 9-10 PM (0)
Mar 29, 10-11 PM (0)
Mar 29, 11-12 AM (0)
Mar 30, 12-1 AM (0)
Mar 30, 1-2 AM (0)
Mar 30, 2-3 AM (0)
Mar 30, 3-4 AM (0)
Mar 30, 4-5 AM (0)
Mar 30, 5-6 AM (0)
Mar 30, 6-7 AM (0)
Mar 30, 7-8 AM (0)
Mar 30, 8-9 AM (0)
Mar 30, 9-10 AM (1)
Mar 30, 10-11 AM (2)
Mar 30, 11-12 PM (0)
Mar 30, 12-1 PM (0)
Mar 30, 1-2 PM (0)
Mar 30, 2-3 PM (0)
Mar 30, 3-4 PM (0)
Mar 30, 4-5 PM (0)
Mar 30, 5-6 PM (0)
Mar 30, 6-7 PM (0)
Mar 30, 7-8 PM (0)
Mar 30, 8-9 PM (0)
Mar 30, 9-10 PM (0)
Mar 30, 10-11 PM (0)
Mar 30, 11-12 AM (0)
Mar 31, 12-1 AM (0)
Mar 31, 1-2 AM (0)
Mar 31, 2-3 AM (0)
Mar 31, 3-4 AM (0)
Mar 31, 4-5 AM (0)
Mar 31, 5-6 AM (0)
Mar 31, 6-7 AM (0)
Mar 31, 7-8 AM (0)
Mar 31, 8-9 AM (0)
Mar 31, 9-10 AM (2)
Mar 31, 10-11 AM (0)
Mar 31, 11-12 PM (0)
Mar 31, 12-1 PM (1)
Mar 31, 1-2 PM (5)
Mar 31, 2-3 PM (5)
Mar 31, 3-4 PM (0)
Mar 31, 4-5 PM (0)
Mar 31, 5-6 PM (0)
Mar 31, 6-7 PM (0)
Mar 31, 7-8 PM (0)
Mar 31, 8-9 PM (0)
Mar 31, 9-10 PM (0)
Mar 31, 10-11 PM (0)
Mar 31, 11-12 AM (0)
Apr 01, 12-1 AM (0)
Apr 01, 1-2 AM (0)
Apr 01, 2-3 AM (0)
Apr 01, 3-4 AM (0)
Apr 01, 4-5 AM (0)
Apr 01, 5-6 AM (1)
Apr 01, 6-7 AM (0)
Apr 01, 7-8 AM (0)
Apr 01, 8-9 AM (0)
Apr 01, 9-10 AM (0)
71 commits this week
Mar 25, 2026
-
Apr 01, 2026
net-rs: extract ChainTree into its own module
Move ChainTree, ChainNode, and their 7 unit tests from consensus.rs into chain_tree.rs. Add point() accessor so consensus doesn't reach into ChainTree internals. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
net-rs: show tip block hash in inspector panel
Display tip_hash alongside tip_block_no in the inspector panel, matching the format already used in topology nodes (e.g. "5 #a3b2"). Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
net-rs: emit rollback telemetry events with violet UI flash
Emit NodeEvent::RolledBack for both peer-triggered rollbacks (NetworkEvent::RolledBack) and consensus fork-switch rollbacks (on_validation_complete returns true). UI shows violet flash on topology nodes and magenta chip in event log. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
net-rs: detect fork switches and issue rollback to common ancestor
Track adopted_tip_hash separately from the chain tree's speculative best tip. When on_validation_complete finds the new block is on a different fork than the adopted tip, walk prev_hash links to find the common ancestor and issue InjectRollback before InjectBlock. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
net-rs: add chain tree for Praos consensus with fork tracking
Replace the single local_tip in Consensus with a ChainTree that tracks block headers keyed by hash, linked via prev_hash. Longest chain (highest block_number) is selected as best tip. Blocks deeper than security_param_k (default 2160) are pruned. Block production now receives prev_hash and block_number from consensus so headers contain correct chain linkage and globally consistent height. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
net-rs: fix div-in-p hydration warning in inspector peer list
Use Typography component="div" so the Chip (renders <div>) isn't nested inside a <p> element. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
net-rs: add per-node blocks chart to inspector panel
Track blocks_produced in NodeSeriesPoint and display a green blocks chart in the inspector, matching the aggregate charts style. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
net-rs: dark semi-transparent chart tooltips
Style recharts tooltips in aggregate charts and inspector panel with dark backgrounds and white text to match the dashboard theme. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Restore producer-local FIFO ordering in bitmap mempool simulator
net-rs: restyle dashboard header with IO purple branding
Dark purple background, larger title left-aligned, node/edge count on the right, white text throughout. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
net-rs: real-time event streaming via SSE
Replace 1s HTTP polling with Server-Sent Events for event delivery. Events now appear in the UI as they arrive from nodes, making block propagation visible as a wave across the graph. - Add GET /api/events/stream SSE endpoint with broadcast channel - Add useEventStream hook with 50ms batching to avoid render storms - Remove TipAdvanced from flash triggers (redundant with RBReceived) - Protect "produced" flash from being overwritten by "received" Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Expand network section
Co-authored-by: Sebastian Nagel <[email protected]>
Merge pull request #833 from input-output-hk/bladyjoker/ci-fixes
Cleanup
net-rs: fake blocks use valid Shelley+ CBOR, revert BlockFetched workaround
Replace the trivial [slot, hash] CBOR in fake blocks with proper
Shelley+ structure: era-tagged Conway header (10-field header_body with
slot, block_number, issuer_vkey, etc.) wrapped in #6.24, and a
complete block body with header + empty tx/witness/metadata maps.
This makes body.point() and WrappedHeader::parse() work correctly on
fake blocks, so the coordinator can derive the block point from the
body without needing the fetch range passed through.
Reverts the PeerEvent::BlockFetched { from, to, body } workaround
back to the original { body } form. The coordinator uses body.point()
again, which now works for both real and fake blocks. This is the
correct design for future multi-block range fetching.
New test: fake_block_has_parseable_cbor verifies header parsing,
point derivation from both header and body, and slot/era correctness.
324 tests (293 net-core + 31 net-node), 0 clippy warnings.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
net-rs: net-node Stage 5 — telemetry with peer bandwidth tracking
Add telemetry system with event/stats sinks and per-peer bandwidth monitoring: net-core changes: - mux/mod.rs: MuxStats with AtomicU64 bytes_sent/bytes_received counters, exposed via RunningMux - mux/egress.rs, ingress.rs: increment counters per segment (header+payload) - peer/types.rs: PeerEvent::Connected now carries Arc<MuxStats> - multi_peer/types.rs: PeerInfo struct, NetworkCommand::QueryPeers, NetworkEvent::PeerSnapshot for per-peer telemetry snapshots - coordinator.rs: stores mux_stats per peer, handles QueryPeers by building PeerInfo with address, mode, rtt, delay, bytes_sent/received net-node changes: - telemetry.rs: NodeEvent enum (sim-rs compatible JSONL format with serde tagged enum), StatsSnapshot with full peer list including bandwidth, EventSink/StatsSink traits, FileEventSink (JSONL), HttpEventSink (reqwest batched POST), LogStatsSink, HttpStatsSink, TelemetryHandle with counters and periodic flush - config.rs: TelemetryConfig, EventSinkConfig (file/http), StatsSinkConfig (log/http) - main.rs: stats timer sends QueryPeers, PeerSnapshot triggers emit_stats, all events recorded via telemetry.record() 323 tests (293 net-core + 30 net-node), 0 clippy warnings. Live-tested: JSONL file output with correct sim-rs format, periodic peer stats with bytes_sent/received incrementing, delay_ms reported. Marks Stage 5 and all stages complete in test-node-plan.md. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
net-rs: net-node Stage 4 — Leios production and per-peer delay injection
Extend the test node with Leios block types and network delay simulation: - production.rs: EB/vote lotteries at stage boundaries, stage boundary detection, refactored to share lottery logic across block types - consensus.rs: handles LeiosBlockOffered -> FetchLeiosBlock, LeiosVotesOffered -> FetchLeiosVotes, LeiosBlockTxsOffered -> FetchLeiosBlockTxs, logs Leios block/vote reception - config.rs: ib/eb/vote generation probabilities, stage_length_slots, eb/vote validation timing, per-peer inbound_delay_ms - Coordinator per-peer delay: new peer_delays config in CoordinatorConfig, events from delayed peers buffered and delivered after configured duration. Zero overhead when unconfigured (has_any_delays guard). Implemented in coordinator event loop with conditional select branch. 27 net-node tests + 293 net-core tests pass, 0 clippy warnings. Live-tested: Leios EB/vote production and fetch, per-peer 200ms delay visible in timestamps. Marks Stage 4 complete in test-node-plan.md. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
net-rs: extract shared command dispatch from peer_task and duplex_task
The PeerCommand dispatch loop was duplicated nearly verbatim between peer_task.rs and duplex_task.rs. Extract into command_dispatch.rs so adding a new command variant requires a single edit instead of two. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
net-rs: ChatGPT survey on Leios completness wrt CIP-0164
net-rs: ChatGPT risk register final signoff
net-rs: extract header from block body, remove magic 0xA0 fallback (risk register R#2)
BlockBody::header() extracts the WrappedHeader directly from block body CBOR, reusing shared try_extract_header() logic with point(). Coordinator now falls back to body.header() when pending_headers misses, and skips chain store insertion if neither produces a header. Post-remediation review: added Resolution subsections for all three residual observations, stripped trailing whitespace. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
net-rs: update docs — test counts, scheduler name, risk register statuses
- Test count 258/280 → 291 in README, CLAUDE.md, implementation-plan - README scheduler label: strict priority → PriorityWfq (actual default) - CLAUDE.md: document SubmitTransaction broadcast in coordinator - Risk register: consistent "Fixed" status (#8 was "Resolved", #9 "Mitigated") Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
net-rs: wire client-side TxSubmission into peer orchestration (risk register #11)
TxSubmission protocol was implemented but only wired on the server side. Client connections never negotiated it, so outbound peers couldn't push transactions. Register in client_protocol_configs, add spawn_txsubmission, wire into peer_task/duplex_task/coordinator with broadcast semantics. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
net-rs: disconnect on LeiosFetch store miss (risk register #10)
CIP-0164 specifies that a server should disconnect if the client requests an EB or its transactions that the server does not have. Replace unwrap_or_default() with explicit Option matching — None now breaks the server loop, triggering disconnect. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
net-rs: TCP keepalive via socket2, fix warnings (risk register #7/#8)
Add OS-level TCP keepalive (idle=60s, interval=15s) to complement protocol-level KeepAlive. Fix unused import/variable warnings in tests. Update risk register: #7 commit hash, #8 resolved. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>