This changelog contains notable changes that made into each cardano-node release,
starting with version 8.0. We also provide per-Haskell-package changelogs. Please see
the CHANGELOG.md for each individual package for any changes relevant for developers.
If you are looking for the Ledger Releasing and Versioning Process then you can find it in RELEASING.md.
-
Full PlutusV3 support
-
Support for governance policy script
-
Remove the library
cardano-ledger-pretty -
Ensure all sets are prefixed with tag 258 in CBOR serialization
-
Added DRep injections into the ledger state, thus allowing more complex testing and benchmarking of Conway features
-
Addition of new ledger events
-
Increasing the limit for Url in Anchors to 128 bytes
-
Provide accurate transaction fee estimation functionality for Haskell tools
-
Important bug fixes:
- missing
"protocolVersion"field in JSON instance for Babbage and Conway protocol parameters - requiring witnesses for DRep registration
- new committee governance action ratification was implemented incorrectly
- guard against invalid protocol versions in hard fork initiation proposals
- failures during updates of Plutus CostModels were not retained
- fixed the types for some protocol parameters in order to prevent values that are too large
- serialization and CDDL fixes for transaction witnesses in the Conway Era
- missing
- Fix
PParamsUpdategovernance action ratification. Votes of DReps are now accounted for. - Move CDDL specification files from test packages into libraries that actually implement each era.
- Add ability to retain Plutus logs for debugging when running scripts
- Adition of
ConwayGovEvent - Enforce no duplicates for submitted ProposalProcedures
- Fix deserialization of
CostModelsin thePParamsUpdate. InvalidCostModelsare no longer allowed, onlyCostModelsfor unrecognized Plutus versions are allowed starting with Conway - Improve deposit and refund calculation logic
- Fix deserialization of
ValueNotConservedUTxOpredicate failure that could not previously report zero ADA.
- Prevent updating protocol version with PParamUpdate
- Slight performance improvements to native script handling:
- Remove redundant script hash verification.
- Short circuit multisig and timelock verification for
RequireMOfas soon as necessary number of scripts have been validated.
- Check that the previous governance action of a specific type is either the very last action that has been enacted or is already in the current proposals set.
- Replace
queryCommitteeStatewith more powerfulqueryCommitteeMembersState, which returns more information about committee members and supports filters based on credentials and statuses. - Repurpose
DRepPulserto encapsulate the Snapshots needed to run theEPOCHandRATIFYRules. This has fixed some problem related to snapshots and behaviour at the epoch boundary. - Add an optional anchor to committee member resignation certificate
- Prevent delegation to non-registered pools
- Prevent
DRepexpiry when there are no Governance Actions. - Refreshing of expiry with votes and
UpdateTxCert - Disable ability to submit transactions with votes by Stake Pool Operators and Constitutional Committee members on Governance Actions that they should not be able to vote on.
- Add ability to supply initial Constitutional Committee and initial version of Constitution.
- Preserve order of submitted ProposalProcedures and account for their priority.
- Disallow empty fields in CBOR of Conway TxBody
- Add some sanity checks for
UpdateCommitteeproposals and change semantics of the proposal from overwrite to modify the Committee - Implement Constitutional Committee expiration, validation and modification
- Respect Constitutional Committee members votes and thresholds during ratification
- Whenever Constitutional Committee size goes below
CommitteeMinSizeparameter the whole committee will voteNoon all proposals. - Restructure initial configuration in such a way that makes it possible for Conway era to start without going through all previous eras, which is needed for testing and benchmarking.
- Apply ADA treasury transfers after enactment of
TreasuryWithdrawalsproposals - Enforce
currentTreasuryValuefield in the TxBody matches the actual Treasury amount, whenver the field is supplied
GovernanceProposalsfunctionality:- Implement expiry
- Enforce the supplied deposit amount
- Enforce previous GovActionId is correct
- Enforce deposits and ensure refunds for
DReps. This affects transaction building functionality. - Enforce thresholds for votes from PParams for Stake Pool Operators and DReps
- Delaying of ratification after
NoConfidence,HardForkInitiation,NewCommittee,NewConstitutionactions have been enacted.
DRepfunctionality progress:- Implement
DRepvoting and use actualDRepstake distribution for ratification - Implement
DRepexpiry for stale DRep's - Add
DRepdeposit tracking. - Add
Anchors forDReps
- Implement
- Fix
ProposalProceduredeposit tracking. - Add ability to upgrade core types from one era to the next.
- Add
Scriptcapability to Constitutional Committee Hot and Cold credentials. - Add
NetworkIdvalidation forProposalProcedureandTreasuryWithdrawals - Add
currentTreasuryValueas a new field to ConwayTxBody - Voting thresholds have been added to
PParams
- Restructure certificate interface
- Conway related changes:
- Introduction of a
DRepwith the defaults that vote No and Abstain. - Change
DCerttype to aTxCerttype family and introduce new certificates - Implement voting on
NewConstitutionby StakePools as the most basic example of voting. - Implement query for getting
Constitutionhash from the ledger state. - Change structure of Governance Procedures in the TxBody
- Fix
TICKFrule, avoiding VRF verification and syncing issues - Clear out TxOuts with zero value from the UTxO upon translation into Conway
- Introduction of a
- Plutus V3 support, only available in the conway ledger era.
PStateis now parametric in era, not crypto.- Adjust for new conway era certificates.
- Ledger
UMapCompactis nowUMap - Ledger types with names involving
DStateare renamed toCertState.
- The provenance for the reward calculation has been removed. The type signature to the API function
getRewardProvenancehas not changed, it just returns an empty provenance value. - We have created a Ledger API, with the aim of providing a user-friendly interface to the ledger libraries. See here.
- The initial funds and staking in the Shelley genesis type (used only for testing) now use
ListMapinstead ofMap. - There is a new
calculatePoolDistr'function which is similar tocalculatePoolDistrbut has a new filter argument to only include the stake pool ids (stake pool key hashes) that are needed. - The ledger events are not guaranteed to appear in any given order within a block. For this reason, motivated by the use case in db-sync, the
TotalDepositsevent now includes a transaction ID and emits the change in deposits instead of the value. - We changed the way deposits are tracked. See here for the details.
- We changed the API function Cardano.Ledger.Shelley.API.Wallet(
evaluateTransactionBalance) to takeDPStateas input. This can no longer be computed without theDPState - Some noticeable changes have been made which will only become apparent starting at major protocol version 9:
- There is a new ledger era, namely
conway. - We now have the ability to more easily change serializations when the major protocol version changes. Though this change is not immediately visible to the node, it enables visible changes in the future. See CIP-80 For the deprecation cycle.
- Pointer addresses will no longer accrue rewards starting with version 9.
- We fixed the incorrect conversion of the validity interval's upper bound in
transVITime. - Starting in version 9, duplicate keys in CBOR maps and sets are no longer allowed.
- Starting in version 9,
CostModels can now be deserialized from any map of Word8 values to lists of integers. Only valid cost models are actually converted to evaluation contexts that can be used. Errors and unrecognized language versions are stored in theCostModeltype so that:- They can accept cost models that they do not yet understand.
- Upon deserializing after a software update, new cost models are available from the prior serialization.
- There is a new ledger era, namely
Below was the last cardano-ledger repository branch based release and we now have fully
switched to CHaPs.
Changes recorded below are for all of the package versions in the list:
small-steps-1.0.0.0small-steps-test-1.0.0.0vector-map-1.0.0.0cardano-data-1.0.0.0set-algebra-1.0.0.0cardano-ledger-binary-1.0.0.0cardano-ledger-core-1.0.0.0cardano-protocol-tpraos-1.0.0.0cardano-ledger-api-1.0.0.0cardano-ledger-pretty-1.0.0.0cardano-ledger-shelley-1.0.0.0cardano-ledger-allegra-1.0.0.0cardano-ledger-mary-1.0.0.0cardano-ledger-alonzo-1.0.0.0cardano-ledger-babbage-1.0.0.0cardano-ledger-conway-1.0.0.0cardano-ledger-shelley-ma-1.0.0.0cardano-ledger-alonzo-test-1.0.0.0cardano-ledger-babbage-test-1.0.0.0cardano-ledger-conway-test-1.0.0.0cardano-ledger-shelley-ma-test-1.0.0.0cardano-ledger-shelley-test-1.0.0.0
- Addition of
encodeWithOriginanddecodeWithOrigin. #3297 - Change
mkVersionto accept anyIntegral. AddgetVersionfunction. #3297 - Added type classes:
EraPParams,AlonzoEraPParamsandBabbageEraPParamswith lenses that can access and manipulate bothPParamsandParamsUpdate. #3242 - Added types
CoinPerWordandCoinPerByteto prevent mixing up the two: #3242 - Add
fromShelleyPParamstoCanStartFromGenesis: #3224 - Add
setMinFeeTxtoCardano.Ledger.Api.Tx: #3201 - Add ToExpr (from tree-diff) instances for all types inside NewEpochState
- Add module Cardano.Ledger.TreeDiff in cardano-binary. Includes all needed operations, classes, and orphan instances
- Add deposits (key deposits) to DState{dsDeposits} and (pool deposits) PState{psDeposits}
- Added property tests that test the new invariants that must hold
- utxosDeposits == sum (dsDeposited) + sum (psDeposited)
- dom rewards == dom dsDeposited
- Added property tests that test the new invariants that must hold
- Add functions that computed deposits, obligation, and refunds that take DPState as input
- Add
PlutusDebugtoTransactionScriptFailure.ValidationFailedV{1|2}: #3135- Also add a harmless dummy
Showinstance forPlutusDebugwith a constant"PlutusDebug Omitted"
- Also add a harmless dummy
- Create a
cardano-ledger-binarypackage that does versioned serialization as a replacement forcardano-binarypackage: #3063, #3078 - Switch to
cardano-ledger-binarypackage throughout the ledger codebase: #3138 - Created
translateEraThroughCBOR: #3138 - Start on the
cardano-ledger-apipackage and implementsetMinCoinTxOut+setMinCoinSizedTxOut: #2995 - Added
getMinCoinTxOut/getMinCoinSizedTxOuttoEraTxOut: #3008 - Added
getMinFeeTxtoEraTx - Added
datumTxOutFtoAlonzoEraTxOut - Added
allInputsTxBodyF - Added
EraUTxOclass withgetConsumedValue - Added type synonyms for eras:
Shelley,Allegra,Mary,Alonzo,BabbageandConway. - Added
Twiddleclass to test alternative serializations: #2994 - Added
getScriptsNeededandgetScriptsHashesNeededtoEraUTxOclass: #3019 - Added
evaluateTransactionExecutionUnitsWithLogstoAlonzo: #3111 - Added
mkAlonzoTxAuxDataandgetAlonzoTxAuxDataScriptsthat help to recover previous behavior ofAlonzoTxAuxData#3165 and #3166 - Addition of
Memoizedtype class and helper functions that utilize this new abstraction:mkMemoized,getMemoSafeHash,getMemoRawType,zipMemoRawType,getMemoRawBytesandlensMemoRawType#3165 - Added upper protocol version bounds to
updateTxBodyLandcertsTxBodyLand removed the corresponding fields from the Conway transaction body #3176 - Added
ConwayEraTxBodyclass with new lenses #3176 - Added
ConwayDCertdata type which is similar toDCertbut does not have MIR certificates #3176 - Added CDDL files for Conway era #3176
- Added
Vote,VoterRole,VoteDecision,GovernanceActionInfoandGovernanceActiondata types #3176 - Added
ctbrVotesandctbrGovActionsfields toConwayTxBodyRawand corresponding fields toConwayTxBody#3176 - Added
ToCBORandFromCBORinstances toConwayTxBodyand all its constituent data types #3176 - Added
ConwayUTXOSrule #3176 - Added
PPUPPredFailurePVtype family andPPUPPredFailuretype synonym #3216 - Added
EraGovernancetype class withGovernanceStatetype family and implemented it for each era #3279 - Added
updateTxBodyGgetter to EraTxBody #3216 - Added new rules to the Conway era: #3216
TALLY(new)ENACTMENT(new)NEWEPOCHEPOCHLEDGER
- Added
ConwayTallyState#3216 - Added
ConwayEpochEvent#3216 - Added
ConwayLedgerPredFailure#3216 - Added
ConwayNewEpochPredFailure#3216 - Added
ConwayNewEpochEvent#3216 - Added new governance related data types to Conway: #3216
GovernanceActionStateGovernanceProcedureTallyEnv
-
Renamed
GenesisDelegCerttoConstitutionalDelegCert: #3176 -
Fix
ToCBOR/FromCBORinsatance forPParams BabbageandPParams Alonzo: #3297 and #3288 -
Disallow decoding a 0-value
MultiAssetin the de-serialization. #3241 -
Move
WdrltoCore. Also rename it toWithdrawals, while switchingTest.Cardano.Ledger.Generic.Fields.WithdrawalstoWithdrawals'#3239 -
Moved
PreviousEraintoEratype class. AddedErainstance for a new data typeByronEra. -
Renamed record fields for all
PParamstypes. Too many to list, but follows the same convention, eg.AlonzoPParams._maxTxSize->AlonzoPParams.appMaxTxSize -
Renamed
AlonzoGenesisfields #3242:coinsPerUTxOWord->agCoinsPerUTxOWordcostmdls->agCostModelsprices->agPricesmaxTxExUnits->agMaxTxExUnitsmaxBlockExUnits->agMaxBlockExUnitsmaxValSize->agMaxValSizecollateralPercentage->agCollateralPercentagemaxCollateralInputs->agMaxCollateralInputs
-
Split
Cardano.Ledger.Alonzo.Datamodule intoCardano.Ledger.Alonzo.Scripts.DataandCardano.Ledeger.Alonzo.TxAuxData: #3229 -
Changed
ConwayGenesis, by addingAlonzoGenesisto it: #3224 -
Switch parameterization of
ShelleyGenesison crypto, i.e.ShelleyGenesis era->ShelleyGenesis c: #3224 -
Moved
KeyPairtype and related functions to a newKeyPairmodule incardano-ledger-core:testlib#3210 -
Changed the representaion of key deposits. Deleted the field dsDeposits. Moved it to the UMap. Added some new functions to UMapCompact module to accomodate changes.
-
Replace
NominalDiffTimewith anewtypewrapperNominalDiffTimeMicro. Remove use ofNominalDiffTime, as we don't use its full precision. #3208 -
Switched
PlutusDebugto use aGADTwithsingletonsfor better type-safety. #3167- Made
Plutusimports uniform.
- Made
-
Removed the module
Test.Cardano.Ledger.Generic.Types. Functionality moved toTest.Cardano.Ledger.Generic.Functions -
Renamed module
Cardano.Ledger.Shelley.Metadata->Cardano.Ledger.Shelley.TxAuxData#3205 -
Updated
Conwaylow protocol version to 9 andBabbagehigh protocol version to 8: #3174 -
Fixed mismathed parenthesis in the
Showinstance forPtr: #3184. -
Moved Cardano.Ledger.Shelley.LedgerState(DPState) to Cardano.Ledger(DPState) in Core
- Since the old file was hidden, this will have no noticeable effects.
-
Changed the API function Cardano.Ledger.Shelley.API.Wallet(evaluateTransactionBalance) to take DPState as input. This can no lnger be computed without the DPState
-
Changed UtxoEnv by replacing pool info (Map (KeyHash 'StakePool c) (PoolParams c)) with DPState to show differences in two NewEpochState's.
-
Split
cardano-ledger-shelley-maintocardano-ledger-allegraandcardano-ledger-mary#3175:- Moved
ShelleyMA.AuxiliaryData->Allegra.TxAuxData - Moved
ShelleyMA.Timelocks->Allegra.Scripts ShelleyMA.TxBody.MATxBodywas split intoAllegra.AllegraTxBodyandMary.MaryTxBody. pattern record fields were renamed correspondinglyinputstoatbInputsandmtbInputsoutputstoatbOutputsandmtbOutputscertstoatbCertsandmtbCertswdrlstoatbWdrlsandmtbWdrlstxfeetoatbTxFeeandmtbTxFeevldttoatbValidityIntervalandmtbValidityIntervalupdatetoatbUpdateandmtbUpdateadHashtoatbAuxDataHashandmtbAuxDataHashminttomtbMint
- Moved
-
Changed structure and field names of
Cardano.Ledger.Alonzo.Data.AlonzoTxAuxData#3165:- Renamed
AlonzoTxAuxData.txMDtoAlonzoTxAuxData.atadMetadata: - Removed
AlonzoTxAuxData.scriptsin favor of two new fieldsatadTimelockandatadPlutus. This was needed due to #3166
- Renamed
-
Changed instance for
TranslationContext (ShelleyEra c)to a data type that can be used to translate from Byron to Shelley: #3164 -
Changed major version in
ProtVerto use new typeVersioninstead ofNatural: #3138 -
Renamed records fields in
Cardano.Ledgerto names without_(underscores) #3126Alonzo.TxBody.AlonzoTxBodypattern synonyminputstoatbInputscollateraltoatbCollateraloutputstoatbOutputstxcertstoatbCertstxwdrlstoatbWdrlstxfeetoatbTxFeetxvldttoatbValidityIntervaltxUpdatestoatbUpdatereqSignerHashestoatbReqSignerHashesminttoatbMintscriptIntegrityHashtoatbScriptIntegrityHashadHashtoatbAuxDataHashtxnetworkidtoatbTxNetworkId
Babbage.TxBody.BabbageTxBodypattern synonyminputstobtbInputscollateraltobtbCollateralreferenceInputstobtbReferenceInputsoutputstobtbOutputscollateralReturntobtbCollateralReturntotalCollateraltobtbTotalCollateraltxcertstobtbCertstxwdrlstobtbWdrlstxfeetobtbTxFeetxvldttobtbValidityIntervaltxUpdatestobtbUpdatereqSignerHashestobtbReqSignerHashesminttobtbMintscriptIntegrityHashtobtbScriptIntegrityHashadHashtobtbAuxDataHashtxnetworkidtobtbrTxNetworkId
Shelley.TxBody.TxBodyRawtoShelley.TxBody.ShelleyTxBodyRawinputsXtostbrInputsoutputsXtostbrOutputscertsXtostbrCertswdrlsXtostbrWdrlstxfeeXtostbrTxFeettlXtostbrTTLtxUpdateXtostbrUpdatemdHashXtostbrMDHash
Shelley.TxBody.ShelleyTxBodypattern synonym_inputstostbInputs_outputstostbOutputs_certstostbCerts_wdrlstostbWdrls_txfeetostbTxFee_ttltostbTTL_txUpdatetostbUpdate_mdHashtostbMDHash
-
Renamed records fields in
Cardano.Ledgerto names without_(underscores) #3118 -
Shelley.LedgerState.Types.AccountState_treasury -> asTreasury_reserves -> asReserves
-
PoolParams.PoolParams_poolId -> ppId_poolVrf -> ppVrf_poolPledge -> ppPledge_poolCost -> ppCost_poolMargin -> ppMargin_poolRAcnt -> ppRewardAcnt_poolOwners -> ppOwners_poolRelays -> ppRelays_poolMD -> ppMetadata
-
PoolParams.PoolMetadata_poolMDUrl -> pmUrl_poolMDHash -> pmHash
-
Renamed records fields in
Cardano.Ledgerto names without_(underscores) #3120Shelley.Delegation.Certificates_delegatortodDelegator_delegateetodDelegatee
EpochBoundary.SnapShot_staketossStake_delegationstossDelegations_poolParamstossPoolParams
EpochBoundary.SnapShots_pstakeMarktossStakeMark_pstakeSettossStakeSet_pstakeGotossStakeGo_feeSStossFee
-
Renamed records fields in
Cardano.Ledger.Shelley.LedgerState.DPStateto names without_(underscores) #3116DState_unified -> dsUnified_fGenDelegs -> dsFutureGenDelegs_genDelegs -> dsGenDelegs_irwd -> dsIRewards
PState_pParams -> psStakePoolParams_fPParams -> psFutureStakePoolParams_retiring -> psRetiring
-
Renamed
Cardano.Ledger.Shelley.LedgerState.Types.UTxOStatefields to names without_(underscores) #3108_utxo -> utxosUtxo_deposited -> utxosDeposited_fees -> utxosFees_ppups -> utxosPpups_stakeDistro -> utxosStakeDistr(notice the lackingoat the end)
-
Moved Cardano.Ledger.Shelley.Orphans to Cardano.Ledger.Orphans in the core modules
-
Moved Cardano.Ledger.Shelley.PoolParms to Cardano.Ledger.PoolParams in the core modules
-
Moved Cardano.Ledger.Shelley.EpochBoundary to Cardano.Ledger.EpochBoundary in the core modules
-
Added deprecated modules that import the moved ones and export their contents
-
Moved
Data.AbstractSizefromcardano-datatobyron-spec-ledger#3046 -
Renamed in
Cardano.Ledger.Mary.Value: #3047inserttoinsertMultiAssetlookuptolookupMultiAsset
-
Changed
mintfield type toMultiAsset (Crypto era)inMATxBody,AlonzoTxBody,BabbageTxBody#2954 -
All Shelley rules are now available through
Cadano.Ledger.Shelley.Rulesmodule: #2996 -
Renamed the
Cryptodependent type in theEraclass toEraCrypto#3009 -
Renamed in
Cardano.Ledger.Core#2976:EraWitnessestoEraTxWitsWitnessestoEraTxWitsmkBasicWitnessestomkBasicTxWitsaddrWitsLtoaddrTxWitsLbootAddrWitsLtobootAddrTxWitsLscriptWitsLtoscriptTxWitsL
-
Renamed in (new) module
Cardano.Ledger.Alonzo.TxWits(renamed fromCardano.Ledger.Alonzo.TxWitness) #2976:AlonzoEraWitnessestoAlonzoEraTxWitsTxWitnesstoAlonzoTxWitsaddrAlonzoWitsLtoaddrAlonzoTxWitsLbootAddrAlonzoWitsLtobootAddrAlonzoTxWitsLscriptAlonzoWitsLtoscriptAlonzoTxWitsLdatsWitsLtodatsTxWitsLdatsAlonzoWitsLtodatsAlonzoTxWitsLrdmrsWitsLtordmrsTxWitsLrdmrsAlonzoWitsLtordmrsAlonzoTxWitsL
-
Renamed in (new) module
Cardano.Ledger.Shelley.TxWits(extracted fromCardano.Ledger.Shelley.Tx) #2976:ShelleyWitnessestoShelleyTxWitsaddrShelleyWitsLtoaddrShelleyTxWitsLbootAddrShelleyWitsLtobootAddrShelleyTxWitsLscriptShelleyWitsLtoscriptShelleyTxWitsL
-
Updated package metadata #3023
-
Moved
TxOutto a separate module in each era #3024 -
Moved
mintedTxBodyFintoShelleyMAEraTxBodyclass #3019 -
Moved thet
RewardTypeandRewardtypes from theCardano.Ledger.Shelley.Rewardmodule in thecardano-ledger-shelleypackage into a new moduleCardano.Ledger.Rewardinside thecardano-ledger-corepackage. #3059 -
Added the tx hash to the
TotalDepositsevent and replaced the deposits by the deposits change #3212 -
Renamed the old
PPUPStatedatatype toShelleyPPUPState#3216 -
Removed some references to specific rules in constraints: #3216
- Replaced
State (EraRule "PPUP" era)withPPUPState era - Replaced
PredicateFailure (EraRule "PPUP" era)withPPUPPredFailure era - Replaced
PredicateFailure (EraRule "UPEC" era)withUpecPredFailure era
- Replaced
-
Changed the type of the first field of
ShelleyBbodyStateto #3216State (EraRule "LEDGERS" era) -
Starting in version 9, CostModels can now be deserialized from any map of Word8 values to lists of integers. Only valid cost models are actually converted to evaluation contexts that can be used. Errors and unrecognized language versions are stored in the CostModels type so that:
- they can accept cost models that they do not yet understand
- upon deserializing after a software update, new cost models are available from the prior serialization. #3283
- Removed
extendPPandretractPPin favor ofEraPParamstype class functionsupgradePParams/upgradePParamsUpdateanddowngradePParams/downgradePParamsUpdatewhich can be used to changePParamsfrom and to a previous era: #3224 - Removed deprecated synonyms:
PParams,PParams',PParamsUpdate,PParamsDelta,Value,TxBody,TxOut - Removed
Cardano.Ledger.Babbage.Genesismodule, since now it is completely empty: #3224 TranslateErainstance forShelleyGenesis: #3224- Deprecated
Cardano.Ledger.CompactAddressmodule in favor ofCardano.Ledger.Address: #3218 - Removed deprecated
Cardano.Ledger.Shelley.CompactAddr: #3218 - Removed depracted type synonyms:
ValidatedTx,TxOut,TxBody,TxSeq,Script,Value,PParamDelta. #3205 - Removed unused
deserialiseAddrStakeReffunction fromAddressmodule: #3174 MAClassis gone: #3175ShelleyMAEratype in favor ofAllegraEraandMaryEra: #3175MATxBodytype in favor ofAllegraTxBodyandMaryTxBody: #3175- Deprecated
Cardano.Ledger.Serializationin favor ofCardano.Ledger.Binaryfromcardano-ledger-binary: #3138 - Removed
Data.Codersfromcardano-datain favor ofCardano.Ledger.Binary.Codersfromcardano-ledger-binary: #3138 - Removed
Data.Sharingfromcardano-datain favor ofCardano.Ledger.Binaryfromcardano-ledger-binary: #3138 - Removed
boundedRationalFromCBOR/boundedRationalToCBORas obsolete and invalid: #3138 - Removed pattern synonym
Cardano.Ledger.ShelleyMA.TxBody.MATxBody.TxBody'with fields #3126adHash'certs'inputs'mint'outputs'txfee'update'vldt'wdrls'
- Deprecated the
validPlutusdatafunction: #3006 - Deprecated the misspelled
HasAlgorithmtype alias: #3007 - Deprecated
CLI.evaluateMinLovelaceOutputin favor of newly addedEraTxOut.getMinCoinTxOut/EraTxOut.getMinCoinSizedTxOut#3008 - Deprecated
minfeeandCLI.evaluateMinfeein favor of newEraTx.getMinFeeTx - Deprecated
ExtendedUTxO.getTxOutDatumin favor of newAlonzoEraTxOut.datumTxOutF - Removed
ExtendedUTxO.allOutsandExtendedUTxO.allSizedOutsin favor ofBabbageEraTxBody.allInputsTxBodyF - Deprecated
consumedandevaluateConsumedin favor of newEraUTxO.getConsumedValue - Removed
CLIclass - Deprecated
scriptsNeededFromBodyandscriptsNeededin all eras in favor of new class functionEraUTxO.getScriptsNeeded#3019 - Remove model test framework #3019
- The
Cardano.Ledger.Alonzo.Scriptsmodule no longer re-exports theplutus-ledger-api'sassertWellFormedCostModelParams. #3065 - Removed unused
Data.BiMapmodule fromcardano-data#3089 - Removed
getMultiSigBytesas unused #3138 - Removed
hashCostModelas unused and invalid #3138 - Removed
EncodeMint/DecodeMintclasses in favor of regularToCBOR/FromCBOR#3172
- Fixed typo in makeHashWithExplicitProxys phantom type (indexl to index). #3072
- Fixed the incorrect conversion of the validity interval's upper bound in
transVITime(fixes #3043). #3200 - Enforce that the CostModel deserializers expect a specific length prior to version 9.
- Starting in version 9, duplicate keys in CBOR maps are not longer allowed
- New
calculatePoolDistr'function which is similar tocalculatePoolDistrbut has a new filter argument to only include the stake pool ids (stake pool key hashes) that are needed. #2957 - New package
cardano-ledger-conway, which defines new era: theConwayEra - Added
coinsPerUTxOByteToCoinsPerUTxOWordhelper function for Babbage #2896 - Core type classes:
EraSegWits,EraTx,EraTxBody,EraTxOut,EraPParams,EraAuxiliaryData,EraTxWits,EraScript - Era specific type classes:
ShelleyEraTxBody,ShelleyMAEraTxBody,AlonzoEraTxBody,AlonzoEraTxOut,AlonzoEraTx,BabbageEraTxBody,BabbageEraTxOut - Type class hierarchy:
EraSegWits --> EraTx --> EraTxBody --> EraTxOut --> Era
\ `--> EraPParams --> Era
`--> EraTxWits --> EraScript --> Era
`--> EraAuxiliaryData --> Era
- Shelley:
ShelleyEraTxBody --> EraTxBody --> EraTxOut --> Era
- ShelleyMA:
ShelleyMAEraTxBody --> ShelleyEraTxBody --> EraTxBody --> EraTxOut --> Era
- Alonzo:
AlonzoEraTx --> EraTx --> ...
`--> AlonzoEraTxBody --> ShelleyMAEraTxBody --> ShelleyEraTxBody --> EraTxBody --> ...
`--> AlonzoEraTxOut -> ShelleyEraTxOut --> EraTxOut --> ...
- Babbage:
BabbageEraTxBody --> AlonzoEraTxBody --> ....
`--> BabbageEraTxOut -> AlonzoEraTxOut -->
- Introduced a new switch in
HardForksthat turns off pointer address resolution inIncrementalStakestarting with version 9 - Some types have been moved:
- The
WitVKeytype has been moved into its own module in core. - The
HKDtype has been moved tocardano-ledger-core. - The
PoolParamstype has been moved into its own module - The
DCerttype and related functionality fromTxBodytoCardano.Ledger.Shelley.Delegation.Certificates. #2880
- The
- The initial funds and staking in the Shelley genesis type (used only for testing) now use
ListMapinstead ofMap. #2871, #2890, #2892, #2895 - Renamed
SupportsSegWittoEraSegWits - Split
ValidateScriptintoEraScriptandEraTx.validateScript - Renamed
ValidateAuxiliaryDatatoEraAuxiliaryDatawhile removing usage of FunDeps. - Renamed in
Cardano.Ledger.Shelley:TxtoShelleyTx(kept type synonym with a deprecation message)TxOuttoShelleyTxOut(kept type synonym with a deprecation message)TxBodytoShelleyTxBody(kept type synonym with a deprecation message)PParamstoShelleyPParams(kept type synonym with a deprecation message)PParamsUpdatetoShelleyPParamsUpdate(kept type synonym with a deprecation message)AuxiliaryDatatoShelleyAuxiliaryData(kept type synonym with a deprecation message)
- Renamed in
Cardano.Ledger.Mary:- Renamed
ValuetoMaryValue(kept type synonym with a deprecation message)
- Renamed
- Renamed in
Cardano.Ledger.ShelleyMA:TxBodytoMATxBody(kept type synonym with a deprecation message)AuxiliaryDatatoShelleyAuxiliaryData(kept type synonym with a deprecation message)
- Renamed in
Cardano.Ledger.Alonzo:ValidatedTxtoAlonzoTx(kept type synonym with a deprecation message)TxOuttoAlonzoTxOut(kept type synonym with a deprecation message)TxBodytoAlonzoTxBody(kept type synonym with a deprecation message)ScripttoAlonzoScript(kept type synonym with a deprecation message)PParamstoAlonzoPParams(kept type synonym with a deprecation message)PParamsUpdatetoAlonzoPParamsUpdate(kept type synonym with a deprecation message)AuxiliaryDatatoAlonzoAuxiliaryData(kept type synonym with a deprecation message)
- Renamed in
Cardano.Ledger.Babbage:TxOuttoBabbageTxOut(kept type synonym with a deprecation message)TxBodytoBabbageTxBody(kept type synonym with a deprecation message)PParamstoBabbagePParams(kept type synonym with a deprecation message)PParamsUpdatetoBabbagePParamsUpdate(kept type synonym with a deprecation message)
- Renamed Rules:
BBODY->ShelleyBBODYDELEG->ShelleyDELEGDELEGS->ShelleyDELEGSDELPL->ShelleyDELPLEPOCH->ShelleyEPOCHLEDGER->ShelleyLEDGERLEDGERS->ShelleyLEDGERSMIR->ShelleyMIRNEWEPOCH->ShelleyNEWEPOCHNEWPP->ShelleyNEWPPPOOL->ShelleyPOOLPOOLREAP->ShelleyPOOLREAPPPUP->ShelleyPPUPRUPD->ShelleyRUPDSNAP->ShelleySNAPTICK->ShelleyTICK, ShelleyTICKFUPEC->ShelleyUPECUTXO->ShelleyUTXOUTXOW->ShelleyUTXOW
- Renamed rules environments:
PPUPEnv -> PpupEnv
- Renamed rules events:
BbodyEvent->ShelleyBbodyEventDelegEvent->ShelleyDelegEventDelegsEvent->ShelleyDelegsEventDelplEvent->ShelleyDelplEventEpochEvent->ShelleyEpochEventLedgerEvent->ShelleyLedgerEventLedgersEvent->ShelleyLedgersEventMirEvent->ShelleyMirEventNewEpochEvent->ShelleyNewEpochEventPoolreapEvent->ShelleyPoolreapEventTickEvent->ShelleyTickEventTickfEvent->ShelleyTickfEventUtxowEvent->ShelleyUtxowEvent
- Renamed predicate failure type names:
Cardano.Ledger.Shelley.Rules:BbodyPredicateFailure->ShelleyBbodyPredFailureDelegPredicateFailure->ShelleyDelegPredFailureDelegsPredicateFailure->ShelleyDelegsPredFailureDelplPredicateFailure->ShelleyDelplPredFailureEpochPredicateFailure->ShelleyEpochPredFailureLedgerPredicateFailure->ShelleyLedgerPredFailureLedgersPredicateFailure->ShelleyLedgersPredFailureMirPredicateFailure->ShelleyMirPredFailureNewEpochPredicateFailure->ShelleyNewEpochPredFailureNewppPredicateFailure->ShelleyNewppPredFailureLedgerPredicateFailure->ShelleyLedgerPredFailurePoolPredicateFailure->ShelleyPoolPredFailurePoolreapPredicateFailure->ShelleyPoolreapPredFailurePpupPredicateFailure->ShelleyPpupPredFailureRupdPredicateFailure->ShelleyRupdPredFailureSnapPredicateFailure->ShelleySnapPredFailureTickPredicateFailure->ShelleyTickPredFailureTickfPredicateFailure->ShelleyTickfPredFailureUpecPredicateFailure->ShelleyUpecPredFailureUtxoPredicateFailure->ShelleyUtxoPredFailureUtxowPredicateFailure->ShelleyUtxowPredFailure
Cardano.Ledger.ShelleyMA.Rules:UtxoPredicateFailure->ShelleyMAUtxoPredFailure
Cardano.Ledger.Alonzo.Rules:AlonzoBbodyPredFail->AlonzoBbodyPredFailureand constructor:ShelleyInAlonzoPredFail->ShelleyInAlonzoBbodyPredFailure
UtxoPredicateFailure->AlonzoUtxoPredFailureUtxosPredicateFailure->AlonzoUtxosPredFailureUtxowPredicateFail->AlonzoUtxowPredFailureand constructor:WrappedShelleyEraFailure->ShelleyInAlonzoUtxowPredFailure
Cardano.Ledger.Babbage.Rules:BabbageUtxoPred->BabbageUtxoPredFailureand constructor:FromAlonzoUtxoFail->AlonzoInBabbageUtxoPredFailure
BabbageUtxowPred->BabbageUtxowPredFailureand constructor:FromAlonzoUtxowFail->AlonzoInBabbageUtxowPredFailure
- The provenance for the reward calculation has been removed.
The type signature to the API function
getRewardProvenancehas not change, it just returns an empty provenance value. The type signature will be changed once the corresponding query has been deprecated in the ouroboros-network repository. #2879 getTxOutAddr txOutin favor oftxOut ^. addrTxOutLgetTxOutEitherAddr txOutin favor oftxOut ^. addrEitherTxOutLgetTxOutCompactAddr txOutin favor oftxOut ^. compactAddrTxOutLgetTxOutBootstrapAddress txOutin favor oftxOut ^. bootAddrTxOutFgetAllInputs txBodyin favor oftxBody ^. allInputsTxBodyFgetCoin txOutin favor oftxOut ^. coinTxOutL
- The
StakeCredstype was unused and is now removed. #2880 - The
Ordinstance forMemoByteswas removed. #2881 makeTxOutin favor ofmkBasicTxOutHasFieldinstances for:"inputs","outputs","txfee","auxiliaryData","minted","wdrls","ttl","update","certs","vldt","mint","collateral","reqSignerHashes","scriptIntegrityHash","txnetworkid","sizedOutputs","referenceInputs","totalCollateral","collateralReturn","sizedCollateralReturn","body","wits","auxData","size","isValid","addrWits","scriptWits","bootWits","txdatahash","addr","bootAddr","script","dats","rdmrs"ValidateScriptin favor ofEraScriptandEraTx- Type class synonyms:
Trans*Uses*:UsesPParams,UsesScript,UsesTxBody,UsesTxOut,UsesAuxiliaryDataBlockAnnChainDataAnnotatedDataSerialisableDataWellFormedConcreteAlonzoConcreteBabbage- ...
- The error message for failed Plutus V2 scripts was being obscured by a bug which has now been fixed. #2888
The first release branch in the cardano-ledger repository,
namely release/1.0.0, branches from the
cardano-ledger commit used for the 1.35.0 release of cardano-node release.
- Ensure Babbage TxOut decoder can't fail due to malformed Ptr. This bug was manifesting in the cardano-node as: if a node is running in the Babbage era and shuts down, when it comes back up it has to re-sync from genesis. #2897
- The Alonzo UTxO rule was previously using the incorrect minfee function (from Shelley). It now uses the Alonze minfee function. #2936