Home / Cardano Foundation / cardano-wallet
May 19, 8-9 AM (0)
May 19, 9-10 AM (1)
May 19, 10-11 AM (4)
May 19, 11-12 PM (0)
May 19, 12-1 PM (2)
May 19, 1-2 PM (0)
May 19, 2-3 PM (0)
May 19, 3-4 PM (0)
May 19, 4-5 PM (0)
May 19, 5-6 PM (0)
May 19, 6-7 PM (0)
May 19, 7-8 PM (0)
May 19, 8-9 PM (0)
May 19, 9-10 PM (0)
May 19, 10-11 PM (0)
May 19, 11-12 AM (0)
May 20, 12-1 AM (0)
May 20, 1-2 AM (0)
May 20, 2-3 AM (0)
May 20, 3-4 AM (0)
May 20, 4-5 AM (0)
May 20, 5-6 AM (0)
May 20, 6-7 AM (0)
May 20, 7-8 AM (0)
May 20, 8-9 AM (0)
May 20, 9-10 AM (0)
May 20, 10-11 AM (0)
May 20, 11-12 PM (0)
May 20, 12-1 PM (0)
May 20, 1-2 PM (0)
May 20, 2-3 PM (0)
May 20, 3-4 PM (1)
May 20, 4-5 PM (0)
May 20, 5-6 PM (0)
May 20, 6-7 PM (0)
May 20, 7-8 PM (0)
May 20, 8-9 PM (0)
May 20, 9-10 PM (0)
May 20, 10-11 PM (0)
May 20, 11-12 AM (0)
May 21, 12-1 AM (0)
May 21, 1-2 AM (0)
May 21, 2-3 AM (0)
May 21, 3-4 AM (0)
May 21, 4-5 AM (0)
May 21, 5-6 AM (0)
May 21, 6-7 AM (0)
May 21, 7-8 AM (0)
May 21, 8-9 AM (0)
May 21, 9-10 AM (0)
May 21, 10-11 AM (0)
May 21, 11-12 PM (0)
May 21, 12-1 PM (0)
May 21, 1-2 PM (0)
May 21, 2-3 PM (0)
May 21, 3-4 PM (0)
May 21, 4-5 PM (0)
May 21, 5-6 PM (0)
May 21, 6-7 PM (0)
May 21, 7-8 PM (0)
May 21, 8-9 PM (0)
May 21, 9-10 PM (0)
May 21, 10-11 PM (0)
May 21, 11-12 AM (0)
May 22, 12-1 AM (0)
May 22, 1-2 AM (0)
May 22, 2-3 AM (0)
May 22, 3-4 AM (0)
May 22, 4-5 AM (0)
May 22, 5-6 AM (0)
May 22, 6-7 AM (0)
May 22, 7-8 AM (0)
May 22, 8-9 AM (0)
May 22, 9-10 AM (0)
May 22, 10-11 AM (0)
May 22, 11-12 PM (0)
May 22, 12-1 PM (0)
May 22, 1-2 PM (0)
May 22, 2-3 PM (0)
May 22, 3-4 PM (0)
May 22, 4-5 PM (0)
May 22, 5-6 PM (0)
May 22, 6-7 PM (0)
May 22, 7-8 PM (0)
May 22, 8-9 PM (0)
May 22, 9-10 PM (0)
May 22, 10-11 PM (0)
May 22, 11-12 AM (0)
May 23, 12-1 AM (0)
May 23, 1-2 AM (0)
May 23, 2-3 AM (0)
May 23, 3-4 AM (0)
May 23, 4-5 AM (0)
May 23, 5-6 AM (0)
May 23, 6-7 AM (0)
May 23, 7-8 AM (0)
May 23, 8-9 AM (0)
May 23, 9-10 AM (0)
May 23, 10-11 AM (0)
May 23, 11-12 PM (0)
May 23, 12-1 PM (0)
May 23, 1-2 PM (0)
May 23, 2-3 PM (0)
May 23, 3-4 PM (0)
May 23, 4-5 PM (0)
May 23, 5-6 PM (0)
May 23, 6-7 PM (0)
May 23, 7-8 PM (0)
May 23, 8-9 PM (0)
May 23, 9-10 PM (0)
May 23, 10-11 PM (0)
May 23, 11-12 AM (0)
May 24, 12-1 AM (0)
May 24, 1-2 AM (0)
May 24, 2-3 AM (0)
May 24, 3-4 AM (0)
May 24, 4-5 AM (0)
May 24, 5-6 AM (0)
May 24, 6-7 AM (0)
May 24, 7-8 AM (0)
May 24, 8-9 AM (0)
May 24, 9-10 AM (0)
May 24, 10-11 AM (0)
May 24, 11-12 PM (0)
May 24, 12-1 PM (0)
May 24, 1-2 PM (0)
May 24, 2-3 PM (0)
May 24, 3-4 PM (0)
May 24, 4-5 PM (0)
May 24, 5-6 PM (0)
May 24, 6-7 PM (0)
May 24, 7-8 PM (0)
May 24, 8-9 PM (0)
May 24, 9-10 PM (0)
May 24, 10-11 PM (0)
May 24, 11-12 AM (0)
May 25, 12-1 AM (0)
May 25, 1-2 AM (0)
May 25, 2-3 AM (0)
May 25, 3-4 AM (0)
May 25, 4-5 AM (0)
May 25, 5-6 AM (0)
May 25, 6-7 AM (0)
May 25, 7-8 AM (0)
May 25, 8-9 AM (0)
May 25, 9-10 AM (0)
May 25, 10-11 AM (0)
May 25, 11-12 PM (0)
May 25, 12-1 PM (0)
May 25, 1-2 PM (0)
May 25, 2-3 PM (0)
May 25, 3-4 PM (0)
May 25, 4-5 PM (0)
May 25, 5-6 PM (0)
May 25, 6-7 PM (0)
May 25, 7-8 PM (0)
May 25, 8-9 PM (0)
May 25, 9-10 PM (0)
May 25, 10-11 PM (0)
May 25, 11-12 AM (0)
May 26, 12-1 AM (0)
May 26, 1-2 AM (0)
May 26, 2-3 AM (0)
May 26, 3-4 AM (0)
May 26, 4-5 AM (0)
May 26, 5-6 AM (0)
May 26, 6-7 AM (0)
May 26, 7-8 AM (0)
May 26, 8-9 AM (0)
8 commits this week May 19, 2026 - May 26, 2026
fix(5285): clean full-unit import warning
`TransactionLedgerSpec.buildLegacyParityTx` no longer references
`toCardanoLovelace` or `toCardanoStakeCredential` after the unsigned
builder migration moved its withdrawal and fee inputs onto ledger
types. Drop the two unused imports so the full-unit GitHub Actions
build (which sets `-Werror=unused-imports`) is green.

Tasks: T010, T011, T012, T013
feat(5285): migrate unsigned Shelley tx builder
Move the unsigned Shelley transaction body builder onto ledger types so
`mkUnsignedTx` no longer routes through `Cardano.createTransactionBody`
or `Cardano.TxBodyContent`.

The shared ledger builder now lives in a new acyclic sibling module
`Cardano.Wallet.Shelley.Transaction.Unsigned`. Both
`Cardano.Wallet.Shelley.Transaction` and
`Cardano.Wallet.Shelley.Transaction.Ledger` import it without
re-introducing the legacy cycle that `Transaction.Ledger -> Transaction`
required for `signTransaction`/`txConstraints`. `mkUnsignedTx` takes
ledger `[TxCert era]` and `Withdrawal` directly, constructs the body
with `buildLedgerTxRaw`/`mkLedgerTx`, and extracts the `Cardano.TxBody`
shape from the ledger tx so existing signing call sites keep their API
surface untouched (signing rewrite remains scoped to #5289).

`Cardano.Wallet.Transaction.Delegation` and
`Cardano.Wallet.Transaction.Voting` are deleted; their last call sites
use the ledger-native helpers
`certificateFromDelegationActionLedger` /
`certificateFromVotingActionLedger` exported by
`Transaction.Unsigned`, and the cabal `exposed-modules` block is
updated accordingly. Dijkstra remains unsupported exactly as today, and
no files under `lib/integration/**` are touched.

Tasks: T010, T011, T012, T013
feat(5288): script-witness support in Transaction.Ledger (#5291)
## Resolves

- #5288 — script-witness support in `Transaction.Ledger`.
- Parent: #5243 (transaction-layer cardano-api removal).
- Blocks: #5285.

## Status

Ready for review.

Implementation commit: `3cb6e7ae9bd954a47a23bcadd4f40cb11e0fa541`.
Finalization commit: `309f58bb9ff589135cd85a558e937d96c07965d5`.
CI warning fix: `8c717bf2a8a6139381533fa0772516c6934a5d2d`.

## Delivered Scope

`Cardano.Wallet.Shelley.Transaction.Ledger` now accepts the
script-witness surface currently consumed by legacy `mkUnsignedTx`:

- `swNativeInputs :: Map TxIn (Script KeyHash)` — native spending
witnesses.
- `swStakingScript :: Maybe (Script KeyHash)` — staking-credential
script for withdrawals and certificates.
- `swMintingSources :: Map AssetId ScriptSource` — local mint scripts
and reference-input mint policies.
- `swReferenceScript :: Maybe (Script KeyHash)` — output-attached
reference script.

The default `noScriptWitnesses` preserves the existing production call
sites in `mkTransaction` and `constructUnsignedTxLedger`. `mkUnsignedTx`
and `mkUnsignedTransaction` are intentionally unchanged; their migration
remains #5285.

The new builder mirrors the legacy body/witness shape, including
reference-input minting and the legacy one-witness-per-token-policy
merge for local mint scripts.

## Tests

Added `Cardano.Wallet.Shelley.TransactionLedgerSpec` coverage for:

- six enumerated Conway parity scenarios: native input script, staking
script, local mint, reference-input mint, output reference script, and
mixed witnesses,
- `prop_buildLedgerTx_matches_mkUnsignedTx_on_script_witnesses` with 100
QuickCheck cases,
- body-CBOR equality and `witsTxL . scriptTxWitsL` equality between
legacy and ledger-native builders.

## Local Verification

Fresh local gate at implementation HEAD
`3cb6e7ae9bd954a47a23bcadd4f40cb11e0fa541` before the final `gate.sh`
removal commit:

```text
./gate.sh
Cardano.Wallet.Shelley.TransactionLedger: 27 examples, 0 failures
prop_buildLedgerTx_matches_mkUnsignedTx_on_script_witnesses: OK, passed 100 tests
HLint: No hints
exit 0
```

The exact earlier failing property seed was also rerun before the full
gate:

```text
--seed 1404754578
1 example, 0 failures
OK, passed 100 tests
```

CI-warning repair at `8c717bf2a8a6139381533fa0772516c6934a5d2d` was
verified locally with the same Nix surfaces as the failed GitHub job:

```text
git diff --check
exit 0

nix build --quiet .#unit-cardano-wallet-unit
exit 0

nix build --quiet .#cardano-wallet .#cardano-node .#cardano-cli .#local-cluster .#integration-exe .#test-local-cluster-exe .#unit-cardano-wallet-unit .#unit-cardano-numeric .#unit-cardano-wallet-primitive .#unit-cardano-wallet-secrets .#unit-cardano-wallet-test-utils .#unit-cardano-wallet-launcher .#unit-cardano-wallet-network-layer .#unit-cardano-wallet-application-tls .#unit-cardano-wallet-blackbox-benchmarks .#unit-delta-chain .#unit-delta-store .#unit-delta-table .#unit-delta-types .#unit-std-gen-seed .#unit-wai-middleware-logging .#unit-benchmark-history .#wallet-key-export .#wallet-key-export-test
exit 0
```

Finalization audit at `309f58bb9ff589135cd85a558e937d96c07965d5`:

```text
OK: every commit passes the message gate; tasks.md is complete.
git show --check HEAD: clean
```

No files under `lib/integration/**` are touched by this branch.

## Non-goals

- No migration of `mkUnsignedTransaction` itself (#5285).
- No new Dijkstra-era behaviour (#5209).
- No changes under `lib/integration/**`.
- No removal of the `cardano-api` build-dep (#5290).
- No changes to transaction signing (#5289).

## Live-boundary Check

The live-boundary diagnostic returns "none" for this slice: the parity
proof compares CBOR bytes of two pure builders over hand-rolled
selections; no node/database/API boundary is in the picture (see
`plan.md` "Live-boundary check").