tests: update golden for gov queries
May 26, 1-2 PM (50)
May 26, 2-3 PM (50)
May 26, 3-4 PM (18)
May 26, 4-5 PM (20)
May 26, 5-6 PM (13)
May 26, 6-7 PM (20)
May 26, 7-8 PM (12)
May 26, 8-9 PM (15)
May 26, 9-10 PM (15)
May 26, 10-11 PM (35)
May 26, 11-12 AM (30)
May 27, 12-1 AM (16)
May 27, 1-2 AM (8)
May 27, 2-3 AM (9)
May 27, 3-4 AM (5)
May 27, 4-5 AM (32)
May 27, 5-6 AM (9)
May 27, 6-7 AM (49)
May 27, 7-8 AM (65)
May 27, 8-9 AM (38)
May 27, 9-10 AM (74)
May 27, 10-11 AM (83)
May 27, 11-12 PM (30)
May 27, 12-1 PM (50)
May 27, 1-2 PM (39)
May 27, 2-3 PM (53)
May 27, 3-4 PM (37)
May 27, 4-5 PM (11)
May 27, 5-6 PM (18)
May 27, 6-7 PM (21)
May 27, 7-8 PM (25)
May 27, 8-9 PM (17)
May 27, 9-10 PM (15)
May 27, 10-11 PM (29)
May 27, 11-12 AM (27)
May 28, 12-1 AM (9)
May 28, 1-2 AM (3)
May 28, 2-3 AM (5)
May 28, 3-4 AM (2)
May 28, 4-5 AM (9)
May 28, 5-6 AM (34)
May 28, 6-7 AM (31)
May 28, 7-8 AM (84)
May 28, 8-9 AM (33)
May 28, 9-10 AM (54)
May 28, 10-11 AM (50)
May 28, 11-12 PM (21)
May 28, 12-1 PM (46)
May 28, 1-2 PM (50)
May 28, 2-3 PM (23)
May 28, 3-4 PM (43)
May 28, 4-5 PM (86)
May 28, 5-6 PM (13)
May 28, 6-7 PM (31)
May 28, 7-8 PM (43)
May 28, 8-9 PM (34)
May 28, 9-10 PM (17)
May 28, 10-11 PM (36)
May 28, 11-12 AM (32)
May 29, 12-1 AM (12)
May 29, 1-2 AM (13)
May 29, 2-3 AM (4)
May 29, 3-4 AM (3)
May 29, 4-5 AM (0)
May 29, 5-6 AM (2)
May 29, 6-7 AM (5)
May 29, 7-8 AM (16)
May 29, 8-9 AM (37)
May 29, 9-10 AM (34)
May 29, 10-11 AM (69)
May 29, 11-12 PM (25)
May 29, 12-1 PM (44)
May 29, 1-2 PM (66)
May 29, 2-3 PM (60)
May 29, 3-4 PM (25)
May 29, 4-5 PM (26)
May 29, 5-6 PM (79)
May 29, 6-7 PM (11)
May 29, 7-8 PM (19)
May 29, 8-9 PM (9)
May 29, 9-10 PM (8)
May 29, 10-11 PM (27)
May 29, 11-12 AM (7)
May 30, 12-1 AM (9)
May 30, 1-2 AM (2)
May 30, 2-3 AM (1)
May 30, 3-4 AM (5)
May 30, 4-5 AM (2)
May 30, 5-6 AM (11)
May 30, 6-7 AM (0)
May 30, 7-8 AM (2)
May 30, 8-9 AM (11)
May 30, 9-10 AM (13)
May 30, 10-11 AM (10)
May 30, 11-12 PM (5)
May 30, 12-1 PM (8)
May 30, 1-2 PM (5)
May 30, 2-3 PM (18)
May 30, 3-4 PM (5)
May 30, 4-5 PM (1)
May 30, 5-6 PM (9)
May 30, 6-7 PM (9)
May 30, 7-8 PM (1)
May 30, 8-9 PM (5)
May 30, 9-10 PM (4)
May 30, 10-11 PM (27)
May 30, 11-12 AM (12)
May 31, 12-1 AM (17)
May 31, 1-2 AM (0)
May 31, 2-3 AM (1)
May 31, 3-4 AM (1)
May 31, 4-5 AM (0)
May 31, 5-6 AM (0)
May 31, 6-7 AM (7)
May 31, 7-8 AM (4)
May 31, 8-9 AM (10)
May 31, 9-10 AM (3)
May 31, 10-11 AM (4)
May 31, 11-12 PM (4)
May 31, 12-1 PM (1)
May 31, 1-2 PM (2)
May 31, 2-3 PM (24)
May 31, 3-4 PM (16)
May 31, 4-5 PM (2)
May 31, 5-6 PM (1)
May 31, 6-7 PM (2)
May 31, 7-8 PM (2)
May 31, 8-9 PM (2)
May 31, 9-10 PM (7)
May 31, 10-11 PM (25)
May 31, 11-12 AM (11)
Jun 01, 12-1 AM (14)
Jun 01, 1-2 AM (7)
Jun 01, 2-3 AM (3)
Jun 01, 3-4 AM (10)
Jun 01, 4-5 AM (13)
Jun 01, 5-6 AM (16)
Jun 01, 6-7 AM (10)
Jun 01, 7-8 AM (14)
Jun 01, 8-9 AM (46)
Jun 01, 9-10 AM (50)
Jun 01, 10-11 AM (19)
Jun 01, 11-12 PM (27)
Jun 01, 12-1 PM (49)
Jun 01, 1-2 PM (40)
Jun 01, 2-3 PM (44)
Jun 01, 3-4 PM (34)
Jun 01, 4-5 PM (54)
Jun 01, 5-6 PM (5)
Jun 01, 6-7 PM (32)
Jun 01, 7-8 PM (37)
Jun 01, 8-9 PM (9)
Jun 01, 9-10 PM (12)
Jun 01, 10-11 PM (30)
Jun 01, 11-12 AM (22)
Jun 02, 12-1 AM (13)
Jun 02, 1-2 AM (8)
Jun 02, 2-3 AM (5)
Jun 02, 3-4 AM (14)
Jun 02, 4-5 AM (10)
Jun 02, 5-6 AM (43)
Jun 02, 6-7 AM (32)
Jun 02, 7-8 AM (58)
Jun 02, 8-9 AM (63)
Jun 02, 9-10 AM (26)
Jun 02, 10-11 AM (19)
Jun 02, 11-12 PM (14)
Jun 02, 12-1 PM (33)
Jun 02, 1-2 PM (0)
3,682 commits this week
May 26, 2026
-
Jun 02, 2026
chore: apply fourmolu and cabal-fmt formatting
test: correct Conway era detection in full-sync parse-error check
yaci-store stores cursor_.era as a numeric ordinal (7 = Conway), not the string "Conway". Map the ordinal to an era name and gate the hard-fork readiness note on era 7, so crossing into the Conway / Van Rossem window is detected correctly during the mainnet full-sync regression. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
nix: add libsodium-vrf pkgconfig override for cardano-crypto-wallet
cardano-crypto-wallet links against libsodium for Argon2id KDF and XChaCha20-Poly1305 AEAD. Without this override, the Windows cross-compiled DLL links against the default system libsodium, which is not available in the Wine iserv environment (only libsodium-vrf is present there, used by all other crypto packages). This caused the iserv to crash (exit 1) at TH-module boundaries when compiling cardano-wallet for Windows/ucrt64.
fix: update tests and tools to IO-returning crypto API
- wallet-key-export.hs: pattern-match HashedCredentials instead of tuple; V2 keys exit with a clear error (no XPrv export possible) - wallet-key-export-test.hs: wrap serializeXPrv args in HashedCredentialsV1 - PersistPrivateKeySpec.hs: bind IO-returning encryptedCreate with >>= - LayerSpec.hs: remove now-redundant XPrv import (Werror) - Cardano.Wallet: use encryptedChainCode in decryptV2 to supply the missing 32-byte chain code so CC.xprv receives the full 96 bytes
chore: update cardano-crypto-wallet SRP to cb068e0 and adapt to IO API
The merged cardano-base PR changed encryptedCreateDirectWithTweak, encryptedValidatePassphrase, and encryptedKeyMaterial to return IO instead of pure Either, since they operate on locked memory. - Bump SRP tag to cb068e0 (merged HEAD of cardano-base master) - mkV2Credentials: lift to IO, bind encryptedCreateDirectWithTweak - attachPrivateKeyFromPwd: bind mkV2Credentials with <- - withRootKey: separate STM read from IO validation so encryptedValidatePassphrase can run outside atomically - migrateV1toV2: bind encryptedCreateDirectWithTweak with >>= - decryptV2: lift to IO; use mlsbToByteString + mlsbFinalize instead of BA.convert (MLockedSizedBytes has no ByteArrayAccess instance)
proto-devnet: Change to All tooltip
Restore numberOfFanoutOutputs to Fanout redeemer
The accumulator-based headIsFinalizedWith used txInfoOutputs directly, which includes the wallet's change output appended by coverFee. Since that output is not in the accumulator, the KZG membership proof failed for every real on-chain fanout. Restore numberOfFanoutOutputs :: Integer to the Fanout redeemer (as in the original hash-based validator) so the validator slices txInfoOutputs to only the distributed UTxOs before running the pairing check and value conservation. Also update the FanOut.hs head output to carry the UTxO value so mustConserveValue passes, and add a unit test that appends a trailing wallet change output and asserts the transaction still evaluates — this would have caught the regression at the contract test level rather than requiring a devnet E2E run. Signed-off-by: Sasha Bogicevic <[email protected]>
Fix healthyFanoutTx head output value for mustConserveValue check
The new accumulator-based headIsFinalizedWith validator checks that the head input value covers all distributed outputs. The test head output was missing UTxO.totalValue, causing H4 (HeadValueIsNotPreserved) failures. Signed-off-by: Sasha Bogicevic <[email protected]>
Regenerate golden files
Signed-off-by: Sasha Bogicevic <[email protected]>
Rebase fix
Signed-off-by: Sasha Bogicevic <[email protected]>
Replace UTxO hash verification with BLS accumulator commitment
Remove utxoHash/alphaUTxOHash/omegaUTxOHash from ClosedDatum, all Close/Contest redeemers, and the snapshot signing tuple. The BLS accumulator already commits to the full UTxO set (utxo ∪ alpha ∪ omega), making the three separate SHA256 hashes redundant. Full fanout now verifies outputs via a KZG membership proof (same as partial fanout) rather than hash comparison. The Fanout redeemer gains proof and crsRef fields; the three output-count fields are dropped. Snapshot signing shrinks from a 7-tuple to a 4-tuple (headId, version, snapshotNumber, accumulatorHash). Signed-off-by: Sasha Bogicevic <[email protected]>
Changelog
Also reduce a diff in the test code Signed-off-by: Sasha Bogicevic <[email protected]>
Refactor
Signed-off-by: Sasha Bogicevic <[email protected]>
Consolidate fanout test constants and fix uncaught exception in postTx
fanoutChunkSize and fanoutOutputThreshold are now defined once in Test.Hydra.Tx.Fixture and imported wherever needed, removing the per-file duplicates. prepareTxToPost gains explicit FanoutTx/FinalPartialFanoutTx branches (error) so GHC's exhaustiveness checker catches any future unhandled constructor, instead of silently falling through a wildcard. The two deadline-slot conversions in mkChain.postTx now throw FailedToConstructFanoutTx (a PostTxError Tx) instead of userError, so the exception is caught by Node.hs's PostTxError handler rather than propagating uncaught and crashing the node.
Use dynamic binary search to find largest fitting fanout chunk
Replace the hardcoded numToDistribute = totalUTxO - 1 in the partial fanout benchmarks with a binary search that finds the largest chunk actually fitting within both the tx size and execution budget, mirroring findFittingFanoutTx in the real node. The Remaining column in the output table now carries meaningful information instead of always showing 1. Also add ContestationDeadlineOutsideTimeHorizon to the PostTxError oneOf in api.yaml, which was defined in Chain.hs but missing from the schema, causing ServerOutputSpec to fail. Signed-off-by: Sasha Bogicevic <[email protected]>
Fix tx-cost bench: drop fanoutChunkSize, widen FinalPartialFanout range
computeFinalPartialFanOutCost was capped at 7 (fanoutChunkSize), hiding the real tx-size limit for the terminal fanout step. Now it sweeps a wide range and searches for the actual maximum, using a single preceding output as minimal setup to reach FanoutProgress. computePartialFanOutMixedCost also dropped its fanoutChunkSize cap and now distributes all-but-one outputs, consistent with the nominal benchmark. The stale description mentioning fanoutChunkSize is corrected accordingly. Signed-off-by: Sasha Bogicevic <[email protected]>
Remove hardcoded fanout chunk/threshold constants; make fanout sizing fully dynamic
HeadLogic no longer uses fanoutChunkSize or fanoutOutputThreshold to decide which tx type to emit. For a fresh fanout it always emits FanoutTx; for an in-progress fanout it always emits FinalPartialFanoutTx. Handlers now owns the sizing decision: it tries the preferred tx first, then falls back to PartialFanoutTx with a decreasing chunk size (starting at N-1) until one fits within the execution budget, using a single shared findFittingFanoutTx helper. PartialFanoutTx is removed from PostChainTx — it is now an internal Handlers detail, never emitted by HeadLogic. fanoutChunkSize and fanoutOutputThreshold are removed from KZGTrustedSetup and all call sites.
Artifacts generated from 75dd27bffce4b0a6b64bfef00b9f1c9a89d992a7
proto-devnet: Throughput dashboard use Mempool events for displaying tx load
fix(stm): fix flakiness in 'SnarkProver' tests
Remove latex dirs from fls-shake
test: add mainnet full-sync integration-test harness
Adds a remote-driven QA harness to validate hard-fork (Van Rossem) readiness end-to-end against mainnet, modelled on cf-token-metadata-registry: - docker-compose.yml + .env: Postgres + API (built from source), syncing mainnet from the first ADA Handle mint (slot 47931310) to tip. DNS-TTL relay-wedge mitigation applied via JAVA_TOOL_OPTIONS (the image entrypoint is a fixed `java -jar`, so JAVA_OPTS would be ignored). - .claude/skills/cf-adahandle-resolver-mainnet-integration-test-full-sync: SSH-driven skill (preflight -> prepare -> compose up -> tunnels -> monitor sync to tip -> parse-error scan -> REST round-trip spot-checks). Pass = full sync through Conway with zero genuine block-parse errors + DB-vs-API consistency on sampled handles. - .gitignore: track .claude/, ignore skill runtime config (config.env, tunnels.pid) and settings.local.json. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Build with oc/geo2a/leios-late-join-v2