Update fls; change imported modules
Home /
Input Output /
cardano-ledger-specs
May 11, 6-7 PM (0)
May 11, 7-8 PM (0)
May 11, 8-9 PM (0)
May 11, 9-10 PM (0)
May 11, 10-11 PM (0)
May 11, 11-12 AM (0)
May 12, 12-1 AM (0)
May 12, 1-2 AM (0)
May 12, 2-3 AM (0)
May 12, 3-4 AM (0)
May 12, 4-5 AM (0)
May 12, 5-6 AM (0)
May 12, 6-7 AM (0)
May 12, 7-8 AM (0)
May 12, 8-9 AM (0)
May 12, 9-10 AM (0)
May 12, 10-11 AM (3)
May 12, 11-12 PM (0)
May 12, 12-1 PM (0)
May 12, 1-2 PM (0)
May 12, 2-3 PM (0)
May 12, 3-4 PM (0)
May 12, 4-5 PM (0)
May 12, 5-6 PM (0)
May 12, 6-7 PM (0)
May 12, 7-8 PM (5)
May 12, 8-9 PM (0)
May 12, 9-10 PM (0)
May 12, 10-11 PM (0)
May 12, 11-12 AM (0)
May 13, 12-1 AM (0)
May 13, 1-2 AM (0)
May 13, 2-3 AM (0)
May 13, 3-4 AM (0)
May 13, 4-5 AM (0)
May 13, 5-6 AM (0)
May 13, 6-7 AM (0)
May 13, 7-8 AM (10)
May 13, 8-9 AM (1)
May 13, 9-10 AM (0)
May 13, 10-11 AM (1)
May 13, 11-12 PM (7)
May 13, 12-1 PM (5)
May 13, 1-2 PM (0)
May 13, 2-3 PM (0)
May 13, 3-4 PM (0)
May 13, 4-5 PM (0)
May 13, 5-6 PM (0)
May 13, 6-7 PM (0)
May 13, 7-8 PM (0)
May 13, 8-9 PM (0)
May 13, 9-10 PM (8)
May 13, 10-11 PM (0)
May 13, 11-12 AM (0)
May 14, 12-1 AM (0)
May 14, 1-2 AM (0)
May 14, 2-3 AM (0)
May 14, 3-4 AM (0)
May 14, 4-5 AM (0)
May 14, 5-6 AM (0)
May 14, 6-7 AM (0)
May 14, 7-8 AM (0)
May 14, 8-9 AM (0)
May 14, 9-10 AM (0)
May 14, 10-11 AM (0)
May 14, 11-12 PM (0)
May 14, 12-1 PM (0)
May 14, 1-2 PM (0)
May 14, 2-3 PM (0)
May 14, 3-4 PM (0)
May 14, 4-5 PM (0)
May 14, 5-6 PM (6)
May 14, 6-7 PM (2)
May 14, 7-8 PM (0)
May 14, 8-9 PM (0)
May 14, 9-10 PM (0)
May 14, 10-11 PM (0)
May 14, 11-12 AM (0)
May 15, 12-1 AM (0)
May 15, 1-2 AM (0)
May 15, 2-3 AM (0)
May 15, 3-4 AM (0)
May 15, 4-5 AM (0)
May 15, 5-6 AM (0)
May 15, 6-7 AM (0)
May 15, 7-8 AM (0)
May 15, 8-9 AM (0)
May 15, 9-10 AM (0)
May 15, 10-11 AM (0)
May 15, 11-12 PM (0)
May 15, 12-1 PM (1)
May 15, 1-2 PM (0)
May 15, 2-3 PM (0)
May 15, 3-4 PM (0)
May 15, 4-5 PM (0)
May 15, 5-6 PM (0)
May 15, 6-7 PM (0)
May 15, 7-8 PM (0)
May 15, 8-9 PM (0)
May 15, 9-10 PM (0)
May 15, 10-11 PM (0)
May 15, 11-12 AM (0)
May 16, 12-1 AM (0)
May 16, 1-2 AM (0)
May 16, 2-3 AM (0)
May 16, 3-4 AM (0)
May 16, 4-5 AM (0)
May 16, 5-6 AM (0)
May 16, 6-7 AM (0)
May 16, 7-8 AM (0)
May 16, 8-9 AM (0)
May 16, 9-10 AM (0)
May 16, 10-11 AM (0)
May 16, 11-12 PM (0)
May 16, 12-1 PM (0)
May 16, 1-2 PM (0)
May 16, 2-3 PM (0)
May 16, 3-4 PM (1)
May 16, 4-5 PM (0)
May 16, 5-6 PM (0)
May 16, 6-7 PM (0)
May 16, 7-8 PM (0)
May 16, 8-9 PM (0)
May 16, 9-10 PM (0)
May 16, 10-11 PM (0)
May 16, 11-12 AM (0)
May 17, 12-1 AM (0)
May 17, 1-2 AM (0)
May 17, 2-3 AM (0)
May 17, 3-4 AM (0)
May 17, 4-5 AM (0)
May 17, 5-6 AM (0)
May 17, 6-7 AM (1)
May 17, 7-8 AM (0)
May 17, 8-9 AM (0)
May 17, 9-10 AM (0)
May 17, 10-11 AM (0)
May 17, 11-12 PM (0)
May 17, 12-1 PM (1)
May 17, 1-2 PM (0)
May 17, 2-3 PM (0)
May 17, 3-4 PM (0)
May 17, 4-5 PM (0)
May 17, 5-6 PM (0)
May 17, 6-7 PM (1)
May 17, 7-8 PM (0)
May 17, 8-9 PM (0)
May 17, 9-10 PM (0)
May 17, 10-11 PM (0)
May 17, 11-12 AM (0)
May 18, 12-1 AM (0)
May 18, 1-2 AM (0)
May 18, 2-3 AM (0)
May 18, 3-4 AM (0)
May 18, 4-5 AM (0)
May 18, 5-6 AM (0)
May 18, 6-7 AM (0)
May 18, 7-8 AM (11)
May 18, 8-9 AM (0)
May 18, 9-10 AM (0)
May 18, 10-11 AM (0)
May 18, 11-12 PM (0)
May 18, 12-1 PM (1)
May 18, 1-2 PM (0)
May 18, 2-3 PM (8)
May 18, 3-4 PM (0)
May 18, 4-5 PM (0)
May 18, 5-6 PM (0)
May 18, 6-7 PM (0)
73 commits this week
May 11, 2026
-
May 18, 2026
Cleanup and tighten imports
Add era type parameter to SpecTranslate; instantiate for Conway
Change return type of translateInputs to SpecTransM
Change return type of translationOuput to SpecTransM
Apply Joosep's suggestions
Move SpecNormalize instances from Orphans
Merge pull request #5834 from IntersectMBO/aniketd/coders-safe
Coder's SparseKeyed alternative
add Haskell Benchmark (customSmallerIsBetter) benchmark result for 4e56c7ba4282e9e1161211a5f1646a449e8cfe08
L1: Add Maybe LeiosCert on DijkstraBody (Dijkstra-only)
Introduce 'Maybe LeiosCert' (mirrored after the existing 'Maybe PerasCert') as an optional field on the Dijkstra-era 'BlockBody'. Other eras are unaffected — this is the entire Leios-related ledger changes from leios-prototype at the time of the remake.
add Haskell Benchmark (customSmallerIsBetter) benchmark result for f04318b1bf15e7115373b780f8447b76e9d6c4f1
Use precomputed plutus languages as argument to `mkScriptIntegrity`
Add `plutusScriptsWithContextStAnnTx` to `AlonzoEraUTxO` and implement
it across eras
Introduce `DijkstraEraUTxO` and an instance for Dijkstra
Change `ConwayUtxosEnv` to `()`
Use precomputed plutus contexts in UTXOS starting with Babbage
Add `plutusLanguagesUsedStAnnTx` to `AlonzoEraUTxO` and implement it
across eras
Add `scriptsNeededStAnnTx`to `AlonzoEraUTxO`and implement it across eras
Use precomputed `scriptsNeeded` and `scriptsProvided` in rules
Remove `ScriptsProvided` from Dijkstra environments
since this is now part of the `StAnnTx` signal
Leios: hash Dijkstra cert blocks over the cert(s) only
When a 'DijkstraBlockBody' carries a 'LeiosCert' (i.e. it is a cert block), 'hashDijkstraSegWits' now hashes only the optional Leios / Peras certificates and ignores the four transaction segwit chunks. This mirrors the leios-prototype's @hashBody (BodyCertificate cert _) = hashCert cert@: the header commits to the cert, the EB closure is resolved into 'dbbTxs' locally (by chain-sel's 'resolveLeiosBlock' before handing the block to BBODY), and the locally-inlined txs must not invalidate the header-committed body hash. For regular blocks (no LeiosCert) the hash still covers the segwit chunks plus the optional Peras certificate, unchanged. Co-Authored-By: Claude Opus 4.7 <[email protected]>
Leios: encode Leios cert before Peras cert in DijkstraBlockBody
The BBODY rule validates the Peras certificate when present, and that validation requires the Praos header to carry a 'PrevEpochNonce'. The consensus header builder currently defaults that to 'Nothing', so a Dijkstra block that happens to carry a Peras certificate (placeholder or otherwise) fails BBODY with 'PrevEpochNonceNotPresent' and gets rejected from the chain. The pre-fix wire format dispatched on the body's inner list length positionally with Peras-first: @5@ ⇒ Peras only, @6@ ⇒ Peras + Leios. That made "Leios only" unrepresentable, forcing the consensus layer to attach a placeholder Peras cert alongside every Leios cert and tripping the validation failure above. Swap the order on the wire so Leios comes first: 4 ⇒ no cert 5 ⇒ Leios only 6 ⇒ Leios + Peras "Peras only without Leios" is no longer representable; if support for that combination is needed later the wire format should move to explicit @StrictMaybe@ markers per cert. The hash function already takes Leios before Peras, so the body hash is unchanged. Co-Authored-By: Claude Opus 4.7 <[email protected]>
Leios: fix DijkstraBlockBody CBOR encoding
The body encoder previously emitted four mandatory segwit chunks plus optional Peras/Leios certificate bytes inline, with a constant 'listLen = 5' and 'numSegComponents = 5'. The 'DecCBOR' instance reads an inner list length and dispatches on it (4 / 5 / 6), but the encoder never wrote that list length and the constant 'listLen = 5' didn't match the actual cert-presence cases. As a result, basic blocks (both certs SNothing) failed to deserialise on the network — the outer 'Block' decoder expected 'numSegComponents + 1 = 6' elements but the encoder produced only 5. Wrap the body in its own CBOR list at encoding time, with the inner length (4, 5, or 6) discriminating between (no cert) / (Peras only) / (Peras + Leios). The matching 'DecCBOR' already reads this exact length, so the existing decode path works unchanged. The outer 'Block' record is now 2 elements (header + body-list), so 'numSegComponents = 1'. A Leios certificate without a Peras certificate is not representable on the wire (the decoder reads certificates positionally); the encoder 'error's in that case. Co-Authored-By: Claude Opus 4.7 <[email protected]>
Leios: add Maybe LeiosCert on DijkstraBody (Dijkstra-only)
Re-authored on top of c175b1b317 (the cardano-ledger commit compatible with consensus main's CHaP index-state 2026-04-13) to match the older fat-constructor DijkstraBlockBody shape (pre-memoization refactor). Equivalent to b6b2feb006 on leios-prototype-remake, which targeted the post-memoization shape (DijkstraBlockBodyRaw + lensMemoRawType). Adds: * `dbbLeiosCert :: StrictMaybe LeiosCert` field and matching `dbbLeiosCertBytes :: Maybe BSL.ByteString` byte-cache, mirroring the PerasCert pattern in this older shape. * `LeiosCert` placeholder newtype over ByteString with derived EncCBOR/DecCBOR/NoThunks/NFData (the real type lands with the Leios voting machinery). * `leiosCertBlockBodyL` lens method on `DijkstraEraBlockBody`. * Pattern synonym extended with a third `StrictMaybe LeiosCert` arg; body threads the bytes through `hashDijkstraSegWits` (now takes the Leios bytes arg too). * `EncCBORGroup` appends the optional Leios cert bytes after the optional Peras cert bytes. * `DecCBOR` handles three list-length cases: 4 (neither), 5 (Peras only, legacy), 6 (Peras + Leios). A Leios-only encoding is not expressible without ambiguity at len 5 \-- intentional: Dijkstra-era blocks aren't on the wire yet. * `NoThunks` `AllowThunksIn` list extended with `dbbLeiosCertBytes`. * Testlib: `Arbitrary LeiosCert` (and `DijkstraBlockBody <*> arbitrary <*> arbitrary <*> arbitrary`); `ToExpr LeiosCert` and updated `ToExpr (DijkstraBlockBody era)` constraint set. Only the Dijkstra era is Leios-enabled \-- earlier eras are untouched. Verified: `cabal build cardano-ledger-dijkstra:lib:cardano-ledger-dijkstra` and `cabal build cardano-ledger-dijkstra:lib:testlib` both clean. Co-Authored-By: Claude Opus 4.7 <[email protected]>
Cleanup and tighten imports