Release Notes
Node version 11.1.0 is a pre-release version of cardano-node that is not yet recommended for use on mainnet. It includes a number of performance improvements and general enhancements, and prepares the way for the Dijkstra-era hard fork. It also completes the removal of the legacy tracing system ("iohk-monitoring-framework"): the new tracing system is now the only one included, and configurations still using legacy keys must be migrated (see the New Tracing Quick Start and PR 6580 for the list of removed config keys).
This release also removes the V1 LedgerDB and the LMDB storage backend, and makes ledger snapshots predictable and Mithril-compatible, so snapshots are comparable and shareable across nodes. LMDB users must switch storage backend.
Other highlights:
- Performance improvements: more efficient transaction forwarding between peers, mempool snapshots that stay fast as the mempool grows, and quicker Plutus script validation.
- Initial network and consensus support for Peras. It's off by default, behind the experimental
NodeToNodeV_16protocol version. - Continued groundwork on the Dijkstra era.
- New methods in the experimental gRPC/UTxO-RPC interface (
ReadTip,FollowTip,ReadGenesis,SearchUtxos,evalTx);FetchBlocknow returns full transactions. - A reworked
cardano-cli pingthat accepts multiple targets and DNS SRV records (CIP-0155). cardano-tracerdrops the discontinued RTView component; its opt-in metrics API now follows the Prometheus wire format.- The OCI images for
cardano-node,cardano-tracerandcardano-submit-apican now run as a non-root user and/or on a read-only filesystem. - The Mithril signer binary is now included in the
x86_64-linuxrelease tarball.
Known issues
- There is a 12% increase in memory usage compared to node version
11.0.1when loading genesis files with large amounts of preseeded data on testnets. Mainnet is not affected.
Release Benchmarks
Benchmarking reports relevant to the 11.1.0 release will be uploaded after the pre-release stage.
System Testing
System testing results for the 11.1.0 release will be uploaded after the pre-release stage.
Technical Specification
Minimum System Requirements
- An Intel or AMD x86 processor with two or more cores, at 1.6GHz or faster (2GHz or faster for a stake pool or relay)
- Or, for MacOS, an Apple Silicon processor
- 24GB of RAM when running with the
InMemorybackend, 8GB when running with theOnDiskbackend (pending confirmation) - 300GB of free storage (350GB recommended for future growth)
Platforms
- Linux 64-bit (Ubuntu 20.04 LTS, 22.04 LTS, 24.04 LTS, 26.04 LTS; Mint 20, 21, 21.1, 21.2, 21.3, 22, 22.1, 22.2; Debian 11, 12, 13)
- Windows 64-bit (10, 11)
- MacOS 10.15, 11 (Big Sur), 12 (Monterey), 13 (Ventura), 14 (Sonoma), 15 (Sequoia), 26 (Tahoe)
GHC/Cabal supported versions
- GHC 9.6
- Cabal 3.8/3.12
Supported roles
| Platform | Block Production | Relay | Client (Desktop) |
|---|---|---|---|
| Linux | 🟢 | 🟢 | 🟢 |
| Windows | 🟥 | 🟥 | 🟢 |
| MacOS | 🟥 | 🟥 | 🟢 |
Downloads
- Pre-release configuration files
- Docker Images: cardano-node, cardano-tracer, cardano-submit-api
Documentation
- Cardano Node documentation
- The operators handbook may also be helpful for general queries.
- Networking options and related changes are listed on the topology section
- Cardano CLI
- Internal API docs for ledger, consensus and network
- Compatibility matrix
Sign-off
| Role | Approval |
|---|---|
| Technical Steering Committee (Intersect) | 🟢 |
| Product Committee (Intersect) | 🟢 |
| Test Engineer | N/A |
| Performance Engineer | N/A |
| Site Reliability Engineer | 🟢 |
| Release Engineer | 🟢 |
Legend
- 🟢 - signed / agreed / supported
- 🟥 - not agreed / unsupported
Changelogs
cardano-node
- The legacy tracing system was removed along with the legacy tracing configuration. See #6580 for a comprehensive list of config keys that disappeared, as well as links to "New Tracing Quick Start".
- The cardano-node OCI image now supports a read-only root filesystem and non-root execution. See
nix/docker/README.mdfor details. - The cardano-node OCI entrypoint fixes
climode being dispatched after theNETWORKmodes. - The mithril signer binary was added to the
x86_64-linuxrelease binary tarball - The cardano-node NixOS service options
useNewTopology,lmdbDatabasePathandwithUtxoHdLmdbwere removed. P2P is the only networking mode, souseNewTopologyno longer had an effect, and the LMDB UTxO-HD backend was dropped. Configurations still setting any of these will fail to evaluate. - The cardano-node NixOS service added
blsKeysfor optional Leios BLS key support, andprofilingOutputDirto place GHC RTS profiling output on a writable path. RTS stats stay enabled by default, while the heavier profiling and eventlog outputs are now gated, for both node and tracer services.
cardano-tracer
- The cardano-tracer OCI image now supports a read-only root filesystem and non-root execution. See
nix/docker/README.mdfor details. - The cardano-tracer OCI image no longer aborts under
set -ewhenCARDANO_MIN_LOG_SEVERITYis unset. - Timeseries query endpoints are now closely aligned with Prometheus wire format:
- URL-encoded form for POST; URL query string for GET
- response JSON aligned with Prometheus conventions
- New timeseries endpoints for querying connected nodes, node info, node startup info and node sync progress
- Full removal of discontinued RTView component
- NB: The metrics timeseries store and HTTP API are still disabled by default and require an explicit opt-in in cardano-tracer's config file
cardano-submit-api
- The cardano-submit-api OCI image now supports a read-only root filesystem and non-root execution. See
nix/docker/README.mdfor details. - The cardano-submit-api NixOS service added a
metricsPortoption, passed through to the OCI image. The service definition was updated for the new tracing configuration and now uses a group-accessible node socket. - The cardano-submit-api prometheus metrics now default to a new tracing system prefix of
cardano_submit_api_metrics_. For legacy behavior with no metrics prefix, remove theTraceOptionMetricsPrefixfrom the submit-api config file.
cardano-testnet
No changes.
cardano-cli
- New
cardano-cli ping: multiple targets, DNS resolution, SRV records (CIP-0155), unix sockets, and--mode ping|tip|query(breaking, feature) pingCLI reshuffle: positionalADDRSreplaces--host/--port/--unixsock;--magicrenamed--network-magic; new--srv-prefix,--color,--short-hash;-hnow only means--help(breaking, feature)genesis create/create-staked/create-testnet-datawrite initial funds, pools, delegations, and DReps into the newextraConfiggenesis field, leaving deprecated top-level fields empty (breaking)--pool-relay-portis now required with--single-host-pool-relay(breaking)stake-pool registration-certificategains opt-in--validate-relaysreachability check (feature)- Add
--key-output-bech32/--key-output-text-envelopeto governance key-gen commands (feature, compatible) - Migrate the friendly tx renderer onto
Exp.SignedTx/Exp.UnsignedTx;debug transaction viewandtransaction viewnow only accept Conway and Dijkstra files, pre-Conway fails withDeprecatedEra(breaking, refactoring) - Remove deprecated
--update-proposal-filefrom era-basedtransaction build/build-raw(kept incompatiblecommands) (breaking)
cardano-api
shelleyGenesisDefaults/conwayGenesisDefaultspopulate the newsgExtraConfig/cgExtraConfigfields (compatible)- Balancing fails with
CollateralWithoutPlutusScriptswhen collateral is supplied but no Plutus scripts run (bugfix, breaking) - Leftover ada below min-UTxO is folded into total collateral instead of failing balancing (bugfix)
- Balancing fails with new
TxBodyErrorCollateralinstead of building ledger-rejected transactions (bugfix, breaking) - Fix PlutusV4 scripts mislabelled as V3 (silent hash mismatches for V4 reference scripts); fix
toShelleyScript/getPlutusDatumcrashes for V4 (bugfix) - Atomic writes on POSIX for the
*WithOwnerPermissionsfile functions andwriteSecrets(temp file + rename, fsync); generalised fromIOtoMonadIO(breaking, bugfix) writeSecretscreates secret files owner-only from the start (bugfix)- Add
writeFileTextEnvelopeWithOwnerPermissions; POSIX owner-permission files now0600and truncated on open (feature) - Add
toPlutusScriptPurposeIndexandGuardingScriptpurpose (Dijkstra guard scripts); addConwayEraPParamstoEraCommonConstraints(feature, breaking) - Add
readAnyScriptBytes/readFileAnyScriptto the experimental API withAnyScriptDecodeError(feature) - Add
evaluateTransaction/evaluateSignedTxtoCardano.Api.Experimental(feature) - Export
evaluateTransactionExecutionUnitsfrom Experimental; re-exportEraTxBody(..)(compatible) - Add
FromJSONinstances for the experimentalTxOut(feature) - Widen experimental
SignedTx erato all Shelley-based eras (compatible) - Export
readShelleyGenesis,ShelleyGenesisError,renderShelleyGenesisError; re-exportcardanoLedgerTransitionConfig,byronProtocolParams,byronGenesis,shelleyLedgerGenesis(compatible) - Re-export consensus node-kernel types (
NodeKernel,ChainDB,TopLevelConfig, etc.) fromCardano.Api.Consensus(compatible) - Re-export the ChainDB follower API (
newFollower,Follower,withRegistry, …) (compatible) - Re-export
getTipHeader,blockHash,blockSlot,byronBlockRaw(compatible) - Deprecate the old-API tx body surface (
TxBody,TxBodyContent,createTransactionBody, …) in favour ofCardano.Api.Experimental(compatible) - Remove deprecated
Certificate eraGADT and the publicCardano.Api.Certificatemodule; use the Experimental/Compatible certificate APIs (breaking) - Remove legacy
TxOut ctx erafrom the Compatible and Experimental APIs;createCompatibleTxnow takesExp.TxOutplus explicit supplemental datums (breaking) - Remove
ByronToAlonzoEraeon and the closed-range eonsShelleyToAllegraEra/ShelleyToMaryEra/ShelleyToAlonzoEraplus their eliminators (breaking) - Remove deprecated
Blockpattern synonym (breaking) - Remove deprecated era conversion functions superseded by
convert(breaking) - Remove deprecated
ProtocolParametersUpdate/toLedgerPParamsUpdate; update-proposal conversion functions become era-indexed; implementToCBOR/FromCBORforEraBasedProtocolParametersUpdate; remove unusedTxBodyProtocolParamsConversionError(breaking, bugfix) - Remove deprecated
makeShelleyTransactionBody/createAndValidateTransactionBody; usecreateTransactionBody(breaking)
cardano-rpc
- Add the
QueryService.ReadGenesisUTxO RPC method, returning the full per-era genesis configuration.
(feature)
PR 1277 - Implement the FollowTip SyncService method: streams fully parsed blocks as the chain advances, starting from the first intersection point found on the chain (an empty-hash block ref denotes origin). An empty intersect list follows from the current tip; an unmatched intersect list fails with NOT_FOUND. Rollbacks are delivered as undo actions carrying the rolled-back blocks where they can be reconstructed from ChainDB, falling back to reset otherwise.
(feature)
PR 1268 - Implement the ReadTip SyncService method: returns the current chain tip as slot, block hash, height and timestamp.
(feature)
PR 1259 - Fix wire encoding of two TxOutput fields: address now carries raw ledger address bytes instead of bech32/base58 text, and Datum.hash now carries the 32-byte datum hash instead of the datum CBOR for inline datums, matching other UTxO RPC implementations.
(bugfix)
PR 1258 - Approximate out-of-range rationals in RationalNumber conversions instead of wrapping. Preparatory refactoring for FetchBlock transaction bodies: split UtxoRpc.Type into Type.* modules, use Proto-wrapped messages in conversion functions, generalise txOutToUtxoRpcTxOutput over eras, expose request helpers, and return the parsed block from fetchBlock.
(bugfix, refactoring)
PR 1253 - Fix server crash when a client-supplied RationalNumber has a zero denominator (the protobuf field default): the value is now rejected as invalid instead of throwing.
(bugfix)
PR 1253 - FetchBlock now returns fully populated transactions for blocks in every era, including Byron. Previously the response contained only the block header and raw block bytes.
(feature)
PR 1247 - FetchBlock: add Block.timestamp via slot-to-UTC conversion using EraHistory. Breaking:
mkNodeKernelAccessnow takesTopLevelConfig;NodeKernelAccessfieldnkaChainDBrenamed tochainDb.
(feature, breaking)
PR 1242 - FetchBlock: add Block.timestamp via slot-to-UTC conversion using EraHistory. Breaking:
mkNodeKernelAccessnow takesTopLevelConfig;NodeKernelAccessfieldnkaChainDBrenamed tochainDb.
(feature, breaking)
PR 1242 Cardano.Rpc.Server.Internal.UtxoRpc.Type.txInTxOutToAnyUtxoDatanow serialises the UTxO RPCnativeBytesfor tx outputs using the era's ledger CBOR (L.serialize' (eraProtVerHigh era)) instead of the unversionedCardano.Binary.serialize'. Downstream gRPC consumers will see the era's canonical encoding rather than the previous era-agnostic bytes.
(bugfix)
PR 1221- gRPC: Guard against fetching the entire UTxO set. ReadUtxos now returns an empty response when no keys are provided. SearchUtxos now rejects predicates that cannot be narrowed to specific addresses with INVALID_ARGUMENT, instead of falling back to QueryUTxOWhole.
(breaking)
PR 1214 - Add evalTx gRPC method to the UTxO RPC submit service, evaluating a CBOR-serialised transaction against the current ledger state and returning per-redeemer execution units, computed minimum fee, script evaluation errors, and balance check results without submitting.
(feature)
PR 1193 - gRPC: add tip timestamp to ChainPoint response
(bugfix)
PR 1134 - Add searchUtxos gRPC method to the UTxO RPC query service, implementing predicate-based UTxO filtering with address, asset, and boolean combinators, plus cursor-based pagination.
(feature)
PR 1123
Network
- tx decision logic v2 - major performance improvements: IntersectMBO/ouroboros-network#5375
- fixed initial syncing targets in Praos mode with bootstrap peers, IntersectMBO/ouroboros-network#5362
- local socket access right warnings, IntersectMBO/ouroboros-network#5363
- initial Peras network level support (under experimental
NodeToNodeV_16), IntersectMBO/ouroboros-network#5202
Consensus
-
Peras (still off by default)
- Peras certificates and votes are now diffused between nodes via a new ObjectDiffusion mini-protocol, wired into the node like TxSubmission. Certificate and vote storage is persisted and garbage-collected.
- Real default Peras protocol parameters (previously unset), a BLS-based vote/certificate format, and the weighted Fait-Accompli voting committee.
-
Ledger snapshots
- Snapshots are now predictable: nodes with the same configuration snapshot at the same slots, so snapshots are comparable/shareable across nodes.
- The default policy is Mithril's: one snapshot every 40 * k slots — roughly one a day on mainnet, one in five landing on a Shelley epoch boundary.
- A small randomised delay is applied before writing a snapshot, so nodes don't all write at the same instant.
- The node now validates the snapshot configuration at startup and warns about suspicious settings (inverted or negative delays, zero on-disk snapshots, intervals that break Mithril compatibility).
-
LedgerDB storage backends
- The V1 LedgerDB and the LMDB backend are removed — V2 is the only flavour. LMDB users must switch backend.
- The LSM backend can be given a second directory to export snapshots to, so snapshot-converter can read them without disturbing a running node.
-
Network / compatibility
- Support for NodeToNodeV_16.
-
Performance (4.1)
- Mempool snapshot creation is now constant-time instead of quadratic in mempool size — this was a real cost on busy nodes, affecting both block forging and queries.
- Transaction-id comparison is allocation-free for all Cardano eras; ordering is unchanged.
Ledger
- Significant performance improvements to Plutus script validation:
- A transaction is now threaded through the ledger rules as a state-annotated transaction, carrying the information derived for it from the current state, so rules can reuse it rather than recompute it
- Within a block, a Plutus script deserialized for one transaction is reused by all the later ones
- Transactions already validated in the mempool keep their results when the mempool is revalidated
- Made the mempool transaction decoder backwards compatible, so that transactions
serialized in pre-Alonzo era formats can be submitted again:
#5946 - Improved handling of legacy pointer addresses in the UTxO, fixing address
normalization when deserializing the ledger state:
#5654 - Prevent starting a network in an era that is incompatible with the configured protocol
version: #5719 - New
cardano-protocolpackage that consolidates protocol-related functionality (TPraos
and Praos block headers, operational certificates, protocol crypto), together with
initial groundwork forLeiosandPerasin the Dijkstra era:
#5887,
#5872,
#5927 - All remaining ledger state queries have been moved from
ouroboros-consensusinto the
ledger API, with golden tests guaranteeing the stability of query result serialization:
#5764 - Support for initializing a testnet with large amounts of initial funds and staking by
streaming injection data from external files, without loading everything into memory:
#5572,
#5777 - Continued progress on the Dijkstra era, which as a whole is not functional yet:
- Nested transactions: rules for validating sub-transactions within a top-level
transaction, including UTxO, witnessing, fee and script handling - Guards (CIP-112): required
top-level guards with optional datums - Account balance assertions in the transaction body, including exact balance checks
- Direct deposits to reward accounts, with network validation
- Withdrawals no longer require the reward account to be delegated to a DRep
- Plutus
V1-V3context translation now fails explicitly for Dijkstra features that those language versions cannot represent, rather than producing a wrong context - New block body structure with memoized serialization, following CIP-0176
- Nested transactions: rules for validating sub-transactions within a top-level
- New
generate-cborcommand line tool for producing random CBOR examples of any
ledger type in every era: #5762 - Fixed cost models supplied in the genesis configuration being silently ignored for
PlutusV1andPlutusV3
Plutus
No changes.
Tracing
- Removal of legacy tracing ("iohk-monitoring-framework"). See #6580 for a comprehensive list of config keys that disappeared, as well as links to "New Tracing Quick Start".
Detailed Changelogs
Details
Package changelogs
| Package | Version | Changelog |
|---|---|---|
| Win32-network | 0.2.0.1 | ChangeLog.md |
| acts-generic | 0.1.1.0 | CHANGELOG.md |
| base-deriving-via | 0.1.0.2 | CHANGELOG.md |
| basement | 0.0.16 | |
| byron-spec-chain | 1.0.1.2 | CHANGELOG.md |
| byron-spec-ledger | 1.1.0.2 | CHANGELOG.md |
| cardano-addresses | 4.0.2 | ChangeLog.md |
| cardano-api | 11.5.0.0 | CHANGELOG.md |
| cardano-base | 0.1.6.0 | CHANGELOG.md |
| cardano-binary | 1.9.1.0 | CHANGELOG.md |
| cardano-cli | 11.2.1.0 | CHANGELOG.md |
| cardano-crypto | 1.3.0 | |
| cardano-crypto-class | 2.5.1.0 | CHANGELOG.md |
| cardano-crypto-leios | 0.2.0.0 | CHANGELOG.md |
| cardano-crypto-praos | 2.2.4.0 | CHANGELOG.md |
| cardano-crypto-wrapper | 1.7.0.0 | CHANGELOG.md |
| cardano-data | 1.3.1.0 | CHANGELOG.md |
| cardano-diffusion | 1.1.1.0 | CHANGELOG.md |
| cardano-git-rev | 0.2.2.1 | |
| cardano-ledger-allegra | 1.10.0.0 | CHANGELOG.md |
| cardano-ledger-alonzo | 1.16.0.0 | CHANGELOG.md |
| cardano-ledger-api | 1.14.0.0 | CHANGELOG.md |
| cardano-ledger-babbage | 1.14.0.0 | CHANGELOG.md |
| cardano-ledger-binary | 1.9.0.0 | CHANGELOG.md |
| cardano-ledger-byron | 1.3.0.0 | CHANGELOG.md |
| cardano-ledger-conway | 1.23.0.0 | CHANGELOG.md |
| cardano-ledger-core | 1.21.0.0 | CHANGELOG.md |
| cardano-ledger-dijkstra | 0.3.0.0 | CHANGELOG.md |
| cardano-ledger-mary | 1.11.0.0 | CHANGELOG.md |
| cardano-ledger-shelley | 1.19.0.0 | CHANGELOG.md |
| cardano-ledger-shelley-test | 1.9.0.0 | CHANGELOG.md |
| cardano-prelude | 0.2.2.0 | ChangeLog.md |
| cardano-prelude-test | 0.1.0.5 | |
| cardano-protocol | 0.1.0.0 | CHANGELOG.md |
| cardano-protocol-tpraos | 1.6.0.0 | CHANGELOG.md |
| cardano-rpc | 11.1.0.0 | CHANGELOG.md |
| cardano-slotting | 0.2.1.0 | CHANGELOG.md |
| cardano-strict-containers | 0.1.6.0 | CHANGELOG.md |
| deriving-aeson | 0.2.10.0.0.0.0.1 | CHANGELOG.md |
| digest | 0.0.2.1.0.0.0.1 | CHANGELOG.md |
| dmq-node | 0.7.0.0 | CHANGELOG.md |
| ekg-core | 0.1.2.0 | |
| ekg-forward | 1.3 | CHANGELOG.md |
| ekg-json | 0.1.1.1 | |
| ekg-wai | 0.1.2.0 | |
| foundation | 0.0.30 | |
| fs-api | 0.4.0.0 | CHANGELOG.md |
| fs-sim | 0.5.0.1 | CHANGELOG.md |
| heapwords | 0.1.0.2 | CHANGELOG.md |
| hedgehog | 1.7 | CHANGELOG.md |
| hedgehog-extras | 0.10.1.0 | CHANGELOG.md |
| io-classes | 1.8.0.1 | CHANGELOG.md |
| io-sim | 1.8.0.1 | CHANGELOG.md |
| kes-agent | 1.3.0.0 | CHANGELOG.md |
| kes-agent-crypto | 1.2.0.0 | CHANGELOG.md |
| libsystemd-journal | 1.4.6.0 | Changelog.md |
| measures | 0.1.0.3 | CHANGELOG.md |
| monoidal-synchronisation | 0.1.0.8 | CHANGELOG.md |
| network-mux | 0.11.0.0 | CHANGELOG.md |
| non-integral | 1.0.0.0 | CHANGELOG.md |
| optparse-applicative | 0.19.0.0 | CHANGELOG.md |
| optparse-applicative-fork | 0.19.0.0 | CHANGELOG.md |
| ouroboros-consensus | 4.1.0.0 | CHANGELOG.md |
| ouroboros-network | 1.2.0.0 | CHANGELOG.md |
| plutus-core | 1.65.0.0 | CHANGELOG.md |
| plutus-ledger-api | 1.65.0.0 | CHANGELOG.md |
| plutus-metatheory | 1.65.0.0 | CHANGELOG.md |
| plutus-tx | 1.65.0.0 | CHANGELOG.md |
| plutus-tx-plugin | 1.65.0.0 | CHANGELOG.md |
| prettyprinter-configurable | 1.36.0.0 | |
| quickcheck-monoids | 0.1.1.0 | CHANGELOG.md |
| servant-server | 0.20.3.0 | CHANGELOG.md |
| small-steps | 1.1.4.0 | CHANGELOG.md |
| snappy-c | 0.1.3 | CHANGELOG.md |
| sop-extras | 0.4.2.0 | CHANGELOG.md |
| streaming | 0.2.4.0 | changelog.md |
| strict-checked-vars | 0.2.1.0 | CHANGELOG.md |
| strict-sop-core | 0.1.4.0 | CHANGELOG.md |
| trace-dispatcher | 2.13.0 | CHANGELOG.md |
| trace-resources | 0.2.4 | CHANGELOG.md |
| typed-protocols | 1.2.1.0 | CHANGELOG.md |
| validation-selective | 0.2.0.0.0.0.0.0.1 | CHANGELOG.md |
| vector-algorithms | 0.9.1.0 | CHANGELOG.md |
| vector-map | 1.2.1.0 | CHANGELOG.md |