Home / Cardano Foundation / cardano-balance-transaction
Mar 30, 7-8 AM (0)
Mar 30, 8-9 AM (0)
Mar 30, 9-10 AM (0)
Mar 30, 10-11 AM (0)
Mar 30, 11-12 PM (0)
Mar 30, 12-1 PM (0)
Mar 30, 1-2 PM (0)
Mar 30, 2-3 PM (0)
Mar 30, 3-4 PM (0)
Mar 30, 4-5 PM (0)
Mar 30, 5-6 PM (0)
Mar 30, 6-7 PM (0)
Mar 30, 7-8 PM (0)
Mar 30, 8-9 PM (0)
Mar 30, 9-10 PM (0)
Mar 30, 10-11 PM (0)
Mar 30, 11-12 AM (0)
Mar 31, 12-1 AM (0)
Mar 31, 1-2 AM (0)
Mar 31, 2-3 AM (0)
Mar 31, 3-4 AM (0)
Mar 31, 4-5 AM (0)
Mar 31, 5-6 AM (0)
Mar 31, 6-7 AM (0)
Mar 31, 7-8 AM (0)
Mar 31, 8-9 AM (0)
Mar 31, 9-10 AM (0)
Mar 31, 10-11 AM (0)
Mar 31, 11-12 PM (0)
Mar 31, 12-1 PM (0)
Mar 31, 1-2 PM (0)
Mar 31, 2-3 PM (0)
Mar 31, 3-4 PM (0)
Mar 31, 4-5 PM (0)
Mar 31, 5-6 PM (0)
Mar 31, 6-7 PM (0)
Mar 31, 7-8 PM (0)
Mar 31, 8-9 PM (0)
Mar 31, 9-10 PM (0)
Mar 31, 10-11 PM (0)
Mar 31, 11-12 AM (0)
Apr 01, 12-1 AM (0)
Apr 01, 1-2 AM (0)
Apr 01, 2-3 AM (0)
Apr 01, 3-4 AM (0)
Apr 01, 4-5 AM (0)
Apr 01, 5-6 AM (0)
Apr 01, 6-7 AM (0)
Apr 01, 7-8 AM (0)
Apr 01, 8-9 AM (0)
Apr 01, 9-10 AM (0)
Apr 01, 10-11 AM (0)
Apr 01, 11-12 PM (0)
Apr 01, 12-1 PM (0)
Apr 01, 1-2 PM (0)
Apr 01, 2-3 PM (0)
Apr 01, 3-4 PM (0)
Apr 01, 4-5 PM (0)
Apr 01, 5-6 PM (0)
Apr 01, 6-7 PM (0)
Apr 01, 7-8 PM (0)
Apr 01, 8-9 PM (0)
Apr 01, 9-10 PM (0)
Apr 01, 10-11 PM (0)
Apr 01, 11-12 AM (0)
Apr 02, 12-1 AM (0)
Apr 02, 1-2 AM (0)
Apr 02, 2-3 AM (0)
Apr 02, 3-4 AM (0)
Apr 02, 4-5 AM (0)
Apr 02, 5-6 AM (0)
Apr 02, 6-7 AM (0)
Apr 02, 7-8 AM (0)
Apr 02, 8-9 AM (0)
Apr 02, 9-10 AM (0)
Apr 02, 10-11 AM (1)
Apr 02, 11-12 PM (0)
Apr 02, 12-1 PM (0)
Apr 02, 1-2 PM (0)
Apr 02, 2-3 PM (0)
Apr 02, 3-4 PM (0)
Apr 02, 4-5 PM (0)
Apr 02, 5-6 PM (0)
Apr 02, 6-7 PM (0)
Apr 02, 7-8 PM (0)
Apr 02, 8-9 PM (0)
Apr 02, 9-10 PM (0)
Apr 02, 10-11 PM (0)
Apr 02, 11-12 AM (0)
Apr 03, 12-1 AM (0)
Apr 03, 1-2 AM (0)
Apr 03, 2-3 AM (0)
Apr 03, 3-4 AM (0)
Apr 03, 4-5 AM (0)
Apr 03, 5-6 AM (0)
Apr 03, 6-7 AM (0)
Apr 03, 7-8 AM (3)
Apr 03, 8-9 AM (0)
Apr 03, 9-10 AM (1)
Apr 03, 10-11 AM (0)
Apr 03, 11-12 PM (0)
Apr 03, 12-1 PM (0)
Apr 03, 1-2 PM (0)
Apr 03, 2-3 PM (0)
Apr 03, 3-4 PM (0)
Apr 03, 4-5 PM (0)
Apr 03, 5-6 PM (0)
Apr 03, 6-7 PM (0)
Apr 03, 7-8 PM (0)
Apr 03, 8-9 PM (0)
Apr 03, 9-10 PM (0)
Apr 03, 10-11 PM (0)
Apr 03, 11-12 AM (0)
Apr 04, 12-1 AM (0)
Apr 04, 1-2 AM (0)
Apr 04, 2-3 AM (0)
Apr 04, 3-4 AM (0)
Apr 04, 4-5 AM (0)
Apr 04, 5-6 AM (0)
Apr 04, 6-7 AM (0)
Apr 04, 7-8 AM (0)
Apr 04, 8-9 AM (0)
Apr 04, 9-10 AM (0)
Apr 04, 10-11 AM (33)
Apr 04, 11-12 PM (0)
Apr 04, 12-1 PM (12)
Apr 04, 1-2 PM (0)
Apr 04, 2-3 PM (0)
Apr 04, 3-4 PM (0)
Apr 04, 4-5 PM (0)
Apr 04, 5-6 PM (0)
Apr 04, 6-7 PM (0)
Apr 04, 7-8 PM (0)
Apr 04, 8-9 PM (0)
Apr 04, 9-10 PM (0)
Apr 04, 10-11 PM (0)
Apr 04, 11-12 AM (0)
Apr 05, 12-1 AM (0)
Apr 05, 1-2 AM (0)
Apr 05, 2-3 AM (0)
Apr 05, 3-4 AM (0)
Apr 05, 4-5 AM (0)
Apr 05, 5-6 AM (6)
Apr 05, 6-7 AM (11)
Apr 05, 7-8 AM (3)
Apr 05, 8-9 AM (0)
Apr 05, 9-10 AM (0)
Apr 05, 10-11 AM (7)
Apr 05, 11-12 PM (4)
Apr 05, 12-1 PM (3)
Apr 05, 1-2 PM (0)
Apr 05, 2-3 PM (0)
Apr 05, 3-4 PM (0)
Apr 05, 4-5 PM (4)
Apr 05, 5-6 PM (0)
Apr 05, 6-7 PM (0)
Apr 05, 7-8 PM (0)
Apr 05, 8-9 PM (0)
Apr 05, 9-10 PM (0)
Apr 05, 10-11 PM (0)
Apr 05, 11-12 AM (0)
Apr 06, 12-1 AM (0)
Apr 06, 1-2 AM (0)
Apr 06, 2-3 AM (0)
Apr 06, 3-4 AM (0)
Apr 06, 4-5 AM (0)
Apr 06, 5-6 AM (0)
Apr 06, 6-7 AM (0)
Apr 06, 7-8 AM (0)
88 commits this week Mar 30, 2026 - Apr 06, 2026
feat: add Dijkstra CBOR round-trip golden tests
Dijkstra deserializes Conway CBOR identically (backwards compatible).
Reuse the existing 152 Conway golden files for Dijkstra round-trips.

One file (42.cbor) is skipped: it contains a certificate without
deposits, which Conway accepts but Dijkstra rejects
("Certificates without deposits are no longer supported").

151 new Dijkstra serialization tests, 420 total (up from 268).
refactor!: remove cardano-api from test dependencies
Delete orphaned Cardano.Api.Gen module (2056 lines) and remove
cardano-api from test build-depends. Also remove 10 transitive
test deps that were only needed by Gen.hs.

Verified:
- Zero Cardano.Api imports in lib/ and test/
- cardano-api absent from cabal dependency plan
- 234/234 tests pass, 0 assertions modified
- 152 CBOR golden round-trips byte-identical
refactor: replace cardano-api generators with ledger-native equivalents
Rewrite all QuickCheck generators in BalanceSpec.hs to use
cardano-ledger types directly, removing the last cardano-api
usage from the test infrastructure.

Generator population comparison (1000 samples each):

genTxForBalancing @ConwayEra:
                          OLD         NEW
  has inputs:           100.0%      100.0%
  has certificates:      47.5%       44.5%
  has withdrawals:       54.6%       61.0%
  has collateral in:      0.4%        5.0%
  has totalCollat:        4.4%        6.7%
  has returnCollat:       4.8%        3.9%
  has validity lo:      100.0%      100.0%
  has validity hi:       49.1%       49.0%

genTxOut @ConwayEra:
                          OLD         NEW
  shelley:               51.3%       47.4%
  byron:                 48.7%       52.6%
  mainnet:               48.2%       44.8%
  testnet:                3.1%        2.6%
  key pay cred:          24.3%       24.3%
  script pay cred:       27.0%       23.1%
  has stake ref:         25.9%       23.4%

No test assertions were modified. All 234 tests pass.
refactor!: remove cardano-api from library
Remove CardanoApiEra type family, IsShelleyBasedEra constraint,
toCardanoApiTx/fromCardanoApiTx, and all cardano-api imports from
library modules. IsRecentEra now only requires Typeable and
RecentEraConstraints. Enum AnyRecentEra uses manual numbering.

BREAKING CHANGE: CardanoApiEra, toCardanoApiTx, fromCardanoApiTx,
cardanoEraFromRecentEra, shelleyBasedEraFromRecentEra removed from
public API.
refactor!: remove cardano-api from tests
Delete Cardano/Api/Gen.hs (~2000 lines of cardano-api generators).
Rewrite BalanceSpec.hs to use ledger-native generators:
- genTxForBalancing: mkBasicTx with random outputs
- genTxOut: mkBasicTxOut with proper Shelley addresses
- genLedgerAddr: Addr Testnet with random KeyHash
- Wallet Arbitrary: ledger TxOut generators
- shrinkTx: simplified to const []
- NetworkId: replaced with local TestNetworkId type
- Remove cardano-api from test build-depends

BREAKING CHANGE: Cardano.Api.Gen test module removed.
refactor!: remove cardano-api from tests
Delete Cardano/Api/Gen.hs (~2000 lines of cardano-api generators).
Rewrite BalanceSpec.hs to use ledger-native generators:
- genTxForBalancing: mkBasicTx with random outputs
- genTxOut: mkBasicTxOut with proper Shelley addresses
- genLedgerAddr: Addr Testnet with random KeyHash
- Wallet Arbitrary: ledger TxOut generators
- shrinkTx: simplified to const []
- NetworkId: replaced with local TestNetworkId type
- Remove cardano-api from test build-depends

BREAKING CHANGE: Cardano.Api.Gen test module removed.
refactor!: remove cardano-api from library
Remove CardanoApiEra type family, IsShelleyBasedEra constraint,
toCardanoApiTx/fromCardanoApiTx, and all cardano-api imports from
library modules. IsRecentEra now only requires Typeable and
RecentEraConstraints. Enum AnyRecentEra uses manual numbering.

BREAKING CHANGE: CardanoApiEra, toCardanoApiTx, fromCardanoApiTx,
cardanoEraFromRecentEra, shelleyBasedEraFromRecentEra removed from
public API.
refactor: replace cardano-api usage in Sign.hs with ledger lenses
Rewrite estimateKeyWitnessCounts to use ledger lenses and types
directly instead of going through CardanoApi.getTxBodyContent:

- Transaction inputs via inputsTxBodyL + collateralInputsTxBodyL
- Required signers via reqSignerHashesTxBodyG (getter, no AtMostEra)
- Withdrawals via withdrawalsTxBodyL, counting by RewardAccount cred
- Certificates via certsTxBodyL with direct TxCert pattern matching
- Removed txUpdateProposal handling (not in Conway/Dijkstra)
- estimateDelegSigningKeys takes Ledger.TxCert directly
refactor: replace cardano-api usage in Sign.hs with ledger lenses
Rewrite estimateKeyWitnessCounts to use ledger lenses and types
directly instead of going through CardanoApi.getTxBodyContent:

- Transaction inputs via inputsTxBodyL + collateralInputsTxBodyL
- Required signers via reqSignerHashesTxBodyG (getter, no AtMostEra)
- Withdrawals via withdrawalsTxBodyL, counting by RewardAccount cred
- Certificates via certsTxBodyL with direct TxCert pattern matching
- Removed txUpdateProposal handling (not in Conway/Dijkstra)
- estimateDelegSigningKeys takes Ledger.TxCert directly