github IntersectMBO/cardano-node 10.7.0

pre-release7 hours ago

Release Notes

Node version 10.7.0 contains a number of major improvements, and also includes internal changes that will be enacted by the forthcoming hard fork to Protocol Version 11 in a future node version. A key change is that introduces the LSM Tree backend for storage layer that delivers the UTxO-HD OnDisk storage backend. This is enabled by a new LSM (Log-Structured Merge) tree implementation in Consensus (LedgerDB V2) that replaces the previous LMDB backend. Operators running with the OnDisk backend now require only 8GB of RAM, compared to 24GB for the InMemory backend. The new backend is capable of tracking table sizes and uses versioned on-disk encoding (TablesCodecVersion1). Additional highlights include KES Agent support for improved operational key security, the first experimental release of cardano-rpc (a gRPC/UTxO-RPC interface), dmq-node and kes-agent binaries added to the release, TLS/SSL support for EKG/Prometheus in cardano-tracer, and support for a protocol minor version bump.

Local root changes:

  • Local root peers can be configured with a new boolean field behindFirewall (false is the default).
  • For Trustable local root peers, Chain-Sync won't timeout in the StNext StMustReply state (e.g. awaiting for a header announcement).

Note: This release requires a full chain replay due to the introduction of versioned ledger table encoding.

Breaking changes

  • Chain replay required: Versioned ledger table encoding (TablesCodecVersion1) alters on-disk serialisation for LedgerState and ExtLedgerState. Upgrading from any prior release requires a full chain replay.
  • cardano-api: submitTxToNodeLocal now returns TxSubmitResult instead of SubmitResult TxValidationErrorInCardanoMode. Network-level errors no longer escape as exceptions; see the API changelog for details.

Known issues

  • There is a known issue with increased memory use when testing with large numbers of DReps
  • The new behindFirewall field for local root peers is not reflected in the log file (IntersectMBO/ouroboros-network#5343).

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 (M1, M2, M3, M4 or M5) processor
  • 24GB of RAM when running with the InMemory backend, 8GB when running with the OnDisk backend
  • 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.7
  • 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

Node
  • Configuration of LedgerDB: V1InMemory variant removed, V2LSM variant added (with optional FilePath).

  • New config fields: TxSubmissionLogicVersion (default V1) and TxSubmissionInitDelay parsed from node config JSON, forwarded to RunNodeArgs.

  • Node feature flags added to RunNodeArgs, for now always initialised as rnFeatureFlags = mempty.

  • New KESSource type: KESKeyFilePath FilePath | KESAgentSocketPath FilePath.

  • ProtocolFilepaths.shelleyKESFile replaced by shelleyKESSource :: Maybe KESSource.

  • CLI offers --shelley-kes-key or --shelley-kes-agent-socket.

Tracing
  • The trace-dispatcher package was moved to a standalone repository, see https://github.com/IntersectMBO/hermod-tracing.
  • All P2P tracing orphan instances (TracePeerSelection, DebugPeerSelection, PeerSelectionCounters, ConnectionManagerTrace,
    InboundGovernorTrace, ServerTrace, etc.) moved upstream into ouroboros-network:tracing and cardano-diffusion:tracing.
  • dtDebugPeerSelectionInitiatorTracer and dtDebugPeerSelectionInitiatorResponderTracer merged into a single dtDebugPeerSelectionTracer.
  • TraceTxSubmissionCollected now carries [txid] instead of Int; new constructors TraceTxInboundAddedToMempool, TraceTxInboundRejectedFromMempool, TraceTxInboundError, TraceTxInboundDecision.
  • The types related to the network topology (NetworkTopology/LocalRootPeersGroup/PublicRootPeers/RootConfig) were moved to cardano-diffusion, see CardanoNetworkTopology from Cardano.Network.Diffusion.Topology.
  • Dijkstra era stubs: LogFormatting/ToObject instances added for Dijkstra ledger predicate failures (all error "Dijkstra era is not active yet").
Consensus
  • Peras Protocol Integration: Major foundational work was added for the Peras protocol, including the introduction of PerasCertDB, Peras voting APIs, and a shift in chain selection to prioritize Peras weight over chain length when enabled.
  • LedgerDB V2 and LSM-Trees: The new LedgerDB V2 was implemented featuring an LSM-trees backend (capable of tracking table sizes) and the extraction of backend storage logic into dedicated sub-libraries (ouroboros-consensus-lsm, ouroboros-consensus-lmdb).
  • Mempool Timeouts and Tracking: The mempool was significantly upgraded to support execution timeouts (MempoolTimeoutConfig) and track how much monotonic clock time transactions take to validate (DiffTimeMeasure).
  • Enhanced Chain Selection Tracing: Chain selection was refactored to explicitly carry and emit a ReasonForSwitch (e.g., length, weight, or tiebreaker) in traces like AddedToCurrentChain and SwitchedToAFork.
  • Networking and Protocol Updates: Node-to-Client protocols were bumped to NodeToClientV_23, introducing queries like GetLedgerPeerSnapshot and adding crucial size limits for keep-alive servers and peer-sharing clients.
  • Transaction and Serialization Changes: The codebase adapted to Ledger's nested transaction levels and changes in ApplyTxError serialization. It also introduced txWireSize to accurately measure CBOR-encoded transaction sizes over the network.
  • Critical Memory and Resource Fixes: Numerous patches addressed resource management, fixing double read lock acquisitions, leaky handles in LedgerDB, and ensuring proper garbage collection of ProtocolInfo and LedgerDbArgs.
  • Codebase Consolidation: Several previously standalone libraries (including diffusion, protocol, cardano, lsm, and lmdb) were absorbed directly into the ouroboros-consensus package to streamline the architecture.
  • Ledger Table Versioning: Ledger tables encoding was versioned (TablesCodecVersion1), altering on-disk serialization for LedgerState and ExtLedgerState, which will require a chain replay.
Ledger
  • Finished implementation of all features needed for the upcoming intra-era hard fork into protocol version 11: #5015:
    • Major Protocol Version proposal restriction: #5595
    • Improve semantics of GetStakeSnapshots ledger state query: #5581
    • Add a new predicate failure for non-matching withdrawals: #4640
    • Improve IncompleteWithdrawals failure by adding current balance: #5452
  • Block header CDDL spec fixes: #5518
  • Various performance improvements and bug fixes.
  • Plethora of features for Dijkstra era, which as a whole is not functional yet.
  • Transaction CDDL specification for Dijkstra era is mostly complete, yet is not fully tested.
Network
  • Local root peers behind a firewall. In the topology file one can
    specify a boolean field behindFirewall (the default is
    false). With false the node will try to create connection in order
    to use that peer as a downstream one, when set to true the node will only start using that peer as downstream when
    a connection from that peer was accepted. This feature is intendent for the
    case where some local root peers are behind a firewall, and thus cannot be
    connected directly. Now, instead of peer selection trying to connect and
    failing until a connection is accepted, peer selection will only promote the
    peer when it can succeed. IntersectMBO/ouroboros-network#4381
  • Chain-Sync won't timeout for trustable local root peers in the StNext StMustReply state (e.g. awaiting for next header announcment).
    IntersectMBO/ouroboros-network#5250
  • Chain-Sync timeouts in the StNext StMustReply were bumped to between 601
    and 911 seconds (~5-8 minutes).
  • Connection manager propagates disconnection reasons and exceptions to peer selection and
    inbound governor. This gives a chance to log & handle the exception in the
    right context.
  • More robust Wireshark dissector plugin
  • More robust churn: enforce a minimum number of churned established and known
    peers based on the number of replaced active and established peers. IntersectMBO/ouroboros-network#5240
  • Updates to the ledger peer snapshot.
  • Added NodeToClientV_23: added GetDRepsDelegations query, ledger peer snapshot
    CBOR encoding changed.
  • Bug fixes in peer selection (IntersectMBO/ouroboros-network#5209,
    intersect/ouroboros-network#5330)
  • Fixed trailing bytes handling by the multiplexer (intersect/ouroboros-network#5254)

Full list of PRs / issues included in this release see ouroboros-network release board for: 1.1.0.0, 1.0.0.0 and 0.24.0.0 releases.

CLI
  • Print friendly stderr message when query future-pparams returns null (feature) PR 1344
  • Removed requirement of "current treasury value" in transactions (compatible) PR 1322
  • Fix supplemental datum propagation in transaction outputs: Previously, supplemental datums (datum hashes referenced in transaction outputs) were not being propagated into the transaction body. This meant that when a transaction output included a datum hash, the corresponding datum was not included in the transaction's supplemental data map, causing validation failures for consumers expecting to resolve those datum hashes. (bugfix) PR 1341
  • Modify readAnyScript to handle text envelope formatted simple scripts (bugfix) PR 1333
API
  • Integrate new Ledger and Consensus packages for Node 10.7. (breaking) PR 1050
  • Fix mapScriptWitnessesCertificates silently dropping key-witnessed certs (e.g. shelley stake registration certificates) when rebuilding the transaction body during fee balancing. The function previously iterated only over script-witnessed certs, so certs stored with a Nothing witness were omitted from the balanced transaction. (bugfix) PR 1136
  • submitTxToNodeLocal now returns TxSubmitResult instead of SubmitResult TxValidationErrorInCardanoMode. TxSubmitResult has three constructors: TxSubmitSuccess, TxSubmitFail TxValidationErrorInCardanoMode, and TxSubmitError SomeException, so network-level errors no longer escape as exceptions. (breaking) PR 1126
  • Fix RFC 7049 canonical CBOR map key ordering and add property test (bugfix, test) PR 1075
  • Export fromLedgerTxValidityLowerBound and fromLedgerTxValidityUpperBound. (compatible) PR 1118
  • Introduce recursive minimum fee calculation (feature) PR 1106
  • Fix supplemental datum handling in experimental API. toLedgerDatum now correctly produces DatumHash for supplemental datums instead of inline Datum representation. getDatums uses new explicit txSupplementalDatums field instead of extracting from outputs, which incorrectly included inline datums in TxDats. (bugfix) PR 1112
Submit API
  • The tx submission result type changed from Net.Tx.SubmitSuccess/SubmitFail
    (ouroboros-network) to Cardano.Api.TxSubmitSuccess/TxSubmitFail/TxSubmitError --- the
    submit API now lives in cardano-api directly.
  • A new TxSubmitError case is handled, representing connection-level errors (as
    opposed to validation errors).
  • Added TxCmdTxSubmitConnectionError !Text to TxCmdError to surface connection
    failures from the new Cardano.Api.TxSubmitError constructor.
RPC This is a very first release of cardano-rpc. One should treat it as **EXPERIMENTAL**. The configuration and non-UTXO RPC endpoints are not stable.
  • Upgrade proto definitions to utxorpc v1 beta utxorpc/spec#183
    (feature, breaking)
    PR 1080

  • gRPC: Add tracing datatypes
    (compatible)
    PR 1079

  • gRPC: Add TxOut CBOR representation to readUtxos method, fix address serialisation in TxOutput.
    (bugfix)
    PR 1021

  • Add decoded PlutusData and NativeScript in proto definition #947
    (feature, compatible)
    PR 947

  • Add getProtocolParamsJson gRPC endpoint
    (feature, compatible)
    PR 919

  • Add UTxO RPC: submitTx method
    (feature)
    PR 905

  • Add readUtxos UTxO RPC query
    (feature)
    PR 889

  • Add UTxO RPC protocol parameters query
    (feature)
    PR 888

Submit API
Plutus

Detailed Changelogs

Individual packages' changelogs Package changelogs
Package Version Changelog
acts-generic 0.1.1.0 CHANGELOG.md
byron-spec-chain 1.0.1.1 CHANGELOG.md
byron-spec-ledger 1.1.0.1 CHANGELOG.md
cardano-api 10.25.0.0 CHANGELOG.md
cardano-base 0.1.2.0 CHANGELOG.md
cardano-binary 1.8.0.0 CHANGELOG.md
cardano-cli 10.15.1.0 CHANGELOG.md
cardano-crypto-class 2.3.1.0 CHANGELOG.md
cardano-crypto-praos 2.2.2.0 CHANGELOG.md
cardano-crypto-wrapper 1.7.0.0 CHANGELOG.md
cardano-data 1.3.0.0 CHANGELOG.md
cardano-diffusion 1.0.0.0 CHANGELOG.md
cardano-ledger-allegra 1.9.0.0 CHANGELOG.md
cardano-ledger-alonzo 1.15.0.0 CHANGELOG.md
cardano-ledger-alonzo-test 1.4.0.1 CHANGELOG.md
cardano-ledger-api 1.13.0.0 CHANGELOG.md
cardano-ledger-babbage 1.13.0.0 CHANGELOG.md
cardano-ledger-binary 1.8.0.0 CHANGELOG.md
cardano-ledger-byron 1.3.0.0 CHANGELOG.md
cardano-ledger-conway 1.21.0.0 CHANGELOG.md
cardano-ledger-core 1.19.0.0 CHANGELOG.md
cardano-ledger-dijkstra 0.2.0.0 CHANGELOG.md
cardano-ledger-mary 1.10.0.0 CHANGELOG.md
cardano-ledger-shelley 1.18.0.0 CHANGELOG.md
cardano-ledger-shelley-ma-test 1.4.0.1 CHANGELOG.md
cardano-ledger-shelley-test 1.8.0.0 CHANGELOG.md
cardano-ping 0.10.2.0 CHANGELOG.md
cardano-protocol-tpraos 1.5.0.0 CHANGELOG.md
cardano-rpc 10.2.0.0 CHANGELOG.md
cardano-slotting 0.2.1.0 CHANGELOG.md
cardano-strict-containers 0.1.6.0 CHANGELOG.md
dmq-node 0.3.0.0 CHANGELOG.md
ekg-forward 1.2 CHANGELOG.md
fingertree-rm 1.0.0.4 CHANGELOG.md
kes-agent 1.2.0.0 CHANGELOG.md
kes-agent-crypto 1.1.0.0 CHANGELOG.md
network-mux 0.10.1.0 CHANGELOG.md
ouroboros-consensus 1.0.0.0 CHANGELOG.md
ouroboros-network 1.1.0.0 CHANGELOG.md
plutus-core 1.59.0.0 CHANGELOG.md
plutus-ledger-api 1.59.0.0 CHANGELOG.md
plutus-metatheory 1.59.0.0 CHANGELOG.md
plutus-tx 1.59.0.0 CHANGELOG.md
plutus-tx-plugin 1.59.0.0 CHANGELOG.md
quickcheck-monoids 0.1.1.0 CHANGELOG.md
small-steps 1.1.3.0 CHANGELOG.md
vector-map 1.2.0.0 CHANGELOG.md

Don't miss a new cardano-node release

NewReleases is sending notifications on new releases.