Releases: IntersectMBO/cardano-node
Cardano Node 1.35.3
Node 1.35.3 fixes some important issues with previous versions of the node and provides some CLI enhancements. The node provides full Vasil era capabilities.
Node 1.35.3 adds important functionality that will enable the use of new Plutus capabilities
following the Vasil hard fork, including node and CLI support for:
- Reference Inputs (CIP 31)
- Inline Datums (CIP 32)
- Reference Scripts (CIP 33)
- Collateral Output (Draft CIP 40)
- Plutus v2 primitives and the associated new cost model
It also includes significant improvements to the logging/monitoring, and networking codebases, as well as significant memory and time performance improvements, including the first implementation of diffusion pipelining, and reduced VRF checks, as well as several improvements to the ledger.
Please note that this version contains breaking changes, as listed below, specifically with respect to operational certificates
on the CLI. Stake pool operators may need to update their management scripts to accommodate this change.
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.
- Restricted opcert issue number increment, as of Babbage. Previously op cert issue numbers could be anything, provided it was larger than previously used numbers. Now the op cert counter must be exactly one more than the previously used op cert.
- The decentralisation ('d') updatable protocol parameter has been removed, as of Babbage. It will no longer be possible to change this from its current setting (fully decentralised).
- Bugfix: transaction validity intervals will actually be limited, as of Babbage.
Known Issues
-
Shelley era Tx body in CDDL format is not supported by some CLI commands (#3688)
-
Please see here for known issues.
None of these issues are considered to be blockers for the mainnet hard fork;
they will be addressed in future releases.
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)
- 16GB of RAM
- 100GB of free storage (150GB recommended for future growth)
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
- Docker image
- Hydra binaries:
- Configuration files
Documentation
- Cardano Node documentation
- Cardano CLI
- Internal API docs for ledger, consensus and network
- Compatibility matrix
Changelogs
Node
- RTS workaround converting SIGTERM into SIGINT (#3641)
- Install a dummy SIGHUP handler for non p2p mode (#3896)
- Add --shutdown-on-slot-synced test and ensure ExitSuccess (#3670)
- cardano-node: implement --shutdown-on-block-synced (#3932)
- Update dependencies and pins. (#3700)
- Propagate protocol in block type (#3818)
- Create VRF signing key file with correct permissions (#1948)
- Fix for eliding of the ChainDB tracer (#4038)
- Tracing infra updates:
- Configuration structure rework, for better UX: (#3867)
- Rework implementation to eliminate prototypes from trace definitions (#3731)
- Fix tracing config to allow selection of the new tracing system (#3655)
- Register GC metrics. (#3858)
- Metrics are no longer impacted by severities and frequency limits (#3876)
- Porting ekg-direct metrics to new-tracing (#3873)
- Node state data point extensions and fixes: (#3854, #3656)
- Old peers tracing was erroneously called in new tracing (#3880)
- Remove unused constraints from TraceConstraints (#3822)
- Properly init trace forwarding when needed. (#3634)
- cardano-tracer:
- Format fixes for forwarded traces: (#3640, #3654, #3660, #3671).
- Test fixes: (#3714)
- Remove symlink, fix logs cut off. (#3930)
- Fix bug with empty line (#3962)
- RTView, a web performance dashboard, as part of cardano-tracer (#3852)
- RTView: CPU usage (GC + App) as pct, https by default, errors export (#3934)
- Documentation updates;
- Various workbench, build, testing and benchmarking infrastructure improvements. (#3638, #3643, #3705, #3789, #3812, #3824, #3941, #3851)
- Bump block header protocol version (#4260, #4211)
- Update dependencies (#4242, #4220, #4146)
Consensus
- The obsolete node check in the new 'Praos' protocol was not performing the check that was intended. It is supposed to check that the current protocol version is no greater than the max major protocol version. It was instead checking that the max major protocol version was not greater than the protocol version listed in the block header (which is currently not supposed to have any semantic meaning, and is used to manually check the readiness of the network for a hard fork). Note that this mistake is only in the Praos protocol, not in TPraos. The consequence of this incorrect check is that nodes will not properly halt after a hard fork when they do not have the required software for the hard fork. (#3891)
- Block diffusion pipelining (#3688, #3742, #3752, #3688)
- Moving from two VRF checks to one, as of Babbage (#3595)
- Restricted opcert issue number increment, as of Babbage (#3595)
- New function getOpCertCounters (#3781)
- Bugfix: transaction validity intervals will actually be limited, as of Babbage (#3754)
- Simplification: Babbage will run proper Praos protocol instead of Transitional Praos, since d will remain at 0 (#3595)
- protocol: add
PraosProtocolSupportsNode
class (#3758) - Provide an
EpochInfo
that can fail to ledger. (#3770) - Add
COMPLETE
pragma forFallingEdge
pattern synonym (#3766) - Simplification: remove stale handshake versions (#3696, #3699)
Cardano Node 1.34.1
Node version 1.34.1 is a minor release that fixes two issues:
- the tracer configuration settings were not respected, meaning that tracing was always enabled;
- the node start time and basic information (version etc) were not recorded in EKG logs.
Known Issues
To avoid increased synchronisation times, we recommended that Windows users DO NOT upgrade to this node version. We recommend instead that they continue to run node 1.33.0. Future releases will address this issue which is specific to Windows.
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
- Docker image
- Hydra binaries
⚠️ Please note that due to an issue with syncing, Windows users should not upgrade to this release - Configuration files
Documentation
- Cardano Node documentation
- Cardano CLI
- Internal API docs for ledger, consensus and network
- Compatibility matrix
Changelogs
Sign off
Role | Approval |
---|---|
Technical Lead | ✔️ |
QA Engineer | ✔️ |
Ops | ✔️ |
Release Manager | ✔️ |
Cardano Node 1.34.0
Node version 1.34 brings a number of important new features that will benefit stake pool operators and other users, including
- a new tracing mechanism
- a new command to query the local mempool
- a new command to provide stake pool operators with their leadership schedule
- a new command to check the validity of stake pool operational certificates (including verifying the KES period)
- support for CBOR encoding in transaction build commands,
- an option to output transaction bodies in ledger-compliant CDDL format,
- an option to calculate the cost of executing a Plutus script,
- incremental transaction signing.
It also includes a number of stability improvements, plus improvements to the performance of Plutus scripts.
Known Issues
To avoid increased synchronisation times, we recommended that Windows users DO NOT upgrade to node version 1.34.0. We recommend instead that they continue to run node 1.33.0. Future releases will address this issue which is specific to Windows.
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
- Docker image
- Hydra binaries
⚠️ Please note that due to an issue with syncing, Windows users should not upgrade to this release - Configuration files
Documentation
- Cardano Node documentation
- Cardano CLI
- Internal API docs for ledger, consensus and network
- Compatibility matrix
Changelogs
Node
- Separate the logic for shutdown via IPC and shutdown on reaching a specified slot. (#3320, #3508)
- Tests for certifying and withdrawing Plutus scripts. (#3318)
- Various documentation updates. (#2875, #2884, #2839, #2904, #3476, #3482, #3486, #3500, #3502, #3542, #3553, #3573, #3603)
- Integrate the new tracing system in
cardano-node
. (#3450, #3496, #3497, #3498, #3570) - The stake credential history tool now additionally displays the protocol version. (#3409)
Consensus
Ledger
Network
- Add a new mini-protocol to query the local mempool. (#3404)
- Stop the MUX in case of miniprotocol timeout. This can happen if a peer is demoted to cold, and could result in lingering miniprotocols in an unknown state if the peer is again promoted. (#3575, #3580)
- Avoid ordering peers based upon peerid in block fetch. Ordering based on peerid would often result in all nodes choosing the same second, third choice peers etc. These are now based on a node-local random ordering. (#3535)
Cardano-cli
- Add a prettier rendering of update proposals. (#3208)
- Add support for CBOR-encoded blobs in the
transaction build
andtransaction build-raw
commands. (#3483) - Implement a
leadership-schedule
command. This can calculate a stake pool's leadership schedule for the current and following epoch. It requires access to the VRF signing key for that stake pool. (#3464, #3494)> cardano-cli query leadership-schedule \ --testnet-magic 42 \ --genesis example/shelley/genesis.json \ --stake-pool-id pool12t0y7agkqct89pf00eeytkvfjlquv76tjy27duannan9w63ckxv \ --vrf-signing-key-file example/node-pool1/shelley/vrf.skey --current SlotNo UTC Time -------------------------------------------------------- 4073 2021-12-29 17:26:54.998001755 UTC 4126 2021-12-29 17:27:00.298001755 UTC 4206 2021-12-29 17:27:08.298001755 UTC 4256 2021-12-29 17:27:13.298001755 UTC 4309 2021-12-29 17:27:18.598001755 UTC 4376 2021-12-29 17:27:25.298001755 UTC 4423 2021-12-29 17:27:29.998001755 UTC 4433 2021-12-29 17:27:30.998001755 UTC
- The CLI now supports outputting transaction bodies in ledger-compliant CDDL in the
transaction build
andtransaction build-raw
commands. This is specified by using the--cddl-format
flag. (#3505) - Implement a
kes-period-info
command in the CLI. This checks that your operational certificate is correct. It checks:- The counters match what is in the node's protocol state
- The KES period in the operational certificate is correct (based on the current slot). (#3459, #3572, #3599)
> cardano-cli query kes-period-info --testnet-magic 42 \ --op-cert-file example/node-pool1/shelley/node.cert ✓ The operational certificate counter agrees with the node protocol state counter ✓ Operational certificate's kes period is within the correct KES period interval { "qKesNodeStateOperationalCertificateNumber": 6, "qKesCurrentKesPeriod": 404, "qKesOnDiskOperationalCertificateNumber": 6, "qKesRemainingSlotsInKesPeriod": 3760228, "qKesMaxKESEvolutions": 62, "qKesKesKeyExpiry": "2022-03-20T21:44:51Z", "qKesEndKesInterval": 434, "qKesStartKesInterval": 372, "qKesSlotsPerKesPeriod": 129600 }
- The CLI now displays collateral inputs in a nicer fashion. (#3463)
- The
transaction sign
command now allows for incremental signing by providing an already signed transaction via--tx-file
. This allows more easily adding multiple signatures to a transaction. (#3549) - The
transaction build
command now supports an option (--calculate-plutus-script-cost
) to compute the cost for included scripts. (#3589)cardano-cli transaction build \ --alonzo-era \ --cardano-mode \ --testnet-magic "$TESTNET_MAGIC" \ --change-address "$utxoaddr" \ --tx-in "$plutusutxotxin" \ --tx-in-collateral "$txinCollateral" \ --tx-out "$dummyaddress+10000000" \ --tx-in-script-file "$plutusscriptinuse" \ --tx-in-datum-file "$datumfilepath" \ --protocol-params-file "$WORK/pparams.json" \ --tx-in-redeemer-file "$redeemerfilepath" \ --calculate-plutus-script-cost "$WORK/create-datum-output.scriptcost" > cat $WORK/create-datum-output.scriptcost [ { "executionUnits": { "memory": 1700, "steps": 476468 }, "lovelaceCost": 133, "scriptHash": "67f33146617a5e61936081db3b2117cbf59bd2123748f58ac9678656" } ]
Cardano-api
- Expose
lovelaceToTxOutValue
. (#3381) - Implement two functions:
currentEpochEligibleLeadershipSlots
andnextEpochEligibleLeadershipSlots
to get the leadership slots for the current/next epoch respectively. (#3464, #3494) - Add a
capi
library to support using the cardano node as a C library in other software. (#3501) fromShelleyAddr
now takes an explicitShelleyBasedEra
parameter to determine the era. The previous behaviour (with an implicitIsShelleyBasedEra
constraint) can be obtained withfromShelleyAddrIsSbe
. (#2253, #3606)
Plutus
- Plutus script performance improvements
Deprecated features
Fixed issues
Sign off
Role | Approval |
---|---|
Technical Lead | ✔️ |
QA Engineer | ✔️ |
Ops | ✔️ |
Release Manager | ✔️ |
Cardano Node 1.33.0
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
Cardano Node 1.32.1
Cardano Node version 1.32.1 introduces a number of improvements and enhancements to improve the usability of the Cardano node. Native asset name rendering has been changed in order to eliminate problems caused by non-printing characters, CLI commands now default to the Alonzo era, and default values have been added to simplify startup where a genesis file is not supplied (eg in test or standalone settings). Additional logging is available during node startup, enabling progress to be tracked more easily, and statistics counting has been disabled in order to reduce noise. Limits have been added to mini protocols. There is better rendering of some trace messages.
Documentation has also been improved in various areas.
This version also adds experimental support for peer-to-peer network. It is unverified and unsupported, and hence not recommended to be enabled in production.
Breaking Changes
- Asset Name Format Change. Note that asset names are now output in hex format when querying UTxO entries. Any user who is relying on asset names to be represented as ASCII text will need to change their tooling. As a temporary transitional solution, it is possible to use Cardano-cli version 1.31 with node version 1.32.1 if desired, or to continue to use node version 1.31. This will not be possible following the next hard fork (which is expected in early 2022).
- CLI default era change. CLI commands now default to the Alonzo era (previously Mary era). Tooling may need to be revised if it was relying on the default.
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
- 30GB 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
- Miscellaneous documentation updates. (#3138, #3286, #3323, #3342, #3343, #3348)
- Update a number of scripts to use the $NETWORK_MAGIC environment variable. (#3148)
- Integrate p2p networking functionality. (#3363)
- Add additional logging to node startup. (#3380)
- Note that the existing "nodeStartTime" counter still exists, but will ultimately be deprecated. The startup time is now logged in the following format:
{ "thread": "5", "sev": "Notice", "data": { "startupTime": "1638866965" }, "loc": null, "env": "1.31.0:be123", "msg": "", "app": [], "host": "waldorf", "at": "2021-12-07T08:49:24.22Z", "ns": [ "cardano.node.nodeconfig" ], "pid": "33952" }
- Block delay counters are now not collected until the node has finished starting. Statistics collected during node startup would only add noise to the delay CDF. (#3386)
Consensus
Ledger
Network
- Early, unverified and unsupported p2p networking capabilities. Do NOT use in production. (#3467)
Cardano-cli
Cardano-api
- Asset names are now rendered in a more consistent fashion in JSON output. Previously names which happened to be valid ASCII were rendered as such, and ones which were not resulted in unprintable characters. Now all names are rendered as hex. Future clients may choose to additionally render ASCII names if plausible to do so. (#3211)
- Expose ledger events via the ledger state API. (#3374)
Deprecated features
Fixed issues
- Fix the rendering of
RemoteConnectionId
in trace messages. (#3199)
Sign off
Role | Approval |
---|---|
Technical Lead | ✔️ |
QA Engineer | ✔️ |
Ops | ✔️ |
Release Manager | ✔️ |
Cardano Node 1.31.0
Cardano node version 1.31.0 introduces a number of new features and provides performance improvements, including
reducing default logging information, and optimising memory and time behaviour. It also provides support for improved rewards logging in db-sync, includes a new CLI command to query stake pools, enhances the transaction build
CLI command, fixes an issue where connections were dropped when using query tip
, and provides various other CLI enhancements. It allows signatures to be specified when spending from pre-Plutus time-lock/multi-signature scripts, improves error logging for Plutus scripts, adds new logging modes, allows the size of the mempool to be configured, provides support for multiple versions of Plutus, and improves networking behaviour and robustness.
It is recommended that all users upgrade to this new version.
Breaking Changes
- Update min utxo calculation cli command #3181
calculate-min-req-utxo
requires a transaction output (TxOut era
) instead of aValue
in order to calculate the min required UTxO in the Alonzo era. This is required in the Alonzo era, and the change is made everywhere for consistency.
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
- 20GB 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
- Additional verification for the configuration files:
- Various documentation updates. (#3060, #3120, #3142, #3191, #3243, #3265, #3284)
- Introduce the
trace-dispatcher
library. This is built to replace the existingiohk-monitoring-framework
. (#3073) - Add an example using a Plutus script as a stake credential. (#3162)
- Don't inline a call to
maybeToStrictMaybe
during translation ofProtocolParameters
. This turns out to trigger a GHC bug, resulting in extremely high compilation time. (#3275) - Introduce a YAML version of the mainnet configuration file, which can and has been commented to explain the various options. (#3269)
- Add various additional metrics:
- Add the ability to configure the mempool capacity override. This allows an individual node operator to alter the maximum size of their mempool along various axes (size, execution units). (#3273)
- Fix the verbosity of some log messages, which was causing excess detail in the node logs. (#3046)
Consensus
- Improved documentation. (#2957, #3279)
- Removed strictness annotations in traces. (#3244)
- Exposing the ledger event logger. (#3292)
- Supporting Alonzo protocol version. (#3347)
- Overhauling the db analyser tool. This will allow the ledger team to run micro benchmarks without noise from other layers (like networking). (#3337)
- Add additional capabilities in the db-analyser. (#3376, #3379, #3397, #3400, #3414, #3418)
- Add a new version (10) of the node to client protocol, with two new queries:
GetChainBlockNo
andGetChainPoint
. (#3346) - Expose the ability to override the mempool capacity. (#3413)
Ledger
- Additions and corrections in the event logger. (#2441, #2487)
- Memory optimisations. (#2442)
- Updates to the Alonzo formal specification. (#2418, #2448)
- Additional exports needed for db-sync integration. (#2450)
- Moved protocol related types to a new module,
cardano-protocol-tpraos
. (#2445) - Preparatory work for storing the ledger state on disk. (#2449)
- Updated the CHAINHEAD rule in the Shelley formal spec. (#2313)
- Providing more information about the reward calculation inside of the reward provenance. (#2433)
- Add a
RetiredPools
event, which gives details about retiring pools and the refund (or not) of the pool deposit. (#2487, #2495) - Fix the CDDL specification for transactions. (#2456, #2507, #2523)
- Infrastructure and documentation improvements. (#2499, #2500, #2508)
- Various work factoring out the definition of the transitional Praos protocol and isolating it from the ledger. This is done in anticipation of introducing a new version of the consensus protocol in the Babbage release. (#2491, #2505, #2510, #2516, #2518)
- Document the minimum value computation for Alonzo. (#2486)
- Various changes to compactify the in-memory representation of the Cardano ledger state:
- Unpack the TxId in a transaction input. (#2501)
- Add support for V2 of Plutus (and for multiple Plutus versions in general). (#2485)
- Expose more information concerning reward computation in the API. This is intended to support revised display of pool rankings in the wallet. (#2511)
- Document both
Value
andTxInfo
in the spec. (#2383, #2494) - Fix the serialisation of Alonzo transaction witnesses in the case of multiple Plutus versions. (#2525, #2526)
- When incrementally computing the rewards, we now require this computation to complete by the first block within 2k/f slots of the epoch end. Previously it was required to complete by the end of the epoch. The motivation for this is to allow db-sync some time to insert the rewards distributed this epoch (which may be substantial) into its database before the end of the epoch. (#2521)
Network
...Cardano Node 1.30.1
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)
- 8GB of RAM
- 10GB of free storage (20GB for a stake pool)
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
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
Consensus
Ledger
- Correctly translate time for Plutus (from protocol version 6 onwards). (#2451)
- Adding changes to the libsodium bindings. Those include a functional fix that makes it safe to call the function that generates a public key from a private key concurrently. We only use those functions in the CLI, in a non-concurrent manner, but they are exposed in
cardano-api
. This fix ensures that custom code written againstcardano-api
behaves as expected when run in multiple threads. Furthermore, there are performance improvements that should have a positive impact on sync times. (#236)
Network
Cardano-cli
Cardano-api
Deprecated features
Fixed issues
Sign off
Role | Approval |
---|---|
Technical Lead | ✔️ |
QA Engineer | ✔️ |
Ops | ✔️ |
Release Manager | ✔️ |
Cardano Node 1.29.0
This release is an important update to the node that provides the functionality that is needed following the Alonzo hard fork.
All users, including stake pool operators, must upgrade to this version (or a later version) of the node.
The release includes features that will enable the use of the node in the Alonzo era, allowing the on-chain execution of Plutus scripts,
including extended CLI commands to support the construction of transactions that include Plutus scripts, datums and redeemers.
It incorporates several improvements, including a new transaction build
command that calculates transaction fees and Plutus script execution units, and a new version of the query tip
command that provides additional information, including node synchronisation progress. The transaction build
command requires a local instance of the node in order to check Plutus script validity and to provide information that is used by the fee calculation. The Shelley specification has also been updated with respect to rewards calculation.
Note that this release changes the log format of traces configured by TraceChainSyncHeaderServer
and TraceChainSyncClient
. See #2746 for more detail.
- When migrating to 1.29.0, SPOs need to make the following changes:
- Download
mainnet-alonzo-genesis.json
file - Update
mainnet-config.json
file to include the following 2 lines:
- Download
"AlonzoGenesisFile": "mainnet-alonzo-genesis.json",
"AlonzoGenesisHash": "7e94a15f55d1e82d10f09203fa1d40f8eede58fd8066542cf6566008068ed874",
Node changes
- Introduce support for running an Alonzo node. (#2642, #2649, #2657, #2738, #2759)
- Add a separate genesis file for Alonzo. This must be present when forking to the Alonzo era. It provides initial configuration for new parameters required in Alonzo, such as cost models and pricing for Plutus scripts. (#2743, #2765)
- Update the genesis hash mismatch error for Alonzo. (#3003)
- Add
cardano-tx-generator
. This is a testing utility. (#2603) - Add additional capabilities to the tx generator:
- Introduce the trace-forward library, which is part of the replacement for the logging infrastructure. (#2960)
- Add the difference in chain length to the
AddedToCurrentChain
andSwitchedToAFork
traces. (#2678) - Additional block hashes added to
TraceBlockFetchServerSendBlock
,TraceForgedBlock
,CompletedBlockFetch
events. (#2710) - The various
ChainSync
server traces provide additional fields that help in debugging. Note that this entails a change to the log format. (#2746) - Various documentation updates. (#2681, #2689, #2713, #2837, #2857, #2860, #2870, #2874, #2914, #2933)
- Various build, testing and benchmarking infrastructure improvements. (#2672, #2676, #2682, #2705, #2719, #2722, #2730, #2737, #2748, #2766, #2768, #2777, #2796, #2812, #2813, #2826, #2827, #2831, #2832, #2833, #2849, #2855, #2861, #2864, #2865, #2866, #2879, #2887, #2888, #2894, #2900, #2902, #2909, #2912)
Consensus changes
- Introduce the Alonzo era. (#3131, #3138)
- Enable the Alzono era by default. (#3295)
- Additional testing in the Alonzo era. (#3191, #3210)
- Allow the EpochInfo provided to the ledger to fail. This is necessary when the ledger may be querying for time conversions outside of the forecast window. (#3098)
- The mempool now checks bounds on the capacity of execution units allowed when forging a new block. This is needed to avoid trying to create invalid blocks in Alonzo. (#3224)
- Allow the node to modify the maximum capacity of the mempool, in terms of various factors (size, execution units) on a per-node basis. (#3238, #3246, #3261, #3266)
- Update the mempool design for compatibility with Alonzo, which requires some additional logic to deal with 2-phase validation. (#3066)
- Update consensus documentation. (#3071, #3155, #3195)
- Updates to the io-sim testing infrastructure. (#3076, #3172, #3196, #3222)
- Node to client queries are now wrapped in a top-level versioned
Query
type, in preparation for adding new queries to the node. (#3106) - Support additional queries now exposed through the API/CLI. (#3220)
- Documentation updates. (#3269, #3273)
- Reject invalid scripts coming from the local wallet. This is a fallback measure which allows the node to protect the user from accidentally losing their collateral. (#3230)
Ledger changes
- Implementation of the Alonzo era. (#2260, #2264, #2265, #2270, #2273, #2274, #2277, #2283, #2287, #2294, #2295, #2296, #2299, #2302, #2303, #2304, #2305, #2306, #2317, #2320, #2322, #2324, #2328, #2329, #2335, #2342, #2345, #2355, #2359)
- Define the CDDL for Alonzo datatypes. (#2281, #2315, #2337, #2362)
- Testing work for the Alonzo era. (#2259, #2261, #2263, #2272, #2275, #2279, #2280, #2293, #2311, #2334, #2340, #2361)
- Additional testing for serialisation of types which are depended on by consensus. (#2298, #2323)
- Add the ability to query the UTxO by TxIn, which is now used by the CLI. (#2331)
- Update...
Cardano Node 1.27.0
Node version 1.27.0 provides important new functionality, including supporting new CLI commands that have been requested by stake pools, providing garbage collection metrics.
It includes the performance fixes for the epoch boundary calculation that were released in node version 1.26.2, plus a number of bug fixes and code improvements.
It also includes many fundamental changes that are needed to prepare for forthcoming feature releases (notably Plutus scripts in the Alonzo era).
Note that this release includes breaking changes to the API and CLI commands, and that compilation using GHC version 8.6.5 is no longer supported.
API refactoring to move scripts into the txbody (#2547)
There are some breaking changes:
- You must specify auxiliary scripts with --auxiliary-script-file instead of --script-file
- Scripts witnessing txins, certificates, withdrawals and minting must be paired with the thing they are witnessing.
E.g:
--certificate-file $certfile --certificate-script-file $scriptfile
--tx-out $txout --minting-script-file $scriptfile
--withdrawal $withdrawal --withdrawal-script-file $scriptfile
--tx-in $txin --txin-script-file $scriptfile
- Scripts are no longer specified at the tx signing stage. They are specified at the txbody stage.
Node changes
- Add an additional GC heap metric to RTS. (#2592)
- Add details about registering relays on-chain to SPO documentation. (#2591)
- Improved installation documentation. (#2624)
- Preparatory support for Voltaire. (#2498)
- Add a docker image option for downloading cardano-node. (#2632)
Consensus changes
- Some preparation for upcoming work on Voltaire. (#2978)
- Introduce an option to configure the snapshot interval. This will primarily be used by downstream teams for testing and benchmarking. (#2966), (#3092)
- Preparatory work for the implementation of Ouroboros Genesis. (#3002)
- Add a peer label to chain sync client traces, allowing us to view which peer supplied which header and when. (#3091)
- Provide the ledger with the ability to perform slot to time conversion. This will be needed for Plutus scripts in the upcoming Alonzo release. (#3036), (#3098)
Ledger changes
- Work on implementing the upcoming Alonzo era. (#2192), (#2198), (#2200), (#2204), (#2210), (#2211), (#2212), (#2214), (#2215), (#2216), (#2218), (#2220), (#2221), (#2222), (#2225), (#2226), (#2227), (#2229), (#2231), (#2235), (#2237), (#2242), (#2243), (#2251), (#2256), (#2260), (#2264)
- Released the CDDL spec for Alonzo. (#2228)
- Add an optional network ID field to the transaction body. This will only come into use in the Alonzo era. (#2219), (#2254)
- Define a cardano-ledger-core package containing era-independent primitives. (#2207)
- Some work to reduce the extra CPU load at an epoch boundary, and reduce the resulting "pause" in normal operation. (#2240), (#2241), (#2250), (#2262)
- Added formal definitions for much of the crypto used to the Shelley spec. (#2236), (#2252)
- Expose AdaPots for use in downstream projects. (#2208)
- Some preparation for upcoming work on Voltaire. (#2135)(#2135)
Network changes
- Introduce new representation for local root peers. This is in preparation for P2P support. (#3006)
- Add a new KeepAlive codec that produces a valid CBOR encoding. (#3062)
Cardano-cli changes
- The query tip now also returns the era (e.g. Shelley, Allegra, Alonzo). (#2561, #2562, #2598)
- The address build command now incorporates the functionality of the script address build command, which is now deprecated. (#2486, #2587)
- Add additional commands for creating MIR certificates to the CLI. This supports the ability to transfer funds to the treasury for Catalyst projects. (#2503)
- The transaction view command now additionally shows detailed of minted non-native tokens. (#2550)
- Add a new command which computes the minimum ADA value/deposit for a multi-asset value. (#2612)
- Add two new query commands:
- Query stake-snapshot allows querying the three stake snapshots for a given stake pool.
- Query pool-params returns the current and future parameters, as well as the retiring information. (#2560)
- Preparatory support for Alonzo. (#2547)
- Updated the CLI reference documentation. (#2665)
Cardano-api changes
- Add initial support for the ledger state and folding over blocks to the API. (#2633)
Deprecated Features
- Removed the deprecated 'KThxBye' message from the TxSubmission protocol. (#2238)
- Removed support for Byron addresses using the Bech32 encoding. The only supported way to use Byron-era addresses is through a file, using the text envelope format. (#2605)
Fixed Issues
- Fixes to the ShelleyMA formal specification. (#2181)
- Fix a bug in reward update application which could have resulted in the wrong amount of funds being added to the treasury. (#2238)
Documentation
- Cardano Node documentation
- Cardano CLI
- Internal API docs for ledger, consensus and network
- Configuration files
- Compatibility matrix
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
- Hydra binaries
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 | ✔️ |
Cardano Node 1.26.2
This point release is a recommended upgrade for all stake pool operators. It is not required for relays or other passive nodes. It ensures that block producing nodes do not unnecessarily re-evaluate the stake distribution at the epoch boundary.
Changes
- Do not force the evaluation of the Mark snapshot - leave this as a thunk (#2614)
Fixed Issues
- Stake pools unnecessarily evaluate the stake distribution at the epoch boundary (#2616)
Known Issues
- As for node version 1.26.1
Documentation
- Cardano Node documentation
- Cardano CLI
- Internal API docs for ledger, consensus and network
- Configuration files
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 | ✔️ |