Apr 29, 7-8 PM (14)
Apr 29, 8-9 PM (13)
Apr 29, 9-10 PM (17)
Apr 29, 10-11 PM (25)
Apr 29, 11-12 AM (29)
Apr 30, 12-1 AM (6)
Apr 30, 1-2 AM (8)
Apr 30, 2-3 AM (1)
Apr 30, 3-4 AM (6)
Apr 30, 4-5 AM (2)
Apr 30, 5-6 AM (8)
Apr 30, 6-7 AM (15)
Apr 30, 7-8 AM (17)
Apr 30, 8-9 AM (100)
Apr 30, 9-10 AM (19)
Apr 30, 10-11 AM (50)
Apr 30, 11-12 PM (120)
Apr 30, 12-1 PM (69)
Apr 30, 1-2 PM (45)
Apr 30, 2-3 PM (117)
Apr 30, 3-4 PM (29)
Apr 30, 4-5 PM (34)
Apr 30, 5-6 PM (9)
Apr 30, 6-7 PM (20)
Apr 30, 7-8 PM (23)
Apr 30, 8-9 PM (28)
Apr 30, 9-10 PM (13)
Apr 30, 10-11 PM (25)
Apr 30, 11-12 AM (15)
May 01, 12-1 AM (18)
May 01, 1-2 AM (15)
May 01, 2-3 AM (6)
May 01, 3-4 AM (7)
May 01, 4-5 AM (3)
May 01, 5-6 AM (5)
May 01, 6-7 AM (8)
May 01, 7-8 AM (15)
May 01, 8-9 AM (24)
May 01, 9-10 AM (17)
May 01, 10-11 AM (16)
May 01, 11-12 PM (17)
May 01, 12-1 PM (39)
May 01, 1-2 PM (32)
May 01, 2-3 PM (19)
May 01, 3-4 PM (16)
May 01, 4-5 PM (25)
May 01, 5-6 PM (11)
May 01, 6-7 PM (20)
May 01, 7-8 PM (22)
May 01, 8-9 PM (65)
May 01, 9-10 PM (15)
May 01, 10-11 PM (40)
May 01, 11-12 AM (61)
May 02, 12-1 AM (6)
May 02, 1-2 AM (11)
May 02, 2-3 AM (5)
May 02, 3-4 AM (8)
May 02, 4-5 AM (6)
May 02, 5-6 AM (2)
May 02, 6-7 AM (2)
May 02, 7-8 AM (14)
May 02, 8-9 AM (7)
May 02, 9-10 AM (8)
May 02, 10-11 AM (11)
May 02, 11-12 PM (7)
May 02, 12-1 PM (7)
May 02, 1-2 PM (3)
May 02, 2-3 PM (14)
May 02, 3-4 PM (9)
May 02, 4-5 PM (27)
May 02, 5-6 PM (9)
May 02, 6-7 PM (29)
May 02, 7-8 PM (11)
May 02, 8-9 PM (15)
May 02, 9-10 PM (1)
May 02, 10-11 PM (20)
May 02, 11-12 AM (18)
May 03, 12-1 AM (8)
May 03, 1-2 AM (1)
May 03, 2-3 AM (4)
May 03, 3-4 AM (7)
May 03, 4-5 AM (1)
May 03, 5-6 AM (4)
May 03, 6-7 AM (32)
May 03, 7-8 AM (5)
May 03, 8-9 AM (1)
May 03, 9-10 AM (3)
May 03, 10-11 AM (10)
May 03, 11-12 PM (11)
May 03, 12-1 PM (16)
May 03, 1-2 PM (11)
May 03, 2-3 PM (2)
May 03, 3-4 PM (2)
May 03, 4-5 PM (5)
May 03, 5-6 PM (0)
May 03, 6-7 PM (5)
May 03, 7-8 PM (6)
May 03, 8-9 PM (8)
May 03, 9-10 PM (15)
May 03, 10-11 PM (23)
May 03, 11-12 AM (17)
May 04, 12-1 AM (4)
May 04, 1-2 AM (4)
May 04, 2-3 AM (10)
May 04, 3-4 AM (9)
May 04, 4-5 AM (5)
May 04, 5-6 AM (6)
May 04, 6-7 AM (6)
May 04, 7-8 AM (28)
May 04, 8-9 AM (24)
May 04, 9-10 AM (43)
May 04, 10-11 AM (36)
May 04, 11-12 PM (61)
May 04, 12-1 PM (34)
May 04, 1-2 PM (48)
May 04, 2-3 PM (64)
May 04, 3-4 PM (33)
May 04, 4-5 PM (64)
May 04, 5-6 PM (49)
May 04, 6-7 PM (13)
May 04, 7-8 PM (31)
May 04, 8-9 PM (45)
May 04, 9-10 PM (9)
May 04, 10-11 PM (54)
May 04, 11-12 AM (24)
May 05, 12-1 AM (4)
May 05, 1-2 AM (5)
May 05, 2-3 AM (5)
May 05, 3-4 AM (11)
May 05, 4-5 AM (11)
May 05, 5-6 AM (50)
May 05, 6-7 AM (16)
May 05, 7-8 AM (36)
May 05, 8-9 AM (81)
May 05, 9-10 AM (68)
May 05, 10-11 AM (34)
May 05, 11-12 PM (72)
May 05, 12-1 PM (115)
May 05, 1-2 PM (118)
May 05, 2-3 PM (66)
May 05, 3-4 PM (91)
May 05, 4-5 PM (41)
May 05, 5-6 PM (26)
May 05, 6-7 PM (28)
May 05, 7-8 PM (73)
May 05, 8-9 PM (31)
May 05, 9-10 PM (18)
May 05, 10-11 PM (25)
May 05, 11-12 AM (17)
May 06, 12-1 AM (10)
May 06, 1-2 AM (5)
May 06, 2-3 AM (9)
May 06, 3-4 AM (22)
May 06, 4-5 AM (5)
May 06, 5-6 AM (13)
May 06, 6-7 AM (29)
May 06, 7-8 AM (11)
May 06, 8-9 AM (106)
May 06, 9-10 AM (24)
May 06, 10-11 AM (39)
May 06, 11-12 PM (46)
May 06, 12-1 PM (82)
May 06, 1-2 PM (52)
May 06, 2-3 PM (43)
May 06, 3-4 PM (32)
May 06, 4-5 PM (18)
May 06, 5-6 PM (8)
May 06, 6-7 PM (10)
May 06, 7-8 PM (0)
4,145 commits this week Apr 29, 2026 - May 06, 2026
Migrate friendly rendering to experimental API types
friendlyTx and friendlyTxBody now take Exp.SignedTx / Exp.UnsignedTx
instead of the old Tx / TxBody. friendlyTxBodyImpl reads every field
directly from the ledger TxBody via lenses, so the old TxBodyContent
constructor and getTxBodyContent are no longer used in this module.

Pre-Conway eras are no longer supported by transaction view; the
TransactionView caller errors out via caseShelleyToBabbageOrConwayEraOnwards.
fix(asteria-game): tighten eventually/finally probe budgets + drop AlwaysOrUnreachable cold-start
Two related findings on the cardano_node_adversary 1h dispatch
(report 9_VSL0Up0MFelP0KPcfYVGa2):

  Always: Commands finish with zero exit code → stub/eventually_alive.sh
  Always: Commands finish with zero exit code → stub/finally_alive.sh
  Always assertions → stub eventually_alive cold_start

Both probes were budgeted at 30 s settle + 15×2 s retries = 60 s
worst case. The Antithesis composer's per-command timeout is well
below that — observed ≤16 s for parallel/eventually commands and
≤54 s for finally commands across multiple reports — so the
probes were getting SIGKILL'd by composer mid-loop and registering
as exit-code findings. Tightening to 3 s settle + 8×1 s = 11 s
worst case fits comfortably under any of the observed bounds.

The cold-start path used `sdk_unreachable`, which emits an
`AlwaysOrUnreachable` assertion with hit:true + condition:false —
that fires as an Always-class finding, defeating the script
comment's stated intent ("emit silently and exit 0 so a
fault-cascade window doesn't flag as a real liveness failure"). The
right primitive for an informational observation is
`sdk_sometimes false`, which records the rate without triggering a
finding when the assertion isn't continuously true. Switched the
cold-start emit to that.

Both probes now exit 0 unconditionally — the SDK assertion already
records the outcome; a non-zero shell exit just duplicates the
signal under the "Always: zero exit code" property. The Sometimes
events visible in the report make the failure mode equally
diagnosable without needing a finding.

The 13 s indexer cold-start absorption noted in the original
comments isn't lost — `slotsBehind <= 5` still polls every 1 s for
8 attempts after the 3 s settle, giving roughly the same number of
RollForward arrivals to catch up. The settle is purely the initial
"don't hammer the socket while the indexer is reconnecting" delay;
the loop's per-attempt sleep does the actual waiting.
fix(asteria-game): tighten eventually/finally probe budgets + drop AlwaysOrUnreachable cold-start
Two related findings on the cardano_node_adversary 1h dispatch
(report 9_VSL0Up0MFelP0KPcfYVGa2):

  Always: Commands finish with zero exit code → stub/eventually_alive.sh
  Always: Commands finish with zero exit code → stub/finally_alive.sh
  Always assertions → stub eventually_alive cold_start

Both probes were budgeted at 30 s settle + 15×2 s retries = 60 s
worst case. The Antithesis composer's per-command timeout is well
below that — observed ≤16 s for parallel/eventually commands and
≤54 s for finally commands across multiple reports — so the
probes were getting SIGKILL'd by composer mid-loop and registering
as exit-code findings. Tightening to 3 s settle + 8×1 s = 11 s
worst case fits comfortably under any of the observed bounds.

The cold-start path used `sdk_unreachable`, which emits an
`AlwaysOrUnreachable` assertion with hit:true + condition:false —
that fires as an Always-class finding, defeating the script
comment's stated intent ("emit silently and exit 0 so a
fault-cascade window doesn't flag as a real liveness failure"). The
right primitive for an informational observation is
`sdk_sometimes false`, which records the rate without triggering a
finding when the assertion isn't continuously true. Switched the
cold-start emit to that.

Both probes now exit 0 unconditionally — the SDK assertion already
records the outcome; a non-zero shell exit just duplicates the
signal under the "Always: zero exit code" property. The Sometimes
events visible in the report make the failure mode equally
diagnosable without needing a finding.

The 13 s indexer cold-start absorption noted in the original
comments isn't lost — `slotsBehind <= 5` still polls every 1 s for
8 attempts after the 3 s settle, giving roughly the same number of
RollForward arrivals to catch up. The settle is purely the initial
"don't hammer the socket while the indexer is reconnecting" delay;
the loop's per-attempt sleep does the actual waiting.
chore(deps): bump openssl from 0.10.72 to 0.10.79
Bumps [openssl](https://github.com/rust-openssl/rust-openssl) from 0.10.72 to 0.10.79.
- [Release notes](https://github.com/rust-openssl/rust-openssl/releases)
- [Commits](https://github.com/rust-openssl/rust-openssl/compare/openssl-v0.10.72...openssl-v0.10.79)

---
updated-dependencies:
- dependency-name: openssl
  dependency-version: 0.10.79
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
feat: add cardano-crypto-wallet-v2 package
Introduces a new package providing authenticated v2 envelope wrapping
for Byron HD wallet extended private keys.

Key design:
- C layer handles ed25519 key generation, public-key derivation, signing,
  and BIP32 child derivation; it stores and operates on plaintext key
  material only; public symbols are prefixed cwv2_ to avoid linker
  conflicts with the legacy cardano-crypto C library
- Haskell layer owns all encryption: Argon2id key derivation
  (128 MiB, t=3, p=4) and XChaCha20-Poly1305 AEAD wrapping with a
  freshly randomized salt and nonce per write
- CBOR-encoded versioned envelope with explicit associated data binding
  format version, KDF parameters, cipher, payload shape, public key,
  and chain code — preventing silent swaps without detection
- Fail-closed public API: passphrase-using operations return Either and
  reject wrong passphrases at authentication time
- Test helpers for fast-KDF and deterministic randomness modes keep the
  test suite sub-second without touching production paths
- Benchmark suite covers create, validate, sign, and change-passphrase
  under production Argon2id parameters
Add `Test.Cardano.Ledger.Core.Binary.Golden.goldenExampleEraTxCborSpec` in cardano-ledger-core:testlib and generate the golden example transactions for each era.
`goldenExampleEraTxCborSpec` allows us to generate a `Spec` for
generating a `golden/tx.cbor` golden file out of some `Tx` provided as a
parameter.

Then, for each era's test-suite, we call this function to generate the
golden file using the example transaction we have defined for each era.

We also extended `EraTest` so that we don't need to manually call
`getDataFileName` in order to get the fullpath for each era's cabal
project.

We also create new `Binary.Golden` modules for Mary and Babbage (previously
they reused Allegra's and Alonzo's respectively, which used the wrong era's
example transactions).

Additionally, fix `exampleDijkstraBasedTopTx` to not add PlutusV4 scripts
to `scriptTxWitsL`: PlutusV4 is not included in Dijkstra's
`transaction_witness_set` CDDL, so those scripts were
silently dropped during serialization, causing a roundtrip failure.