May 08, 7-8 AM (53)
May 08, 8-9 AM (34)
May 08, 9-10 AM (12)
May 08, 10-11 AM (32)
May 08, 11-12 PM (40)
May 08, 12-1 PM (30)
May 08, 1-2 PM (46)
May 08, 2-3 PM (46)
May 08, 3-4 PM (26)
May 08, 4-5 PM (23)
May 08, 5-6 PM (29)
May 08, 6-7 PM (15)
May 08, 7-8 PM (10)
May 08, 8-9 PM (15)
May 08, 9-10 PM (16)
May 08, 10-11 PM (23)
May 08, 11-12 AM (12)
May 09, 12-1 AM (4)
May 09, 1-2 AM (1)
May 09, 2-3 AM (0)
May 09, 3-4 AM (6)
May 09, 4-5 AM (6)
May 09, 5-6 AM (2)
May 09, 6-7 AM (6)
May 09, 7-8 AM (4)
May 09, 8-9 AM (4)
May 09, 9-10 AM (3)
May 09, 10-11 AM (9)
May 09, 11-12 PM (6)
May 09, 12-1 PM (21)
May 09, 1-2 PM (24)
May 09, 2-3 PM (12)
May 09, 3-4 PM (14)
May 09, 4-5 PM (7)
May 09, 5-6 PM (0)
May 09, 6-7 PM (2)
May 09, 7-8 PM (3)
May 09, 8-9 PM (1)
May 09, 9-10 PM (8)
May 09, 10-11 PM (33)
May 09, 11-12 AM (16)
May 10, 12-1 AM (15)
May 10, 1-2 AM (0)
May 10, 2-3 AM (0)
May 10, 3-4 AM (5)
May 10, 4-5 AM (0)
May 10, 5-6 AM (4)
May 10, 6-7 AM (0)
May 10, 7-8 AM (17)
May 10, 8-9 AM (8)
May 10, 9-10 AM (1)
May 10, 10-11 AM (26)
May 10, 11-12 PM (4)
May 10, 12-1 PM (49)
May 10, 1-2 PM (18)
May 10, 2-3 PM (8)
May 10, 3-4 PM (15)
May 10, 4-5 PM (26)
May 10, 5-6 PM (11)
May 10, 6-7 PM (7)
May 10, 7-8 PM (23)
May 10, 8-9 PM (12)
May 10, 9-10 PM (10)
May 10, 10-11 PM (29)
May 10, 11-12 AM (19)
May 11, 12-1 AM (12)
May 11, 1-2 AM (5)
May 11, 2-3 AM (5)
May 11, 3-4 AM (7)
May 11, 4-5 AM (3)
May 11, 5-6 AM (12)
May 11, 6-7 AM (28)
May 11, 7-8 AM (60)
May 11, 8-9 AM (34)
May 11, 9-10 AM (77)
May 11, 10-11 AM (58)
May 11, 11-12 PM (78)
May 11, 12-1 PM (84)
May 11, 1-2 PM (102)
May 11, 2-3 PM (41)
May 11, 3-4 PM (27)
May 11, 4-5 PM (24)
May 11, 5-6 PM (26)
May 11, 6-7 PM (42)
May 11, 7-8 PM (53)
May 11, 8-9 PM (57)
May 11, 9-10 PM (22)
May 11, 10-11 PM (49)
May 11, 11-12 AM (19)
May 12, 12-1 AM (2)
May 12, 1-2 AM (2)
May 12, 2-3 AM (3)
May 12, 3-4 AM (4)
May 12, 4-5 AM (8)
May 12, 5-6 AM (11)
May 12, 6-7 AM (17)
May 12, 7-8 AM (25)
May 12, 8-9 AM (26)
May 12, 9-10 AM (35)
May 12, 10-11 AM (82)
May 12, 11-12 PM (98)
May 12, 12-1 PM (38)
May 12, 1-2 PM (69)
May 12, 2-3 PM (54)
May 12, 3-4 PM (41)
May 12, 4-5 PM (57)
May 12, 5-6 PM (40)
May 12, 6-7 PM (24)
May 12, 7-8 PM (24)
May 12, 8-9 PM (18)
May 12, 9-10 PM (8)
May 12, 10-11 PM (40)
May 12, 11-12 AM (19)
May 13, 12-1 AM (10)
May 13, 1-2 AM (2)
May 13, 2-3 AM (4)
May 13, 3-4 AM (2)
May 13, 4-5 AM (5)
May 13, 5-6 AM (29)
May 13, 6-7 AM (52)
May 13, 7-8 AM (43)
May 13, 8-9 AM (44)
May 13, 9-10 AM (21)
May 13, 10-11 AM (22)
May 13, 11-12 PM (47)
May 13, 12-1 PM (25)
May 13, 1-2 PM (44)
May 13, 2-3 PM (45)
May 13, 3-4 PM (42)
May 13, 4-5 PM (33)
May 13, 5-6 PM (30)
May 13, 6-7 PM (51)
May 13, 7-8 PM (31)
May 13, 8-9 PM (9)
May 13, 9-10 PM (24)
May 13, 10-11 PM (29)
May 13, 11-12 AM (11)
May 14, 12-1 AM (18)
May 14, 1-2 AM (3)
May 14, 2-3 AM (4)
May 14, 3-4 AM (21)
May 14, 4-5 AM (11)
May 14, 5-6 AM (18)
May 14, 6-7 AM (18)
May 14, 7-8 AM (47)
May 14, 8-9 AM (52)
May 14, 9-10 AM (31)
May 14, 10-11 AM (20)
May 14, 11-12 PM (114)
May 14, 12-1 PM (53)
May 14, 1-2 PM (151)
May 14, 2-3 PM (32)
May 14, 3-4 PM (17)
May 14, 4-5 PM (14)
May 14, 5-6 PM (37)
May 14, 6-7 PM (12)
May 14, 7-8 PM (22)
May 14, 8-9 PM (36)
May 14, 9-10 PM (35)
May 14, 10-11 PM (27)
May 14, 11-12 AM (14)
May 15, 12-1 AM (18)
May 15, 1-2 AM (15)
May 15, 2-3 AM (5)
May 15, 3-4 AM (3)
May 15, 4-5 AM (13)
May 15, 5-6 AM (14)
May 15, 6-7 AM (7)
May 15, 7-8 AM (6)
4,138 commits this week
May 08, 2026
-
May 15, 2026
fix: align llms.txt .md paths with rendered URLs (#1791)
Notes from remaking the leios-prototype branches
feat: defer the validation of a header when the stake distribution is not available yet
Signed-off-by: Eric Torreborre <[email protected]>
deploy: 074ddaaa1d3d90da268829da5733bbd18388abe2
fix: include the era tag in the transactions serialization
Signed-off-by: Eric Torreborre <[email protected]>
fix: get the tx_id from the transaction body (#823)
* fix: get the tx_id from the transaction body Signed-off-by: Eric Torreborre <[email protected]> * refactor: rename TxId to TransactionId and drop TransactionId as an alias to the hash Signed-off-by: Eric Torreborre <[email protected]> feat: just print the first 12 chars for a transaction id Signed-off-by: Eric Torreborre <[email protected]> --------- Signed-off-by: Eric Torreborre <[email protected]>
block-fetch: split FetchClientRegistry
As a consequence `bracketFetchClient` is decoupled from `bracketKeepAlive`.
Add `lookupIndex` and tests for `elemAt`
Fix vector-map benchmarks
Switch to unsafe vector operations and add strictness
Overhaul SPO and operator docs — restructure, rewrite, and consolidate (#1780)
* Overhaul SPO and operator docs — restructure, rewrite, and consolidate - Move all cardano-cli reference docs from get-started/infrastructure/cardano-cli/ to learn/cardano-cli/ with redirects - Add secure transaction workflow page covering build/sign/submit pattern, mnemonic key derivation (cardano-signer, cardano-addresses), CIP-8 signing, CIP-100 governance metadata, and Calidus registration - Rewrite security hardening page: nftables (replacing UFW), WireGuard for cross-datacenter relay/BP, fail2ban, systemd unit hardening - Add SPO governance page: voting on hard forks and no-confidence actions, alwaysAbstain DRep delegation via reward account stake key, Calidus key identity - Consolidate air-gap docs (cardano-airgap ISO + manual Ubuntu) into single page under learn/educational-resources/ - Move frankenwallet to learn/educational-resources/; add security tag to builder-tools - Add monitoring section with overview (gLiveView) and Prometheus/Grafana pages moved out of relay-configuration/ - Add Docker security warning and nix build command to installing-cardano-node - Fix broken redirects for deleted grafana-dashboard-tutorial and monitoring-gLiveView pages - Fix relative links in monitoring-prometheus-grafana and stake-address-delegation * Fix redirect targets to match actual doc id slugs Redirect to paths must match the URL slug derived from frontmatter id, not the filename. Also point deleted dynamic-block-forging and rts-options-node redirects at running-cardano. * Overhaul SPO and operator docs — restructure, rewrite, and consolidate - Move all cardano-cli reference docs from get-started/infrastructure/cardano-cli/ to learn/cardano-cli/ with redirects - Add secure transaction workflow page covering build/sign/submit pattern, mnemonic key derivation (cardano-signer, cardano-addresses), CIP-8 signing, CIP-100 governance metadata, and Calidus registration - Rewrite security hardening page: nftables (replacing UFW), WireGuard for cross-datacenter relay/BP, fail2ban, systemd unit hardening - Add SPO governance page: voting on hard forks and no-confidence actions, alwaysAbstain DRep delegation via reward account stake key, Calidus key identity - Consolidate air-gap docs (cardano-airgap ISO + manual Ubuntu) into single page under learn/educational-resources/ - Move frankenwallet to learn/educational-resources/; add security tag to builder-tools - Add monitoring section with overview (gLiveView) and Prometheus/Grafana pages moved out of relay-configuration/ - Add Docker security warning and nix build command to installing-cardano-node - Fix broken redirects for deleted grafana-dashboard-tutorial and monitoring-gLiveView pages - Fix relative links in monitoring-prometheus-grafana and stake-address-delegation * additions - replace all "current" mentions by a reference to a date and node version - add openBlockPerf to monitoring section - minor text additions * more minor additions * back out navbar changes * update docs per TSC recommendations --------- Co-authored-by: gufmar <[email protected]> Co-authored-by: Tommy 🐙 <[email protected]>
chore: update translation progress from Crowdin [skip ci]
Reset leios-prototype to upstream main (chunked recreation follows)
Snapshot-merge: parents are (old leios-prototype tip, origin/main tip) but tree equals origin/main byte-for-byte. The leios-prototype branch ref moves forward without losing the historic prototype commits — they remain reachable as ancestors via the merge's first parent. The chunks of the recreation land as ordinary commits on top of this one.
Leios C4: minimal forging — default Praos header EB-announcement to SNothing
Minimal-shape C4 per resolved design: the forge loop is *unchanged*. No new arg to ForgeBlockArgs, no LeiosDb threading, no signature change to forgeBlock. The new fields just need a default value at the header/body construction sites: - Praos.mkHeader::mkBhBodyBytes (the per-forge HeaderBody site): hbLeiosEbAnnouncement = SNothing. Dijkstra-era forging that wants to populate it will do so out-of-band by post-processing the forged block (TODO; not part of this chunk). - Test generators that construct HeaderBody directly: same default. - DijkstraBody side needs nothing here — mkBasicBlockBody already initialises dbbrLeiosCert = SNothing via the L1 changes. Adds cardano-strict-containers to the unstable-protocol-testlib build-depends so the generator can use SNothing. Storage of forged EBs themselves lives in the concrete Shelley implementation (planned, not in this chunk) — keeping the era-abstract forge loop free of Leios. Refs: #1832, #1888 (originals threaded LeiosDb through forging; that shape is intentionally not adopted here). Co-Authored-By: Claude Opus 4.7 <[email protected]>
Leios C6: re-add cardano-blueprint submodule at prototype branch tip
The original leios-prototype kept Leios CDDLs in the cardano-blueprint submodule rather than under ouroboros-consensus-cardano/cddl/. The snapshot-merge to upstream main dropped the submodule pointer (main has CDDLs in-repo). This commit re-adds the submodule pointer at ebabbf18 (the prototype's pinned tip; current contents reachable via git's `submodule.cardano-blueprint.url` config). Upstream main's in-repo CDDLs at ouroboros-consensus-cardano/cddl/ are left intact for now; Leios CDDLs (LeiosNotify, LeiosFetch) live in the submodule per the resolved design. Voting wiring is mostly already in place from C1 (LeiosVoteState type and LeiosNotify mini-protocol carry the vote payloads). Further voting integration into the consensus voting flow is bundled into later chunks where the voter logic actually runs. Refs: #1963 (Leios: Prototype voting); leiosdemo202510 direct-commit series for the CDDL drafts (reachable via the snapshot-merge ancestry). Co-Authored-By: Claude Opus 4.7 <[email protected]>
Leios C2: EB-announcement on Praos HeaderBody
Adds one optional field to the shared Praos HeaderBody for early-
diffusion of EB references:
hbLeiosEbAnnouncement :: !(StrictMaybe EbAnnouncement)
Only Dijkstra-era forging populates it (SNothing on earlier eras),
per the governing "Leios is Dijkstra-only" decision. The cert itself
lives on DijkstraBody (Maybe LeiosCert from L1), so this header field
is announcement-only — no certify flag.
EncCBOR / DecCBOR each gain one trailing `!> To` / `<! From`. Adds
`cardano-strict-containers` to the protocol sublibrary's build-depends.
The EbAnnouncement type is imported from `LeiosDemoTypes` (the
protocol lib already depends on the ouroboros-consensus lib).
Refs: #1978 (Migrate EB announcement to Praos header), #1921 (EB
inclusion). The original prototype walked back a separate "certify"
flag in its bladyjoker/leios-prototype-backwards-compat-fix series;
this version skips that step since the cert lives on the body.
Co-Authored-By: Claude Opus 4.7 <[email protected]>
Leios C5: era-abstract cumulative tx-bytes on ShelleyLedgerState
Adds `shelleyCumulativeTxBytes :: !Word64` to `ShelleyLedgerState` (and
its ticked variant `tickedShelleyCumulativeTxBytes`), parallel to the
existing `shelleyLedgerLatestPerasCertRound`. Era-abstract — applies
to every Shelley-onwards ledger state. This is orthogonal to Leios
itself; Leios EB-sizing on Dijkstra is one user, but the accumulator
is generic.
Update protocol:
- Tick: preserve through, `tickedShelleyCumulativeTxBytes = shelleyCumulativeTxBytes`.
- Apply: `shelleyCumulativeTxBytes = tickedShelleyCumulativeTxBytes stBefore
+ sum (fromIntegral . (^. sizeTxF) <$> txs of block body)`, monotonically
increasing across all blocks.
- Initial state and Byron→Shelley translation: 0.
- Era translation (Shelley→Allegra→...→Dijkstra): preserved.
- CBOR codec: encodeListLen 4→5, append `toCBOR shelleyCumulativeTxBytes`.
- Many record-construct/destructure sites (HasLedgerTables / CanStowLedgerTables /
HFC era translations / SupportsProtocol forecast) updated in lock-step.
Tx-byte extraction uses the era-generic `Core.bbody (shelleyBlockRaw blk)
^. Core.txSeqBlockBodyL` + `^. Core.sizeTxF` — works uniformly across
all Shelley-onwards eras including Dijkstra's `Maybe LeiosCert` body.
Refs: #1988 (Add cumulative tx bytes to ledger state); the original
prototype put it on a `ShelleyLedgerLeiosState` extension type — this
version lifts it onto the existing `ShelleyLedgerState` directly since
the field is era-abstract and not Leios-specific.
Co-Authored-By: Claude Opus 4.7 <[email protected]>
Leios C7 (part 2 checkpoint): testlib record-construct fixes + Leios test wiring
Carries C5's shelleyCumulativeTxBytes addition through to the remaining record-construct sites that build the cardano-test target: - ShelleyLedgerState construction in Test/Consensus/Shelley/Examples.hs (two example ledger states for the Praos vs TPraos protocol). - The `Arbitrary (LedgerState (ShelleyBlock proto era) EmptyMK/ValuesMK)` generators in Test/Consensus/Shelley/Generators.hs. Wires `Test.ThreadNet.Leios` into the cardano-test driver: - Cabal: add to `other-modules` of `test-suite cardano-test`. - Main.hs: import + `tests` reference. - Add `bytestring`, `vector`, `directory`, `temporary` to `test-suite consensus-test` build-depends (needed by the new Test.LeiosDemo* test modules from C1). The Leios test file itself is a placeholder for now; the full threadnet adaptation is the next sub-chunk, which needs to bring back the prototype's TraceThreadNet/TraceThreadNetNode/LeiosState additions to unstable-diffusion-testlib first. Co-Authored-By: Claude Opus 4.7 <[email protected]>
Leios C7 (part 1): restore leios-demo scripts
Brings the leios-demo scripts back from pre-rebase-orig — pure shell/Python/notebook content, no Haskell compile path: - scripts/leios-demo/leios-november-demo.sh — end-to-end smoke run - scripts/leios-demo/log_parser.py — analysis of node logs - scripts/leios-demo/demo_analysis.ipynb, jupyter_utils.py — Jupyter notebook analysis flow - scripts/leios-demo/build.nix, .envrc — local nix environment - scripts/leios-demo/BUFFERBLOAT.md — TBF/netem tuning notes - scripts/leios-demo/data/*.log* — recorded reference runs The Haskell-side Test.ThreadNet.Leios bring-up (the other part of chunk C7) is a separate commit; that file references many testlib APIs that have evolved upstream and will need adaptation. Refs: #1718 (NixOS setup), #1724 (Nixify demo), #1883, #1906 (ThreadNet); leiosdemo202510 / leiosdemo202511 direct-commit series. Co-Authored-By: Claude Opus 4.7 <[email protected]>
Leios C7 part 2: stub the threadnet test (full adapt is a redesign)
Initial attempt at the full adapt revealed that the original 670-line @Test.ThreadNet.Leios@ test is tightly coupled to design choices that were retired in the new prototype: - @blockTxSizeSum@ pattern-matches on @SL.BodyInline@ and @SL.BodyCertificate@ — types replaced by the single @Maybe LeiosCert@ on @DijkstraBlockBody@ (L1 decision). - It threads @resolveLeiosBlock@ before block application, relying on @ResolveLeiosBlock@ — the user's memory note flags this as "a hint, not a model"; the new design has no pre-application resolution step. - It depends on @TraceThreadNet@ / @TraceThreadNetNode@ / @LeiosState@ in @Test.ThreadNet.Network@ plus runtime tracer plumbing through the threadnet driver, mempool, and Leios kernel that were prototype-only additions. Adapting the test isn't a compile-fix exercise — it's writing a new test against the post-rebase design surface (header @hbLeiosEbAnnouncement@ + body @Maybe LeiosCert@ + existing @AddedToCurrentChain@ / @SwitchedToAFork@ trace events). That work belongs in a follow-up chunk on its own. The stub keeps the @cardano-test@ target compiling; the original is reachable through @pre-rebase-orig@. Refs: #1883 (Leios ThreadNet), #1906 (Leios: ThreadNet test suite), #1971 (Test EB inclusion). Co-Authored-By: Claude Opus 4.7 <[email protected]>
Reset leios-prototype to upstream main (chunked recreation follows)
Snapshot-merge: parents are (old leios-prototype tip, origin/main tip) but tree equals origin/main byte-for-byte. The leios-prototype branch ref moves forward without losing the historic prototype commits — they remain reachable as ancestors via the merge's first parent. The chunks of the recreation land as ordinary commits on top of this one.
Leios C1: foundations + mini-protocols in consensus
Brings the Leios prototype's flat-named foundation modules onto current
upstream main as additive new files (no other behavior changed):
- LeiosDemo{Types,Db,Logic,Exception}
- LeiosDemoDb.{Common,InMemory,SQLite}
- LeiosDemoOnlyTest{Fetch,Notify} — mini-protocol types/codecs/clients/
servers; the Leios mini-protocols live in consensus, not in
ouroboros-network (resolved design decision for easier iteration)
- LeiosVoteState
Plus the consensus-test driver wiring:
- Test.LeiosDemo{Db,Types}, Test.LeiosVoteState added to the
ouroboros-consensus-test other-modules and Main.hs tests tree.
Adaptation to upstream main:
- Tx era → Tx TopTx era (cardano-ledger added the TxLevel kind).
- byteLimitsLeios{Fetch,Notify} now take the bytes->Word dataSize
argument (typed-protocols' ProtocolSizeLimits API gained that field).
build-depends added to the ouroboros-consensus library to match the
foundation modules' imports: network-mux, typed-protocols:cborg,
direct-sqlite, directory, dlist, pretty-simple. Only the Dijkstra era
is Leios-enabled; everything else in this chunk is purely additive.
Refs: #1832 (initial drop), #1837 (in-memory DB), #1979 (per-thread
connections), and the leiosdemo202510 direct-commit series — all
reachable as ancestors of the snapshot-merge.
Co-Authored-By: Claude Opus 4.7 <[email protected]>
Reset leios-prototype to upstream master (chunked recreation follows)
Snapshot-merge: parents are (old leios-prototype tip, origin/master tip) but tree equals origin/master byte-for-byte. The leios-prototype branch ref moves forward without losing the historic prototype commits — they remain reachable as ancestors via the merge's first parent. The chunks of the recreation land as ordinary commits on top of this one.