Adding injection helpers for Nary/Inject class (HFC-related)
Jun 12, 1-2 PM (26)
Jun 12, 2-3 PM (22)
Jun 12, 3-4 PM (38)
Jun 12, 4-5 PM (23)
Jun 12, 5-6 PM (19)
Jun 12, 6-7 PM (26)
Jun 12, 7-8 PM (12)
Jun 12, 8-9 PM (17)
Jun 12, 9-10 PM (5)
Jun 12, 10-11 PM (30)
Jun 12, 11-12 AM (6)
Jun 13, 12-1 AM (6)
Jun 13, 1-2 AM (2)
Jun 13, 2-3 AM (0)
Jun 13, 3-4 AM (3)
Jun 13, 4-5 AM (0)
Jun 13, 5-6 AM (3)
Jun 13, 6-7 AM (7)
Jun 13, 7-8 AM (5)
Jun 13, 8-9 AM (6)
Jun 13, 9-10 AM (14)
Jun 13, 10-11 AM (12)
Jun 13, 11-12 PM (2)
Jun 13, 12-1 PM (23)
Jun 13, 1-2 PM (21)
Jun 13, 2-3 PM (8)
Jun 13, 3-4 PM (1)
Jun 13, 4-5 PM (4)
Jun 13, 5-6 PM (4)
Jun 13, 6-7 PM (3)
Jun 13, 7-8 PM (3)
Jun 13, 8-9 PM (7)
Jun 13, 9-10 PM (16)
Jun 13, 10-11 PM (19)
Jun 13, 11-12 AM (24)
Jun 14, 12-1 AM (18)
Jun 14, 1-2 AM (0)
Jun 14, 2-3 AM (0)
Jun 14, 3-4 AM (0)
Jun 14, 4-5 AM (2)
Jun 14, 5-6 AM (0)
Jun 14, 6-7 AM (2)
Jun 14, 7-8 AM (3)
Jun 14, 8-9 AM (0)
Jun 14, 9-10 AM (1)
Jun 14, 10-11 AM (2)
Jun 14, 11-12 PM (10)
Jun 14, 12-1 PM (8)
Jun 14, 1-2 PM (4)
Jun 14, 2-3 PM (8)
Jun 14, 3-4 PM (2)
Jun 14, 4-5 PM (1)
Jun 14, 5-6 PM (1)
Jun 14, 6-7 PM (0)
Jun 14, 7-8 PM (11)
Jun 14, 8-9 PM (1)
Jun 14, 9-10 PM (13)
Jun 14, 10-11 PM (29)
Jun 14, 11-12 AM (23)
Jun 15, 12-1 AM (8)
Jun 15, 1-2 AM (10)
Jun 15, 2-3 AM (4)
Jun 15, 3-4 AM (4)
Jun 15, 4-5 AM (1)
Jun 15, 5-6 AM (4)
Jun 15, 6-7 AM (6)
Jun 15, 7-8 AM (41)
Jun 15, 8-9 AM (26)
Jun 15, 9-10 AM (11)
Jun 15, 10-11 AM (35)
Jun 15, 11-12 PM (25)
Jun 15, 12-1 PM (40)
Jun 15, 1-2 PM (26)
Jun 15, 2-3 PM (21)
Jun 15, 3-4 PM (24)
Jun 15, 4-5 PM (21)
Jun 15, 5-6 PM (13)
Jun 15, 6-7 PM (13)
Jun 15, 7-8 PM (7)
Jun 15, 8-9 PM (26)
Jun 15, 9-10 PM (20)
Jun 15, 10-11 PM (22)
Jun 15, 11-12 AM (39)
Jun 16, 12-1 AM (11)
Jun 16, 1-2 AM (5)
Jun 16, 2-3 AM (1)
Jun 16, 3-4 AM (9)
Jun 16, 4-5 AM (6)
Jun 16, 5-6 AM (1)
Jun 16, 6-7 AM (16)
Jun 16, 7-8 AM (81)
Jun 16, 8-9 AM (18)
Jun 16, 9-10 AM (28)
Jun 16, 10-11 AM (22)
Jun 16, 11-12 PM (31)
Jun 16, 12-1 PM (37)
Jun 16, 1-2 PM (49)
Jun 16, 2-3 PM (34)
Jun 16, 3-4 PM (28)
Jun 16, 4-5 PM (37)
Jun 16, 5-6 PM (17)
Jun 16, 6-7 PM (26)
Jun 16, 7-8 PM (9)
Jun 16, 8-9 PM (11)
Jun 16, 9-10 PM (4)
Jun 16, 10-11 PM (31)
Jun 16, 11-12 AM (9)
Jun 17, 12-1 AM (8)
Jun 17, 1-2 AM (8)
Jun 17, 2-3 AM (11)
Jun 17, 3-4 AM (4)
Jun 17, 4-5 AM (1)
Jun 17, 5-6 AM (6)
Jun 17, 6-7 AM (99)
Jun 17, 7-8 AM (33)
Jun 17, 8-9 AM (22)
Jun 17, 9-10 AM (56)
Jun 17, 10-11 AM (18)
Jun 17, 11-12 PM (19)
Jun 17, 12-1 PM (57)
Jun 17, 1-2 PM (28)
Jun 17, 2-3 PM (37)
Jun 17, 3-4 PM (26)
Jun 17, 4-5 PM (19)
Jun 17, 5-6 PM (16)
Jun 17, 6-7 PM (10)
Jun 17, 7-8 PM (14)
Jun 17, 8-9 PM (12)
Jun 17, 9-10 PM (37)
Jun 17, 10-11 PM (29)
Jun 17, 11-12 AM (14)
Jun 18, 12-1 AM (12)
Jun 18, 1-2 AM (8)
Jun 18, 2-3 AM (5)
Jun 18, 3-4 AM (11)
Jun 18, 4-5 AM (11)
Jun 18, 5-6 AM (11)
Jun 18, 6-7 AM (9)
Jun 18, 7-8 AM (19)
Jun 18, 8-9 AM (83)
Jun 18, 9-10 AM (45)
Jun 18, 10-11 AM (51)
Jun 18, 11-12 PM (23)
Jun 18, 12-1 PM (67)
Jun 18, 1-2 PM (14)
Jun 18, 2-3 PM (53)
Jun 18, 3-4 PM (44)
Jun 18, 4-5 PM (64)
Jun 18, 5-6 PM (24)
Jun 18, 6-7 PM (21)
Jun 18, 7-8 PM (13)
Jun 18, 8-9 PM (17)
Jun 18, 9-10 PM (23)
Jun 18, 10-11 PM (30)
Jun 18, 11-12 AM (26)
Jun 19, 12-1 AM (13)
Jun 19, 1-2 AM (9)
Jun 19, 2-3 AM (5)
Jun 19, 3-4 AM (2)
Jun 19, 4-5 AM (11)
Jun 19, 5-6 AM (4)
Jun 19, 6-7 AM (92)
Jun 19, 7-8 AM (18)
Jun 19, 8-9 AM (36)
Jun 19, 9-10 AM (39)
Jun 19, 10-11 AM (27)
Jun 19, 11-12 PM (29)
Jun 19, 12-1 PM (37)
Jun 19, 1-2 PM (0)
3,112 commits this week
Jun 12, 2026
-
Jun 19, 2026
Removing `PerasEpochContext` type family in favor of a concrete type of the same name
Leios: vote and certify over the announcing RbHash
Vote on the hash of the ranking block that announced the EB instead of the LeiosPoint, which comprises the slot number and EB hash. This forbids reusing Leios certificates across Praos forks.
Enforce no commits and decommits at the same time
db-synthesizer: eject Layer 2 (config/credential machinery) downstream
With the config parsing now handled by cardano-config and synthesize taking a ready-made ProtocolInfo, db-synthesizer no longer needs the vendored node/api machinery in-repo. Remove it entirely: - 'initialize' and its adapters (the genesis/credential reading and protocol assembly) leave; they belong downstream, built on cardano-api. - Delete the vendored Cardano.Api.*, Cardano.Node.Protocol.* and Cardano.Node.Types modules (no remaining consumers), and prune the now-unused build-depends (base16-bytestring, cardano-crypto, transformers-except). - Trim DBSynthesizer.Types to the node/api-free option types. The tools-test integration test becomes synthesis-only: it builds a forging-capable protocol via the testlib (new mkSimpleTestProtocolInfoForging, which also returns the block forgers and genesis) instead of a node configuration file, and forges within the testlib's KES validity window. The config-driven synthesise -> immutalise -> analyse pipeline (and the executable) move downstream. Drop the now-unused config fixtures. All tool executables, cardano-test and tools-test still build and pass.
db-synthesizer: synthesize takes a ready-made ProtocolInfo; drop executable
Reshape 'synthesize' to accept the (ProtocolInfo, block-forgers) pair produced by 'protocolInfoCardano', plus the forge options, epoch size and ChainDB directory directly. Constructing the protocol from a node configuration is now the caller's responsibility, so 'synthesize' no longer touches CardanoProtocolParams or the configuration filesystem. Also remove the standalone db-synthesizer executable (app + CLI parser + cabal stanza); it will be provided downstream. The tools-test integration test now builds the protocol itself (initialize + protocolInfoCardano) and still exercises the full synthesise -> immutalise -> analyse pipeline. No behavioural change; tools-test still passes.
db-synthesizer: parse node config via cardano-config
Replace db-synthesizer's locally-implemented config parser with the shared cardano-config package. 'initialize' now parses the node config with cardano-config and adapts it into the Node*ProtocolConfiguration records that mkConsensusProtocolCardano consumes: byron-era settings, genesis file paths (including Dijkstra via the testing config's experimental genesis) and the hard-fork triggers. Removes the local parser entirely: the NodeConfigStub type, the FromJSON/AdjustFilePaths orphan instances (Orphans.hs) and the confConfigStub field. Forging credentials still come from the tool's own CLI NodeCredentials; the byron software version is hard-coded, mirroring the node, since cardano-config does not model it. tools-test still passes (synthesise -> immutalise -> analyse).
db-analyser: parse node config via cardano-config
Replace db-analyser's locally-implemented CardanoConfig JSON parser with the shared cardano-config package. The genesis file paths, byron network magic, genesis hashes and hard-fork triggers are now read from cardano-config's NodeConfigurationFromFile, with small boundary conversions for the hash/network-magic representations. db-immutaliser reuses this path via CardanoBlockArgs, so it migrates too. No behavioural change: the tools-test integration test (synthesise -> immutalise -> analyse) still passes with matching block counts.
cabal: add cardano-config package (temporary local path)
Wire the shared cardano-config package into the build so the tools can migrate off their locally-implemented config parsers. The local path is a development pin and must become a source-repository-package / CHaP release before this lands.
refactor: address Copilot review on /scripts/:script_hash/utxos
- Import `Amount` as a type-only import (used only as a type). - Type `reference_script_hash` as non-null: the query inner-joins `script` and filters on its hash, so the column is always present. - Simplify the `amount` array construction using the `...(row.amount ?? [])` pattern already used by /accounts/:stake_address/utxos. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
builder: fix darwin write->copy file corruption (#2018)
On a heavily-churned APFS build volume, reading a freshly-written file can
return a stale recycled-block page instead of the bytes just written, so a
build step that copies the file lands corrupted bytes in $out.
This first showed up as invalid aarch64-darwin code signatures: ld64 builds
the executable in an in-memory buffer, hashes it for its ad-hoc signature,
then write()s that buffer to disk (it avoids mmap, rdar://66598213) -- so the
linked binary is valid, but the later install copy read a stale page and the
binary in $out no longer matched ld64's embedded signature, so macOS SIGKILLed
it at startup ("Code Signature Invalid"). The bad signature was only the
symptom; the same stale read can silently corrupt any copied file, and on
x86_64-darwin (where these ad-hoc signatures aren't enforced) it would go
unnoticed. Cabal's own copyFile is no safer than cp -- both copy via cached
read()/write() -- so the fix can't live in either copier alone.
Fix it at the source rather than re-signing: before each copy, flush the
freshly-written files to stable storage (F_FULLFSYNC) and drop their stale
page-cache mapping (F_NOCACHE), so the copy reads exactly the bytes that were
written and carries ld64's original signature through unchanged.
builder/darwin-flush.nix provides flushDir / flushFile helpers (no-ops off
darwin, enabled on both darwin arches); they run before the install copies in
the v1 builder (comp-builder.nix) and at both copy points of the v2
cabal-slice path (build-cabal-slice.nix, comp-v2-builder.nix).
Validated on aarch64-darwin with both builders: the cardano-ledger-shelley
test suite builds and runs (168 examples, 0 failures) and the resulting binary
keeps ld64's original adhoc,linker-signed signature (no re-sign).
Add Test.Cardano.Ledger.Conway.Gen.Script module.
Add the generator for valid scripts.
wip(stm): cache ivc prover setup - not to merge
feat(common): activate bytes codec for SNARK proofs
wip(ci): run IVC SNARK proofs in e2e tests
fix(aggregator): prune signer registrations before epoch settings
Pruning epoch settings before the signer registrations that reference them broke the foreign key constraint after a large epoch gap.
fix(stm): deserialize IVC verifying keys against their circuit
Reading the verifying keys with an empty constraint system produced a degenerate key, breaking the certificate hash round trip in the client.
fix(aggregator): handle genesis epoch at startup
Clamp the signer retrieval epoch to the genesis epoch when computing the network configuration, so the aggregator can start at epoch 0.
refactor(e2e): wait 1 more epoch on the minimal scenario
fix(stm): output IVC ancillary verifier data on aggregation
The IVC SNARK aggregation now produces the AncillaryVerifierData so certificates carry it and the embedded IVC proof can be verified.