github IntersectMBO/cardano-node 11.1.0

pre-release5 hours ago

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_16 protocol version.
  • Continued groundwork on the Dijkstra era.
  • New methods in the experimental gRPC/UTxO-RPC interface (ReadTip, FollowTip, ReadGenesis, SearchUtxos, evalTx); FetchBlock now returns full transactions.
  • A reworked cardano-cli ping that accepts multiple targets and DNS SRV records (CIP-0155).
  • cardano-tracer drops the discontinued RTView component; its opt-in metrics API now follows the Prometheus wire format.
  • The OCI images for cardano-node, cardano-tracer and cardano-submit-api can 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-linux release tarball.

Known issues

  • There is a 12% increase in memory usage compared to node version 11.0.1 when 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 InMemory backend, 8GB when running with the OnDisk backend (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

Documentation

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.md for details.
  • The cardano-node OCI entrypoint fixes cli mode being dispatched after the NETWORK modes.
  • The mithril signer binary was added to the x86_64-linux release binary tarball
  • The cardano-node NixOS service options useNewTopology, lmdbDatabasePath and withUtxoHdLmdb were removed. P2P is the only networking mode, so useNewTopology no 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 blsKeys for optional Leios BLS key support, and profilingOutputDir to 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.md for details.
  • The cardano-tracer OCI image no longer aborts under set -e when CARDANO_MIN_LOG_SEVERITY is 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.md for details.
  • The cardano-submit-api NixOS service added a metricsPort option, 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 the TraceOptionMetricsPrefix from 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)
  • ping CLI reshuffle: positional ADDRS replaces --host/--port/--unixsock; --magic renamed --network-magic; new --srv-prefix, --color, --short-hash; -h now only means --help (breaking, feature)
  • genesis create/create-staked/create-testnet-data write initial funds, pools, delegations, and DReps into the new extraConfig genesis field, leaving deprecated top-level fields empty (breaking)
  • --pool-relay-port is now required with --single-host-pool-relay (breaking)
  • stake-pool registration-certificate gains opt-in --validate-relays reachability check (feature)
  • Add --key-output-bech32/--key-output-text-envelope to governance key-gen commands (feature, compatible)
  • Migrate the friendly tx renderer onto Exp.SignedTx/Exp.UnsignedTx; debug transaction view and transaction view now only accept Conway and Dijkstra files, pre-Conway fails with DeprecatedEra (breaking, refactoring)
  • Remove deprecated --update-proposal-file from era-based transaction build/build-raw (kept in compatible commands) (breaking)
cardano-api
  • shelleyGenesisDefaults/conwayGenesisDefaults populate the new sgExtraConfig/cgExtraConfig fields (compatible)
  • Balancing fails with CollateralWithoutPlutusScripts when 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 TxBodyErrorCollateral instead of building ledger-rejected transactions (bugfix, breaking)
  • Fix PlutusV4 scripts mislabelled as V3 (silent hash mismatches for V4 reference scripts); fix toShelleyScript/getPlutusDatum crashes for V4 (bugfix)
  • Atomic writes on POSIX for the *WithOwnerPermissions file functions and writeSecrets (temp file + rename, fsync); generalised from IO to MonadIO (breaking, bugfix)
  • writeSecrets creates secret files owner-only from the start (bugfix)
  • Add writeFileTextEnvelopeWithOwnerPermissions; POSIX owner-permission files now 0600 and truncated on open (feature)
  • Add toPlutusScriptPurposeIndex and GuardingScript purpose (Dijkstra guard scripts); add ConwayEraPParams to EraCommonConstraints (feature, breaking)
  • Add readAnyScriptBytes/readFileAnyScript to the experimental API with AnyScriptDecodeError (feature)
  • Add evaluateTransaction/evaluateSignedTx to Cardano.Api.Experimental (feature)
  • Export evaluateTransactionExecutionUnits from Experimental; re-export EraTxBody(..) (compatible)
  • Add FromJSON instances for the experimental TxOut (feature)
  • Widen experimental SignedTx era to all Shelley-based eras (compatible)
  • Export readShelleyGenesis, ShelleyGenesisError, renderShelleyGenesisError; re-export cardanoLedgerTransitionConfig, byronProtocolParams, byronGenesis, shelleyLedgerGenesis (compatible)
  • Re-export consensus node-kernel types (NodeKernel, ChainDB, TopLevelConfig, etc.) from Cardano.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 of Cardano.Api.Experimental (compatible)
  • Remove deprecated Certificate era GADT and the public Cardano.Api.Certificate module; use the Experimental/Compatible certificate APIs (breaking)
  • Remove legacy TxOut ctx era from the Compatible and Experimental APIs; createCompatibleTx now takes Exp.TxOut plus explicit supplemental datums (breaking)
  • Remove ByronToAlonzoEra eon and the closed-range eons ShelleyToAllegraEra/ShelleyToMaryEra/ShelleyToAlonzoEra plus their eliminators (breaking)
  • Remove deprecated Block pattern synonym (breaking)
  • Remove deprecated era conversion functions superseded by convert (breaking)
  • Remove deprecated ProtocolParametersUpdate/toLedgerPParamsUpdate; update-proposal conversion functions become era-indexed; implement ToCBOR/FromCBOR for EraBasedProtocolParametersUpdate; remove unused TxBodyProtocolParamsConversionError (breaking, bugfix)
  • Remove deprecated makeShelleyTransactionBody/createAndValidateTransactionBody; use createTransactionBody (breaking)
cardano-rpc
  • Add the QueryService.ReadGenesis UTxO 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: mkNodeKernelAccess now takes TopLevelConfig; NodeKernelAccess field nkaChainDB renamed to chainDb.
    (feature, breaking)
    PR 1242
  • FetchBlock: add Block.timestamp via slot-to-UTC conversion using EraHistory. Breaking: mkNodeKernelAccess now takes TopLevelConfig; NodeKernelAccess field nkaChainDB renamed to chainDb.
    (feature, breaking)
    PR 1242
  • Cardano.Rpc.Server.Internal.UtxoRpc.Type.txInTxOutToAnyUtxoData now serialises the UTxO RPC nativeBytes for tx outputs using the era's ledger CBOR (L.serialize' (eraProtVerHigh era)) instead of the unversioned Cardano.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
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-protocol package that consolidates protocol-related functionality (TPraos
    and Praos block headers, operational certificates, protocol crypto), together with
    initial groundwork for Leios and Peras in the Dijkstra era:
    #5887,
    #5872,
    #5927
  • All remaining ledger state queries have been moved from ouroboros-consensus into 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-V3 context 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
  • New generate-cbor command 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 PlutusV1 and PlutusV3
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

Don't miss a new cardano-node release

NewReleases is sending notifications on new releases.