Skip to content

Cardano Node 1.26.1

Compare
Choose a tag to compare
@LaurenceIO LaurenceIO released this 07 Apr 08:26
· 5164 commits to master since this release

This release includes significant performance improvements and numerous other minor improvements and feature additions. In particular the reward calculation pause is eliminated, and the CPU load for relays handling lots of incoming transactions should be significantly reduced.
The focus of the current development work is on completing and integrating support for the Alonzo era. This release includes many of the internal changes but does not yet include support for the new era.

  • Note that this release will automatically perform a DB migration on the first startup after the update. The migration should take 10-20 minutes however it can take up to 60 minutes depending on your CPU. If this is a problem for your use, then see below for steps to mitigate this.
  • The format of the cardano-cli query tip query has changed - see release notes for the CLI below.
  • The cardano-cli query ledger-state query now produces a binary file if --out-file is specified. If required (e.g. for use in cncli), JSON output can be obtained by omitting this parameter, and redirecting the standard output to a file

Steps to mitigate downtime for this update

This release will automatically perform a DB migration on the first startup after the update. The migration should take 10-20 minutes however it can take up to 60 minutes depending on your CPU.

To mitigate downtime:

  1. Update a non-production mainnet node
  2. Take a DB snapshot
  3. Stop production node
  4. Backup and replace DB with snapshot
  5. Restart production node on 1.26.1
  6. Repeat steps 3-5 for all production nodes

See #311 for example scripts of how this can be done.

Node changes

  • Expanded documentation for Windows builds (#1993, #2231)
  • Other expanded and updated documentation (#2308, #2334, #2342, #2347, #2429, #2431, #2432, #2434, #2435, #2442)
  • Simplified configuration for working with RTView (#2303)
  • Prototype reporting metrics to EKG directly, rather than via the switchboard. (#2355)
  • Multiple improvements to the configuration when running cardano-node as a Nixos service. (#2374, #2384, #2389, #2404, #2418, #2424, #2436, #2443, #2483)
  • KES metrics are now traced even when the KES key has expired. This should make it easier for users to detect whether they have an expired KES key. (#2373)
  • Add a metric to display the number of forged blocks "lost" due to switching to an alternative fork. (#2321)
  • Set a flag which enables early return of memory to the OS. This should help in accurate reporting of memory consumption. (#2493, #2495)
  • Disable the "uncoupled blocks" metric. This was shown in profiling to have an unfortunately large overhead. This reverts the change introduced in #2321. (#2510)

Consensus changes

  • Add some additional tracing infrastructure (#2874)
  • Continued work on the technical report of the consensus and storate layer (#2939), (#2943)
  • Add the ability to query a node to determine whether it issued a block. This supports the "blocks lost due to switching" metric mentioned in the node changes above. (#2930)

Ledger changes

  • Update the calculation of rewards to be done progressively, spreading the additional CPU load across a number of days. This should resolve the slowdown 4k/f slots into the epoch which has been seen by a number of node operators. (#2142), (#2183)
  • Changed the aggregation of rewards, such that we store more data about reward provenance. This makes it easier for downstream applications to show e.g. where rewards come from. (#2117), (#2123), (#2164)
  • Updates to the Alonzo formal specification (#2108), (#2189), (#2194)
  • A lot of work on implementing the upcoming Alonzo era (#2124), (#2127), (#2148), (#2161), (#2165), (#2166), (#2169), (#2170), (#2176), (#2185), (#2190)
  • Add the ability for MIR certificates to transfer money from the reserves to/from the treasury. This will be used to support Catalyst funding. (#2146)
  • Additional properties added to the Mary/Allegra formal specification (#2178)

Network changes

  • Various changes to support P2P (#2526), (#2911), (#2921)
  • The LocalStQuery and ChainSync protocols now allow for additional effects to take place once the client has acquired a connection. This should allow for additional pipelining in clients such as the wallet. (#2896)
  • Various tracing improvements:
    • Trace termination of mini-protocols (#2924)
    • Additional tracing of transaction submission (#2924)
  • Allow configuring the timeouts for protocol handshakes. This should serve to mitigate a potential attack where handshakes are begun but not concluded, occupying resources on the node. (#2990)
  • Add a tracer for the delay between when a block should have been forged and when we're ready to adopt it. (#2995)

Cardano-cli changes

  • Add three new queries to the CLI, exposing functionality already present in the API:
    • Protocol parameters
    • Stake distribution
    • Individual stake addresses (#2275, #2290)
  • Add the ability to calculate the minimum deposit needed for a transaction to the CLI, given a value. (#2325)
  • Add cardano-cli transaction view, which allows for pretty-printing details about a serialised transaction. (#2348)
  • When constructing MIR certificates, the CLI now takes stake addresses rather than stake certificates. These are strictly more general and can be deduced from the certificates.
  • Make the Mary era the default era in the CLI (#2415)
  • Migrate the cardano-submit-api tool from cardano-rest. (#2370)
  • The 'tip' query now additionally returns the epoch at the tip. Some of the names of fields returned have changed and will need to be modified accordingly:
    • "blockNo" is now "block"
    • "slotNo" is now "slot"
    • "headerHash" is now "hash"
      (#2440)
  • It's no longer possible to specify the era when making a CLI query, and it will default to the current era. (#2470)
  • The 'ledger-state' query now outputs its result as a binary file if '--out-file' is specified

Cardano-api changes

  • When querying the NodeLocalState, make the query point optional, and use the chain tip when not specified. (#2241)
  • The cardano-submit-api now takes transactions encoded as CBOR rather than JSON. This reverts a change to existing behaviour for backwards compatibility. (#2491, #2512)
  • Remove a backwards-compatibility workaround related to the optional query point (#2241 above) when querying the NodeLocalState. This had resulted in spurious notifications of disconnection in the logs. Note that as a consequence of this, instances of the CLI and other tools using the 1.26.1 API will fail to query node state from older versions of the node. (#2540)

Deprecated Features

  • Removed code pertaining to the old IPC API (#2319)
  • Support for GHC 8.6.5 has been dropped. (#2507)

Fixed Issues

  • Fix the rendering of Byron-era TxOuts to be consistent with the rendering for Shelley-era addresses. (#2472)
  • Fixed a performance regression in the Allegra and Mary eras. This resulted in node slowdown when validating failed transactions. (#2144)
  • Fixed a subtle bug in reward computations, where the wrong amount of money would be added to the treasury. (#2136)
  • Fix RTS options, which got accidentally corrupted in the previous release. (#2511)
  • Update the iohk-monitoring framework to fix a file descriptor leak. (#2518)
  • Fix an unevalutated thunk error in reward computation. (#2183)

Known Issues

Documentation

Platforms

  • Linux 64-bit (Ubuntu 18.04 LTS, 20.04 LTS; Mint 19.3, 20; Debian 10.3)
  • Windows 64-bit (8.1, 10)
  • MacOS 10.13, 10.14, 10.15
  • Docker image

Supported roles

Platform Block Production Relay Client (Desktop)
Linux ✔️ ✔️ ✔️
Windows ✔️
MacOS ✔️

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)
  • 8GB of RAM
  • 10GB of free storage (20GB for a stake pool)

Sign off

Role Approval
Technical Lead ✔️
QA Engineer ✔️
Ops ✔️
Release Manager ✔️