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.
- Fix drep delegation invariant preservation #4709
- Translation of
RegTxCert
andUnRegTxCert
toPlutusV3
scripts context will now be done correctly, which means deposit and refund respectively, will actually be translated: #4627 - Treasury withdrawals that are empty or sum up to zero will no longer be allowed: #4630
- Prevent non-registered return accounts for proposals' deposits and
TreasuryWithdrawals
#4639 - Ensure
ppuCoinsPerUTxOBytes
cannot be zero: #4650 - Ensure dreps exist prior to delegation: #4652
- Change how SPO votes are counted: #4659
- Disallow withdrawals to non-delegated keyhashes post-bootstrap #4555
- Remove
maxMajorPV
fromGlobals
, because it was unused: #4218
- DRep registration expiration fix: #4547
- Use correct DRep threshold to ratify
NoConfidence
: 4516 - Added method to compute over-the-wire CBOR encoded transaction size needed for network layer: 4521
- Add governance related ledger state queries: 4514
- Improve Plutus debug functionality: 4503
- Hotfix patch for inability to deserialize Conway version of the Ledger State due to retained bogus address pointers: #4591
- There were no ledger changes. The only difference with
cardano-node-9.0
is that9.1
provided genesis file forConway
era.
- Authorization of hot credentials for constitutional committee members is now only possible for cold credentials that are present in the ledger state, either in the current committee or in one of the proposals.
- Voting is restricted to entities that are present in the ledger state
- DRep votes are removed whenever DRep unregisters
- Pricing model for the size of reference scripts was changed from linear to exponential. Moreover, extra limits on the total size of reference scripts being used have been put in place.
- Implemented CIP-0069
that improves
PlutusV3
functionality by making spending datums optional and enforcing all scripts to have exactly one argument. - Ensure that
CommitteeMinSize
protocol parameter is ignored during bootstrap phase. - Restrict types for some protocol parameters and fixup CDDL specification to reflect actual deserializers.
- Create pool stake distribution query for voting.
- Included rewards accounts in stake pool distribution calculation for voting.
- Bug fixes:
- Fixes to
DRep
expiry logic and the choice of correct threshold for the committee voting - Script execution for certificates with the same plutus script did not execute correctly.
- Prevent delegation to a non-existent pool.
- Fixes to
-
Prepared changes for the bootstrap period by restricting government actions and by ignoring
DRep
thresholds. -
Added the ability to do a
HardForkInitiation
into a new era. -
Added
PlutusV3
cost model toConway
genesis. -
Stopped counting expired committee members in active committee size calculation.
-
Included rewards accounts in
DRep
distribution calculation. -
Added
AccountState
ledger state query. -
Bug fixes:
- Stopped embedding
UTXO
andUTXOS
predicate failures from previous eras. - Fixed predicate failure deserialisation bug when re-submitting a
Conway
transaction with an invalid plutus script.
- Stopped embedding
-
Retention of Anchor for proposal procedures in the ledger state in order for users to be able to query the node for those anchors
-
The minimum fee calculation has been updated to take into consideration a new protocol parameter controlling the contribution of reference scripts sizes
-
Redeemers serialization improvement: encode redeemers as a Map, instead of a list for Conway
-
Support for intra-era hardfork initiation and necessary updates to the SPO stake distribution calculation.
-
Fail translation when Conway features are present in transactions that use Plutus v1/v2
-
New Conway predicate failure:
ConwayUtxosPredFailure
(to decouple Conway fromPPUP
dependency) -
Remove
small-steps-test
package and convert it into a sublibrary ofsmall-steps
-
Support for injecting transition configuration data in
NewEpochState
, to decouple this concern from Consensus -
Query-related changes:
- Era-specific queries: Conway functionality supported only starting with Conway era
- Change committee query to return non-optional
CommitteeMembersState
- Add optional
Anchor
to resigned status inCommitteeMembersState
-
Important bug fixes:
- Use the correct stake pool distribution for voting (instead of one that is an epoch too old)
- Fix DRep stake distribution to correctly add rewards to deleged stake
- JSON serialization of rational numbers in protocol parameters and governance procedures are encoded without loss of precision
(
BoundedRatio
andPrices
) - JSON serialization fix for
ConwayGovState
- Fixed the intermittent failure of Github page containing haddock documentation
-
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
PParamsUpdate
governance 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
CostModels
in thePParamsUpdate
. InvalidCostModels
are no longer allowed, onlyCostModels
for unrecognized Plutus versions are allowed starting with Conway - Improve deposit and refund calculation logic
- Fix deserialization of
ValueNotConservedUTxO
predicate 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
RequireMOf
as 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
queryCommitteeState
with more powerfulqueryCommitteeMembersState
, which returns more information about committee members and supports filters based on credentials and statuses. - Repurpose
DRepPulser
to encapsulate the Snapshots needed to run theEPOCH
andRATIFY
Rules. 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
DRep
expiry 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
UpdateCommittee
proposals 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
CommitteeMinSize
parameter the whole committee will voteNo
on 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
TreasuryWithdrawals
proposals - Enforce
currentTreasuryValue
field in the TxBody matches the actual Treasury amount, whenver the field is supplied
GovernanceProposals
functionality:- Implement expiry
- Enforce the supplied deposit amount
- Enforce previous GovActionId is correct
- Enforce deposits and ensure refunds for
DRep
s. This affects transaction building functionality. - Enforce thresholds for votes from PParams for Stake Pool Operators and DReps
- Delaying of ratification after
NoConfidence
,HardForkInitiation
,NewCommittee
,NewConstitution
actions have been enacted.
DRep
functionality progress:- Implement
DRep
voting and use actualDRep
stake distribution for ratification - Implement
DRep
expiry for stale DRep's - Add
DRep
deposit tracking. - Add
Anchor
s forDRep
s
- Implement
- Fix
ProposalProcedure
deposit tracking. - Add ability to upgrade core types from one era to the next.
- Add
Script
capability to Constitutional Committee Hot and Cold credentials. - Add
NetworkId
validation forProposalProcedure
andTreasuryWithdrawals
- Add
currentTreasuryValue
as a new field to ConwayTxBody
- Voting thresholds have been added to
PParams
- Restructure certificate interface
- Conway related changes:
- Introduction of a
DRep
with the defaults that vote No and Abstain. - Change
DCert
type to aTxCert
type family and introduce new certificates - Implement voting on
NewConstitution
by StakePools as the most basic example of voting. - Implement query for getting
Constitution
hash from the ledger state. - Change structure of Governance Procedures in the TxBody
- Fix
TICKF
rule, 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.
PState
is now parametric in era, not crypto.- Adjust for new conway era certificates.
- Ledger
UMapCompact
is nowUMap
- Ledger types with names involving
DState
are renamed toCertState
.
- The provenance for the reward calculation has been removed. The type signature to the API function
getRewardProvenance
has 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
ListMap
instead ofMap
. - There is a new
calculatePoolDistr'
function which is similar tocalculatePoolDistr
but 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
TotalDeposits
event 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 takeDPState
as 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,
CostModel
s 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 theCostModel
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.
- 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.0
small-steps-test-1.0.0.0
vector-map-1.0.0.0
cardano-data-1.0.0.0
set-algebra-1.0.0.0
cardano-ledger-binary-1.0.0.0
cardano-ledger-core-1.0.0.0
cardano-protocol-tpraos-1.0.0.0
cardano-ledger-api-1.0.0.0
cardano-ledger-pretty-1.0.0.0
cardano-ledger-shelley-1.0.0.0
cardano-ledger-allegra-1.0.0.0
cardano-ledger-mary-1.0.0.0
cardano-ledger-alonzo-1.0.0.0
cardano-ledger-babbage-1.0.0.0
cardano-ledger-conway-1.0.0.0
cardano-ledger-shelley-ma-1.0.0.0
cardano-ledger-alonzo-test-1.0.0.0
cardano-ledger-babbage-test-1.0.0.0
cardano-ledger-conway-test-1.0.0.0
cardano-ledger-shelley-ma-test-1.0.0.0
cardano-ledger-shelley-test-1.0.0.0
- Addition of
encodeWithOrigin
anddecodeWithOrigin
. #3297 - Change
mkVersion
to accept anyIntegral
. AddgetVersion
function. #3297 - Added type classes:
EraPParams
,AlonzoEraPParams
andBabbageEraPParams
with lenses that can access and manipulate bothPParams
andParamsUpdate
. #3242 - Added types
CoinPerWord
andCoinPerByte
to prevent mixing up the two: #3242 - Add
fromShelleyPParams
toCanStartFromGenesis
: #3224 - Add
setMinFeeTx
toCardano.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
PlutusDebug
toTransactionScriptFailure.ValidationFailedV{1|2}
: #3135- Also add a harmless dummy
Show
instance forPlutusDebug
with a constant"PlutusDebug Omitted"
- Also add a harmless dummy
- Create a
cardano-ledger-binary
package that does versioned serialization as a replacement forcardano-binary
package: #3063, #3078 - Switch to
cardano-ledger-binary
package throughout the ledger codebase: #3138 - Created
translateEraThroughCBOR
: #3138 - Start on the
cardano-ledger-api
package and implementsetMinCoinTxOut
+setMinCoinSizedTxOut
: #2995 - Added
getMinCoinTxOut
/getMinCoinSizedTxOut
toEraTxOut
: #3008 - Added
getMinFeeTx
toEraTx
- Added
datumTxOutF
toAlonzoEraTxOut
- Added
allInputsTxBodyF
- Added
EraUTxO
class withgetConsumedValue
- Added type synonyms for eras:
Shelley
,Allegra
,Mary
,Alonzo
,Babbage
andConway
. - Added
Twiddle
class to test alternative serializations: #2994 - Added
getScriptsNeeded
andgetScriptsHashesNeeded
toEraUTxO
class: #3019 - Added
evaluateTransactionExecutionUnitsWithLogs
toAlonzo
: #3111 - Added
mkAlonzoTxAuxData
andgetAlonzoTxAuxDataScripts
that help to recover previous behavior ofAlonzoTxAuxData
#3165 and #3166 - Addition of
Memoized
type class and helper functions that utilize this new abstraction:mkMemoized
,getMemoSafeHash
,getMemoRawType
,zipMemoRawType
,getMemoRawBytes
andlensMemoRawType
#3165 - Added upper protocol version bounds to
updateTxBodyL
andcertsTxBodyL
and removed the corresponding fields from the Conway transaction body #3176 - Added
ConwayEraTxBody
class with new lenses #3176 - Added
ConwayDCert
data type which is similar toDCert
but does not have MIR certificates #3176 - Added CDDL files for Conway era #3176
- Added
Vote
,VoterRole
,VoteDecision
,GovernanceActionInfo
andGovernanceAction
data types #3176 - Added
ctbrVotes
andctbrGovActions
fields toConwayTxBodyRaw
and corresponding fields toConwayTxBody
#3176 - Added
ToCBOR
andFromCBOR
instances toConwayTxBody
and all its constituent data types #3176 - Added
ConwayUTXOS
rule #3176 - Added
PPUPPredFailurePV
type family andPPUPPredFailure
type synonym #3216 - Added
EraGovernance
type class withGovernanceState
type family and implemented it for each era #3279 - Added
updateTxBodyG
getter to EraTxBody #3216 - Added new rules to the Conway era: #3216
TALLY
(new)ENACTMENT
(new)NEWEPOCH
EPOCH
LEDGER
- Added
ConwayTallyState
#3216 - Added
ConwayEpochEvent
#3216 - Added
ConwayLedgerPredFailure
#3216 - Added
ConwayNewEpochPredFailure
#3216 - Added
ConwayNewEpochEvent
#3216 - Added new governance related data types to Conway: #3216
GovernanceActionState
GovernanceProcedure
TallyEnv
-
Renamed
GenesisDelegCert
toConstitutionalDelegCert
: #3176 -
Fix
ToCBOR
/FromCBOR
insatance forPParams Babbage
andPParams Alonzo
: #3297 and #3288 -
Disallow decoding a 0-value
MultiAsset
in the de-serialization. #3241 -
Move
Wdrl
toCore
. Also rename it toWithdrawals
, while switchingTest.Cardano.Ledger.Generic.Fields.Withdrawals
toWithdrawals'
#3239 -
Moved
PreviousEra
intoEra
type class. AddedEra
instance for a new data typeByronEra
. -
Renamed record fields for all
PParams
types. Too many to list, but follows the same convention, eg.AlonzoPParams._maxTxSize
->AlonzoPParams.appMaxTxSize
-
Renamed
AlonzoGenesis
fields #3242:coinsPerUTxOWord
->agCoinsPerUTxOWord
costmdls
->agCostModels
prices
->agPrices
maxTxExUnits
->agMaxTxExUnits
maxBlockExUnits
->agMaxBlockExUnits
maxValSize
->agMaxValSize
collateralPercentage
->agCollateralPercentage
maxCollateralInputs
->agMaxCollateralInputs
-
Split
Cardano.Ledger.Alonzo.Data
module intoCardano.Ledger.Alonzo.Scripts.Data
andCardano.Ledeger.Alonzo.TxAuxData
: #3229 -
Changed
ConwayGenesis
, by addingAlonzoGenesis
to it: #3224 -
Switch parameterization of
ShelleyGenesis
on crypto, i.e.ShelleyGenesis era
->ShelleyGenesis c
: #3224 -
Moved
KeyPair
type and related functions to a newKeyPair
module 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
NominalDiffTime
with anewtype
wrapperNominalDiffTimeMicro
. Remove use ofNominalDiffTime
, as we don't use its full precision. #3208 -
Switched
PlutusDebug
to use aGADT
withsingletons
for better type-safety. #3167- Made
Plutus
imports 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
Conway
low protocol version to 9 andBabbage
high protocol version to 8: #3174 -
Fixed mismathed parenthesis in the
Show
instance 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-ma
intocardano-ledger-allegra
andcardano-ledger-mary
#3175:- Moved
ShelleyMA.AuxiliaryData
->Allegra.TxAuxData
- Moved
ShelleyMA.Timelocks
->Allegra.Scripts
ShelleyMA.TxBody.MATxBody
was split intoAllegra.AllegraTxBody
andMary.MaryTxBody
. pattern record fields were renamed correspondinglyinputs
toatbInputs
andmtbInputs
outputs
toatbOutputs
andmtbOutputs
certs
toatbCerts
andmtbCerts
wdrls
toatbWdrls
andmtbWdrls
txfee
toatbTxFee
andmtbTxFee
vldt
toatbValidityInterval
andmtbValidityInterval
update
toatbUpdate
andmtbUpdate
adHash
toatbAuxDataHash
andmtbAuxDataHash
mint
tomtbMint
- Moved
-
Changed structure and field names of
Cardano.Ledger.Alonzo.Data.AlonzoTxAuxData
#3165:- Renamed
AlonzoTxAuxData.txMD
toAlonzoTxAuxData.atadMetadata
: - Removed
AlonzoTxAuxData.scripts
in favor of two new fieldsatadTimelock
andatadPlutus
. 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
ProtVer
to use new typeVersion
instead ofNatural
: #3138 -
Renamed records fields in
Cardano.Ledger
to names without_
(underscores) #3126Alonzo.TxBody.AlonzoTxBody
pattern synonyminputs
toatbInputs
collateral
toatbCollateral
outputs
toatbOutputs
txcerts
toatbCerts
txwdrls
toatbWdrls
txfee
toatbTxFee
txvldt
toatbValidityInterval
txUpdates
toatbUpdate
reqSignerHashes
toatbReqSignerHashes
mint
toatbMint
scriptIntegrityHash
toatbScriptIntegrityHash
adHash
toatbAuxDataHash
txnetworkid
toatbTxNetworkId
Babbage.TxBody.BabbageTxBody
pattern synonyminputs
tobtbInputs
collateral
tobtbCollateral
referenceInputs
tobtbReferenceInputs
outputs
tobtbOutputs
collateralReturn
tobtbCollateralReturn
totalCollateral
tobtbTotalCollateral
txcerts
tobtbCerts
txwdrls
tobtbWdrls
txfee
tobtbTxFee
txvldt
tobtbValidityInterval
txUpdates
tobtbUpdate
reqSignerHashes
tobtbReqSignerHashes
mint
tobtbMint
scriptIntegrityHash
tobtbScriptIntegrityHash
adHash
tobtbAuxDataHash
txnetworkid
tobtbrTxNetworkId
Shelley.TxBody.TxBodyRaw
toShelley.TxBody.ShelleyTxBodyRaw
inputsX
tostbrInputs
outputsX
tostbrOutputs
certsX
tostbrCerts
wdrlsX
tostbrWdrls
txfeeX
tostbrTxFee
ttlX
tostbrTTL
txUpdateX
tostbrUpdate
mdHashX
tostbrMDHash
Shelley.TxBody.ShelleyTxBody
pattern synonym_inputs
tostbInputs
_outputs
tostbOutputs
_certs
tostbCerts
_wdrls
tostbWdrls
_txfee
tostbTxFee
_ttl
tostbTTL
_txUpdate
tostbUpdate
_mdHash
tostbMDHash
-
Renamed records fields in
Cardano.Ledger
to 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.Ledger
to names without_
(underscores) #3120Shelley.Delegation.Certificates
_delegator
todDelegator
_delegatee
todDelegatee
EpochBoundary.SnapShot
_stake
tossStake
_delegations
tossDelegations
_poolParams
tossPoolParams
EpochBoundary.SnapShots
_pstakeMark
tossStakeMark
_pstakeSet
tossStakeSet
_pstakeGo
tossStakeGo
_feeSS
tossFee
-
Renamed records fields in
Cardano.Ledger.Shelley.LedgerState.DPState
to 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.UTxOState
fields to names without_
(underscores) #3108_utxo -> utxosUtxo
_deposited -> utxosDeposited
_fees -> utxosFees
_ppups -> utxosPpups
_stakeDistro -> utxosStakeDistr
(notice the lackingo
at 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.AbstractSize
fromcardano-data
tobyron-spec-ledger
#3046 -
Renamed in
Cardano.Ledger.Mary.Value
: #3047insert
toinsertMultiAsset
lookup
tolookupMultiAsset
-
Changed
mint
field type toMultiAsset (Crypto era)
inMATxBody
,AlonzoTxBody
,BabbageTxBody
#2954 -
All Shelley rules are now available through
Cadano.Ledger.Shelley.Rules
module: #2996 -
Renamed the
Crypto
dependent type in theEra
class toEraCrypto
#3009 -
Renamed in
Cardano.Ledger.Core
#2976:EraWitnesses
toEraTxWits
Witnesses
toEraTxWits
mkBasicWitnesses
tomkBasicTxWits
addrWitsL
toaddrTxWitsL
bootAddrWitsL
tobootAddrTxWitsL
scriptWitsL
toscriptTxWitsL
-
Renamed in (new) module
Cardano.Ledger.Alonzo.TxWits
(renamed fromCardano.Ledger.Alonzo.TxWitness
) #2976:AlonzoEraWitnesses
toAlonzoEraTxWits
TxWitness
toAlonzoTxWits
addrAlonzoWitsL
toaddrAlonzoTxWitsL
bootAddrAlonzoWitsL
tobootAddrAlonzoTxWitsL
scriptAlonzoWitsL
toscriptAlonzoTxWitsL
datsWitsL
todatsTxWitsL
datsAlonzoWitsL
todatsAlonzoTxWitsL
rdmrsWitsL
tordmrsTxWitsL
rdmrsAlonzoWitsL
tordmrsAlonzoTxWitsL
-
Renamed in (new) module
Cardano.Ledger.Shelley.TxWits
(extracted fromCardano.Ledger.Shelley.Tx
) #2976:ShelleyWitnesses
toShelleyTxWits
addrShelleyWitsL
toaddrShelleyTxWitsL
bootAddrShelleyWitsL
tobootAddrShelleyTxWitsL
scriptShelleyWitsL
toscriptShelleyTxWitsL
-
Updated package metadata #3023
-
Moved
TxOut
to a separate module in each era #3024 -
Moved
mintedTxBodyF
intoShelleyMAEraTxBody
class #3019 -
Moved thet
RewardType
andReward
types from theCardano.Ledger.Shelley.Reward
module in thecardano-ledger-shelley
package into a new moduleCardano.Ledger.Reward
inside thecardano-ledger-core
package. #3059 -
Added the tx hash to the
TotalDeposits
event and replaced the deposits by the deposits change #3212 -
Renamed the old
PPUPState
datatype 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
ShelleyBbodyState
to #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
extendPP
andretractPP
in favor ofEraPParams
type class functionsupgradePParams
/upgradePParamsUpdate
anddowngradePParams
/downgradePParamsUpdate
which can be used to changePParams
from and to a previous era: #3224 - Removed deprecated synonyms:
PParams
,PParams'
,PParamsUpdate
,PParamsDelta
,Value
,TxBody
,TxOut
- Removed
Cardano.Ledger.Babbage.Genesis
module, since now it is completely empty: #3224 TranslateEra
instance forShelleyGenesis
: #3224- Deprecated
Cardano.Ledger.CompactAddress
module 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
deserialiseAddrStakeRef
function fromAddress
module: #3174 MAClass
is gone: #3175ShelleyMAEra
type in favor ofAllegraEra
andMaryEra
: #3175MATxBody
type in favor ofAllegraTxBody
andMaryTxBody
: #3175- Deprecated
Cardano.Ledger.Serialization
in favor ofCardano.Ledger.Binary
fromcardano-ledger-binary
: #3138 - Removed
Data.Coders
fromcardano-data
in favor ofCardano.Ledger.Binary.Coders
fromcardano-ledger-binary
: #3138 - Removed
Data.Sharing
fromcardano-data
in favor ofCardano.Ledger.Binary
fromcardano-ledger-binary
: #3138 - Removed
boundedRationalFromCBOR
/boundedRationalToCBOR
as 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
validPlutusdata
function: #3006 - Deprecated the misspelled
HasAlgorithm
type alias: #3007 - Deprecated
CLI.evaluateMinLovelaceOutput
in favor of newly addedEraTxOut.getMinCoinTxOut
/EraTxOut.getMinCoinSizedTxOut
#3008 - Deprecated
minfee
andCLI.evaluateMinfee
in favor of newEraTx.getMinFeeTx
- Deprecated
ExtendedUTxO.getTxOutDatum
in favor of newAlonzoEraTxOut.datumTxOutF
- Removed
ExtendedUTxO.allOuts
andExtendedUTxO.allSizedOuts
in favor ofBabbageEraTxBody.allInputsTxBodyF
- Deprecated
consumed
andevaluateConsumed
in favor of newEraUTxO.getConsumedValue
- Removed
CLI
class - Deprecated
scriptsNeededFromBody
andscriptsNeeded
in all eras in favor of new class functionEraUTxO.getScriptsNeeded
#3019 - Remove model test framework #3019
- The
Cardano.Ledger.Alonzo.Scripts
module no longer re-exports theplutus-ledger-api
'sassertWellFormedCostModelParams
. #3065 - Removed unused
Data.BiMap
module fromcardano-data
#3089 - Removed
getMultiSigBytes
as unused #3138 - Removed
hashCostModel
as unused and invalid #3138 - Removed
EncodeMint
/DecodeMint
classes 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 tocalculatePoolDistr
but 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
coinsPerUTxOByteToCoinsPerUTxOWord
helper 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
HardForks
that turns off pointer address resolution inIncrementalStake
starting with version 9 - Some types have been moved:
- The
WitVKey
type has been moved into its own module in core. - The
HKD
type has been moved tocardano-ledger-core
. - The
PoolParams
type has been moved into its own module - The
DCert
type and related functionality fromTxBody
toCardano.Ledger.Shelley.Delegation.Certificates
. #2880
- The
- The initial funds and staking in the Shelley genesis type (used only for testing) now use
ListMap
instead ofMap
. #2871, #2890, #2892, #2895 - Renamed
SupportsSegWit
toEraSegWits
- Split
ValidateScript
intoEraScript
andEraTx.validateScript
- Renamed
ValidateAuxiliaryData
toEraAuxiliaryData
while removing usage of FunDeps. - Renamed in
Cardano.Ledger.Shelley
:Tx
toShelleyTx
(kept type synonym with a deprecation message)TxOut
toShelleyTxOut
(kept type synonym with a deprecation message)TxBody
toShelleyTxBody
(kept type synonym with a deprecation message)PParams
toShelleyPParams
(kept type synonym with a deprecation message)PParamsUpdate
toShelleyPParamsUpdate
(kept type synonym with a deprecation message)AuxiliaryData
toShelleyAuxiliaryData
(kept type synonym with a deprecation message)
- Renamed in
Cardano.Ledger.Mary
:- Renamed
Value
toMaryValue
(kept type synonym with a deprecation message)
- Renamed
- Renamed in
Cardano.Ledger.ShelleyMA
:TxBody
toMATxBody
(kept type synonym with a deprecation message)AuxiliaryData
toShelleyAuxiliaryData
(kept type synonym with a deprecation message)
- Renamed in
Cardano.Ledger.Alonzo
:ValidatedTx
toAlonzoTx
(kept type synonym with a deprecation message)TxOut
toAlonzoTxOut
(kept type synonym with a deprecation message)TxBody
toAlonzoTxBody
(kept type synonym with a deprecation message)Script
toAlonzoScript
(kept type synonym with a deprecation message)PParams
toAlonzoPParams
(kept type synonym with a deprecation message)PParamsUpdate
toAlonzoPParamsUpdate
(kept type synonym with a deprecation message)AuxiliaryData
toAlonzoAuxiliaryData
(kept type synonym with a deprecation message)
- Renamed in
Cardano.Ledger.Babbage
:TxOut
toBabbageTxOut
(kept type synonym with a deprecation message)TxBody
toBabbageTxBody
(kept type synonym with a deprecation message)PParams
toBabbagePParams
(kept type synonym with a deprecation message)PParamsUpdate
toBabbagePParamsUpdate
(kept type synonym with a deprecation message)
- Renamed Rules:
BBODY
->ShelleyBBODY
DELEG
->ShelleyDELEG
DELEGS
->ShelleyDELEGS
DELPL
->ShelleyDELPL
EPOCH
->ShelleyEPOCH
LEDGER
->ShelleyLEDGER
LEDGERS
->ShelleyLEDGERS
MIR
->ShelleyMIR
NEWEPOCH
->ShelleyNEWEPOCH
NEWPP
->ShelleyNEWPP
POOL
->ShelleyPOOL
POOLREAP
->ShelleyPOOLREAP
PPUP
->ShelleyPPUP
RUPD
->ShelleyRUPD
SNAP
->ShelleySNAP
TICK
->ShelleyTICK, ShelleyTICKF
UPEC
->ShelleyUPEC
UTXO
->ShelleyUTXO
UTXOW
->ShelleyUTXOW
- Renamed rules environments:
PPUPEnv -> PpupEnv
- Renamed rules events:
BbodyEvent
->ShelleyBbodyEvent
DelegEvent
->ShelleyDelegEvent
DelegsEvent
->ShelleyDelegsEvent
DelplEvent
->ShelleyDelplEvent
EpochEvent
->ShelleyEpochEvent
LedgerEvent
->ShelleyLedgerEvent
LedgersEvent
->ShelleyLedgersEvent
MirEvent
->ShelleyMirEvent
NewEpochEvent
->ShelleyNewEpochEvent
PoolreapEvent
->ShelleyPoolreapEvent
TickEvent
->ShelleyTickEvent
TickfEvent
->ShelleyTickfEvent
UtxowEvent
->ShelleyUtxowEvent
- Renamed predicate failure type names:
Cardano.Ledger.Shelley.Rules
:BbodyPredicateFailure
->ShelleyBbodyPredFailure
DelegPredicateFailure
->ShelleyDelegPredFailure
DelegsPredicateFailure
->ShelleyDelegsPredFailure
DelplPredicateFailure
->ShelleyDelplPredFailure
EpochPredicateFailure
->ShelleyEpochPredFailure
LedgerPredicateFailure
->ShelleyLedgerPredFailure
LedgersPredicateFailure
->ShelleyLedgersPredFailure
MirPredicateFailure
->ShelleyMirPredFailure
NewEpochPredicateFailure
->ShelleyNewEpochPredFailure
NewppPredicateFailure
->ShelleyNewppPredFailure
LedgerPredicateFailure
->ShelleyLedgerPredFailure
PoolPredicateFailure
->ShelleyPoolPredFailure
PoolreapPredicateFailure
->ShelleyPoolreapPredFailure
PpupPredicateFailure
->ShelleyPpupPredFailure
RupdPredicateFailure
->ShelleyRupdPredFailure
SnapPredicateFailure
->ShelleySnapPredFailure
TickPredicateFailure
->ShelleyTickPredFailure
TickfPredicateFailure
->ShelleyTickfPredFailure
UpecPredicateFailure
->ShelleyUpecPredFailure
UtxoPredicateFailure
->ShelleyUtxoPredFailure
UtxowPredicateFailure
->ShelleyUtxowPredFailure
Cardano.Ledger.ShelleyMA.Rules
:UtxoPredicateFailure
->ShelleyMAUtxoPredFailure
Cardano.Ledger.Alonzo.Rules
:AlonzoBbodyPredFail
->AlonzoBbodyPredFailure
and constructor:ShelleyInAlonzoPredFail
->ShelleyInAlonzoBbodyPredFailure
UtxoPredicateFailure
->AlonzoUtxoPredFailure
UtxosPredicateFailure
->AlonzoUtxosPredFailure
UtxowPredicateFail
->AlonzoUtxowPredFailure
and constructor:WrappedShelleyEraFailure
->ShelleyInAlonzoUtxowPredFailure
Cardano.Ledger.Babbage.Rules
:BabbageUtxoPred
->BabbageUtxoPredFailure
and constructor:FromAlonzoUtxoFail
->AlonzoInBabbageUtxoPredFailure
BabbageUtxowPred
->BabbageUtxowPredFailure
and constructor:FromAlonzoUtxowFail
->AlonzoInBabbageUtxowPredFailure
- The provenance for the reward calculation has been removed.
The type signature to the API function
getRewardProvenance
has 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 txOut
in favor oftxOut ^. addrTxOutL
getTxOutEitherAddr txOut
in favor oftxOut ^. addrEitherTxOutL
getTxOutCompactAddr txOut
in favor oftxOut ^. compactAddrTxOutL
getTxOutBootstrapAddress txOut
in favor oftxOut ^. bootAddrTxOutF
getAllInputs txBody
in favor oftxBody ^. allInputsTxBodyF
getCoin txOut
in favor oftxOut ^. coinTxOutL
- The
StakeCreds
type was unused and is now removed. #2880 - The
Ord
instance forMemoBytes
was removed. #2881 makeTxOut
in favor ofmkBasicTxOut
HasField
instances 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"
ValidateScript
in favor ofEraScript
andEraTx
- Type class synonyms:
Trans*
Uses*
:UsesPParams
,UsesScript
,UsesTxBody
,UsesTxOut
,UsesAuxiliaryData
BlockAnn
ChainData
AnnotatedData
SerialisableData
WellFormed
ConcreteAlonzo
ConcreteBabbage
- ...
- 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