Release Notes
Node version 11.2.1 is a pre-release version of cardano-node that is not yet recommended for use on mainnet. It is a maintenance release on top of 11.2.0. It updates to ouroboros-consensus 5.4, cardano-api 11.12 and cardano-cli 11.7, which together reduce the node's memory use around ledger snapshots, and it raises the protocol version the node advertises in block headers to 11.3.
For the full set of 11.2 changes (the new cardano-config configuration format, gRPC over HTTP/2, the removal of node-to-client versions below NodeToClientV_23, and more), see the 11.2.0 release notes.
Highlights:
- Lower memory use. Writing a ledger snapshot no longer temporarily grows live memory by about the snapshot's size. The ChainDB also no longer keeps the genesis ledger state alive, which saves several hundred MiB on networks with a large genesis UTxO or delegation set.
- Faster snapshots while syncing. Until the node has first caught up, ledger snapshots are written as soon as they are requested. The randomised snapshot delay applies only after that.
- LSM is supported for block production. The UTxO-HD LSM has been confirmed to meet Praos performance guarantees for block production.
- Network configurations: the maximum ledger snapshot delay (
Storage.LedgerDB.Snapshots.MaxDelay) is capped at 1 hour on all networks (down from 6 hours on mainnet and preprod). - The block header protocol version is bumped from 11.1 to 11.3.
- The node no longer crashes when writing traces to stdout fails (for example a closed pipe or an encoding error).
It is recommended to test the LSM backend in a safe environment before deployment in a block producer, and to allow at least 8GB of RAM.
Known issues
Breaking changes
There are no breaking changes for node operators in 11.2.1.
Breaking changes introduced in 11.2.0
These apply when upgrading from 11.1.x. See the 11.2.0 release notes for details.
- Configuration files: the published
mainnet-config.json/.yaml(and other network configs) are in thecardano-configenvelope format and are not readable by pre-11.2 nodes. Flat configurations remain supported by 11.2.1; usecardano-node config migrateto convert one. - Docker:
CARDANO_CONFIG_JSON_MERGEis a plain deep merge, so a merge document written for the flat shape silently does nothing against an enveloped config. Nest keys underConfiguration.<Section>(e.g.{"Configuration":{"HermodTracing":{"TraceOptions":…}}}); seenix/docker/README.md. - Node-to-client:
NodeToClientV_16–NodeToClientV_22were removed, along with the queries only they could reach:GetProposedPParamsUpdates,GetStakeDistribution(useGetStakeDistribution2) andGetPoolDistr(useGetPoolDistr2). - NixOS service:
blsKeys(added in 11.1) is replaced by a singleblsKey; multiple keys go in one file as a JSON array of text envelopes. - Tracing: log consumers should note the tracing changes listed in the 11.2.0 release notes: the mempool
"tx"field is now hex CBOR, theDelegAccountAlreadyRegisteredfailure was renamed, there are new namespaces, and the trace forwarding config changed.
Release Benchmarks
System Testing
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 protocol version the node advertises in block headers is bumped from 11.1 to 11.3. (#6767)
- Network configurations: the maximum randomised ledger snapshot delay (
Storage.LedgerDB.Snapshots.MaxDelay) is capped at one hour (3600s). On mainnet and preprod it was 6 hours (21600s); on preview and sanchonet it was 4320s.MinDelayandIntervalare unchanged. (#6767, iohk-nix#624) - Updated to
ouroboros-consensus5.4,cardano-api11.12 andcardano-cli11.7. See the Consensus section for the memory improvements. (#6767)
cardano-tracer
No changes.
cardano-submit-api
- Updated to
cardano-api11.12 andcardano-cli11.7. (#6767)
cardano-testnet
- New
statuscommand that reports the state of a testnet created withcardano-testnet, in human-readable form or as JSON with--json. The JSON output has a schema, checked in CI. (#6741) - Starting a testnet can no longer hang forever while waiting for a node to start. (#6750)
- The
--output-dirhelp now gives the real default (./testnet) and says the directory must not already contain a testnet. (#6752) - Updated to
cardano-api11.12 andcardano-cli11.7. (#6767)
cardano-cli
Updated to cardano-cli 11.7.0.0:
- New
dijkstra stake-pool bls-registration-certificate offline: takes an existing pool registration certificate and writes a new one with only the BLS key and its proof of possession replaced. Use it to register a pool's BLS key for the first time or rotate it, without re-entering pool parameters. Accepts certificates from the Conway era and from earlier cardano-cli versions. - New
debug certificate viewprints a certificate file as JSON or YAML.debug certificate viewanddebug transaction viewread standard input when the file path is-. debug transaction viewuses new keys for certificates (breaking for scripts that read them): pool registrations showpool id,vrf key hash,reward account(bech32) andmargin(a fraction); DRep keys are spelledDRep, with credential keyDRep credential; committee certificates show every credential and anchor.transaction viewprints sub-transaction data.governance action create-protocol-parameters-updatehas options for the new Dijkstra parameters: minimum pool margin, maximum pledge leverage, the Peras parameters, and reference-input costs.--no-max-pledge-leverageand--no-peras-bootstrap-roundpropose unsetting them.- Dijkstra sub-transactions: new
witnessandassemblecommands create key witnesses separately and combine them with an unsigned sub-transaction, rejecting witnesses whose signatures do not match. - Dijkstra
transaction build,build-rawandbuild-estimate:- support native and Plutus V4 script guards (inline or reference);
- support CIP-159 account balance intervals (
--account-balance-interval,--starting-account-balance-interval).
cardano-api
Updated to cardano-api 11.12.0.0:
- Fixed
calcMinFeeRecursivefailing withFeeCalculationDidNotConvergewhen the change output sits near a CBOR integer width boundary (such as 2^32 lovelace). The fee it returns can be up to4 * txFeePerByteabove the minimum (176 lovelace on mainnet). - Fixed reading JSON simple scripts, including guards, in the Dijkstra era, which used to crash.
IntroducedInDijkstraPParamscovers minimum pool margin, maximum pledge leverage, the Peras parameters and reference-input costs.- Requires
ouroboros-consensus5.4,cardano-ledger-core1.23 andcardano-ledger-alonzo1.18.
cardano-rpc
No changes.
Network
No changes.
Consensus
Updated from ouroboros-consensus 5.2.0.0 to 5.4.0.0:
- The ChainDB no longer keeps its startup arguments reachable for its whole lifetime. Until now, the Peras voting view (never used while Peras is disabled) kept the genesis ledger state and its tables alive, costing several hundred MiB of live data on networks with a large genesis UTxO or delegation set.
- Writing a ledger snapshot no longer temporarily grows live memory by about the snapshot's size. The snapshot request queue used to keep the request, and with it the serialised snapshot, reachable until the write finished.
- Until the node has first caught up, ledger snapshots are written as soon as they are requested. The randomised snapshot delay (
MinDelay/MaxDelay) applies only once the node has been caught up, even if it later falls behind again. While syncing, a delayed snapshot kept an outdated ledger state alive for the whole delay. TraceForgingMempoolSnapshotis emitted after the forging thread has computed the mempool snapshot, not before, so its duration is no longer counted as block forging time.
Ledger
Updated to cardano-ledger-core 1.23, cardano-ledger-alonzo 1.18 and cardano-ledger-dijkstra 0.5. These contain library API changes only (Plutus cost model handling in PlutusWithContext, new Inject AlonzoContextError constraints), with no change in ledger rules or behaviour. The other ledger packages were rebuilt with updated bounds only.
Plutus
No changes.
Tracing
Updated to trace-dispatcher 2.13.3:
- An IO error while writing traces to stdout, such as an encoding failure or a closed pipe, no longer crashes the node. The error is reported on stderr, and stdout tracing resumes once the condition clears. (hermod-tracing#22)
- Lower per-message tracing overhead: configured tracers build their per-namespace tracers once per configuration instead of once per message, and namespace lookups no longer allocate.
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.2.0 | CHANGELOG.md |
| byron-spec-ledger | 1.1.1.0 | CHANGELOG.md |
| cardano-addresses | 4.0.8 | ChangeLog.md |
| cardano-api | 11.12.0.0 | CHANGELOG.md |
| cardano-base | 0.1.7.1 | CHANGELOG.md |
| cardano-binary | 1.9.1.0 | CHANGELOG.md |
| cardano-cli | 11.7.0.0 | CHANGELOG.md |
| cardano-config | 2.2.3.0 | CHANGELOG.md |
| cardano-crypto | 1.4.0 | |
| cardano-crypto-class | 2.6.0.0 | CHANGELOG.md |
| cardano-crypto-leios | 0.3.0.0 | CHANGELOG.md |
| cardano-crypto-praos | 2.2.4.0 | CHANGELOG.md |
| cardano-crypto-wrapper | 1.8.0.0 | CHANGELOG.md |
| cardano-data | 1.4.0.0 | CHANGELOG.md |
| cardano-diffusion | 1.3.0.1 | CHANGELOG.md |
| cardano-git-rev | 0.2.2.1 | |
| cardano-keys | 11.0.0.0 | CHANGELOG.md |
| cardano-ledger-allegra | 1.10.2.0 | CHANGELOG.md |
| cardano-ledger-alonzo | 1.18.0.0 | CHANGELOG.md |
| cardano-ledger-api | 1.15.0.0 | CHANGELOG.md |
| cardano-ledger-babbage | 1.15.0.1 | CHANGELOG.md |
| cardano-ledger-binary | 1.10.1.0 | CHANGELOG.md |
| cardano-ledger-byron | 1.3.0.0 | CHANGELOG.md |
| cardano-ledger-conway | 1.24.0.1 | CHANGELOG.md |
| cardano-ledger-core | 1.23.0.0 | CHANGELOG.md |
| cardano-ledger-dijkstra | 0.5.0.0 | CHANGELOG.md |
| cardano-ledger-mary | 1.11.1.1 | CHANGELOG.md |
| cardano-ledger-shelley | 1.20.0.1 | CHANGELOG.md |
| cardano-ledger-shelley-test | 1.10.0.0 | CHANGELOG.md |
| cardano-prelude | 0.2.2.0 | ChangeLog.md |
| cardano-prelude-test | 0.1.0.5 | |
| cardano-protocol | 0.2.0.1 | CHANGELOG.md |
| cardano-protocol-tpraos | 1.6.0.1 | CHANGELOG.md |
| cardano-rpc | 11.5.0.0 | CHANGELOG.md |
| cardano-slotting | 0.2.2.0 | CHANGELOG.md |
| cardano-strict-containers | 0.1.6.0 | CHANGELOG.md |
| digest | 0.0.2.1.0.0.0.1 | CHANGELOG.md |
| dmq-node | 0.7.2.2 | CHANGELOG.md |
| ekg-core | 0.1.2.0 | |
| ekg-forward | 1.4 | 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.4.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 | 1.0.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 | 5.4.0.0 | CHANGELOG.md |
| ouroboros-network | 2.0.0.0 | CHANGELOG.md |
| plutus-core | 1.71.0.0 | CHANGELOG.md |
| plutus-ledger-api | 1.71.0.0 | CHANGELOG.md |
| plutus-metatheory | 1.71.0.0 | CHANGELOG.md |
| plutus-tx | 1.71.0.0 | CHANGELOG.md |
| plutus-tx-plugin | 1.71.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.2.0.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.3 | CHANGELOG.md |
| trace-resources | 0.2.4 | 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 |