Cardano Node version 1.33.0 is a performance-focused release, bringing significant improvements in sync time, block propagation time, and reduced memory usage. Incremental stake aggregation and reward calculation allows much more uniform computation across the epoch, reducing the likelihood of spikes in CPU usage during the reward calculation period and so improving the consistency of block production.
In addition, more information is provided during node initialisation, and changes have been made to improve the handling of unexpected shutdowns when initialising the node. DNS support for IPv6 has been added. Tracing has been provided for Plutus scripts, making it easier to debug failure conditions.
Breaking Changes
With this version, the ledger state will need to be replayed from the genesis block, meaning that the initial synchronisation may be slow. Users should account for this when deploying the node.
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)
- 12GB of RAM
- 50GB of free storage
Platforms
- Linux 64-bit (Ubuntu 18.04 LTS, 20.04 LTS; Mint 19.3, 20; Debian 10.3)
- Windows 64-bit (8.1, 10, 11)
- MacOS 10.13, 10.14, 10.15, 11
Supported roles
Platform | Block Production | Relay | Client (Desktop) |
---|---|---|---|
Linux | ✔️ | ✔️ | ✔️ |
Windows | ❌ | ❌ | ✔️ |
MacOS | ❌ | ❌ | ✔️ |
Downloads
Documentation
- Cardano Node documentation
- Cardano CLI
- Internal API docs for ledger, consensus and network
- Compatibility matrix
Changelogs
Node
- Improvements to the
tx-generator
internal testing infrastructure. (#3425, #3426, #3427, #3436) - Disable idle GC in the default NixOS service. This matches options we have set by default in other deployments. (#3349)
- Support for using
TxIn
as a key in JSON maps. (#3438) - Allow configuring the number of connections to accept. (#3435)
Consensus
- Move the transitional praos protocol into its own package, in preparation for introducing a new version of the protocol in Babbage. (#3513)
- Improve logging during node startup/chainDB initialisation. (#3505, #3506, #3518)
- Various changes to the initialisation of the ChainDB. The intent of these changes is to handle the situation when the node receives a shutdown instruction during initialisation. Before these changes, the node would either fail to respond to the signal until initialisation was complete, or a supervisor process would notice this and send SIGKILL, resulting in an unclean shutdown. Following these changes, the node should gracefully handle signals sent during DB initialisation. (#3452, #3514)
- Various improvements to the
db-analyser
tool. (#3471) - Expose an additional query for information relevant to reward processing. This offers current-epoch information to help clients make delegation preferences. (#3423)
Ledger
- Preparatory work factoring out the transitional Praos protocol in preparation for the introduction of a new protocol in the Babbage release. (#2524)
- Provide more information in the case of extraneous script witnesses being provided. (#2527)
- Significant work to improve memory usage for the in-memory ledger state. (#2520, #2530, #2534, #2540, #2552, #2553, #2557, #2567, #2573, #2577, #2580, #2583)
- Add a new tool to benchmark the ledger state. (#2532, #2535)
- Remove the amount of state stored in the reward pulser. This change will require a rebuild of the ledger state (e.g. replay from genesis). (#2533)
- Add an additional check when evaluating an (unsubmitted) transaction to determine the amount of ExUnits to specify. (#2522)
- Distinguish between rewards earned as a pool member and as a pool operator in the ledger events. (#2536, #2549)
- From protocol version 7, we no longer exclude from rewards those who are not registered at the start of the reward calculation. Those not registered when the rewards are paid out are still filtered, naturally. (#2569)
- Add a stricter function for decoding addresses, which disallows extra bytes. These functions are provided for use by downstream tools. (#2556)
- The reward calculation (which adds significant work to the middle portion of the epoch) is now computed incrementally by stake credential. Previously this was done by stake pool, but this had a couple of issues: it didn't allow the computation to be spread across the full range of slots, and it was significantly non-uniform: some stake pools are much bigger than others. This new computation should be more uniform and saturate the full slot range, resulting in more predictable and consistent resource usage. (#2542, #2585)
- Add benchmarking to CI. (#2561, #2568)
- Add tracing to Plutus script execution. (#2554)
- Add the first draft of the Babbage formal spec. (#2559)
- Document the construction of the script integrity hash. (#2576)
- Compute the stake aggregation incrementally. Previously this was computed when a snapshot was taken, which resulted in a CPU spike. It is now continually maintained as transactions are processed. (#2538)
Network
- Don't block when unregistering expired connections. (#3526)
- Fix the rendering of cardano-ping messages. (#3529)
- Various improvements to the pruning policy. (#3495, #3499)
- Consider speed of block provision (in addition to speed of header provision) when ranking peers. (#3500)
- DNS support for IPv6. (#3489)
Cardano-cli
Cardano-api
Deprecated features
Fixed issues
Sign off
Role | Approval |
---|---|
Technical Lead | ✔️ |
QA Engineer | ✔️ |
Ops | ✔️ |
Release Manager | ✔️ |