Skip to content

Cardano Node 1.31.0

Compare
Choose a tag to compare
@LaurenceIO LaurenceIO released this 10 Nov 16:46
· 3864 commits to master since this release
2cbe363

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 a Value 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

Changelogs

Node
  • Additional verification for the configuration files:
    • Added a CI check that the configuration files in git match those produced during the nix build. (#3222)
    • Add a test that the configuration file is valid. (#3236)
  • Various documentation updates. (#3060, #3120, #3142, #3191, #3243, #3265, #3284)
  • Introduce the trace-dispatcher library. This is built to replace the existing iohk-monitoring-framework. (#3073)
  • Add an example using a Plutus script as a stake credential. (#3162)
  • Don't inline a call to maybeToStrictMaybe during translation of ProtocolParameters. 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:
    • About block propagation. (#2476)
    • Tracking how many tips a node has served to downstream peers. (#3300)
    • Counting the number of forks seen. (#3305)
  • 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 and GetChainPoint. (#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 and TxInfo 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
  • Adding more information to trace events. (#3333)
  • Work around a bug on OS/X calling accept on IPv6 sockets. (#3368
  • Continual gradual merge of p2p functionality. (#3369, #3370, #3371, #3372, #3373, #3374, #3377)
  • Miscellaneous documentation changes. (#3383, #3399)
  • Fix a race condition in the thread tracking set. This could result in a node eventually refusing to accept new connections. (#3398)
Cardano-cli
  • Allow the user to specify a signature as required when spending from a multisig/timelock script using the build or build-raw commands. Required signers must be present in the witnesses, and only required signers are visible to Plutus scripts. (#3123)
  • Use a separate connection for the query tip command. This fixes an occasional bug where the query tip command would fail. (#3130)
  • Print the Tx fee when using the tx build command. (#3032)
  • The tx build command now validates its inputs (ensuring they are in the UTxO and that only basic VKey-locked inputs are used as collateral.) (#3151)
  • Add a new comment to query the stake pools. (#3152)
  • tx build now uses the set of existing stake pools to determine if a pool is already registered (and hence whether it must pay a deposit). (#3152)
  • calculate-min-req-utxo now requires a transaction output, not just a value as before. This is required in the Alonzo era, and the change is made everywhere for consistency. (#3181)
  • Allow the tx build command to spend the entirety of a UTxO and create no change output. (#3188)
  • Add withdrawals to the tx view command. (#2613)
  • Restore support for deserialising transactions built by pre-1.27.0 node versions. (#3226)
  • Use the new GetChainBlockNo and GetChainPoint queries in the query tip command. There is a fallback to the older method using the full chain sync query. (#3179)
  • Allow provision of optional datums to a transaction using the CLI option --tx-out-datum-embed-value. This mechanism can for example be used to provide the actual script locking an output, for use when spending it. (#3171)
  • Fix the use of withdrawals using the transaction build command. (#3317)
  • Allow extended payment keys to be specified as a Plutus required signer. (#3319)
Cardano-api
  • Improvements to the ledger state API. (#3143)
  • Make it easier to use monadic queries. (#3151)
  • Implement getBlockHeader for Alonzo. This was a stray function that got missed when implementing Alonzo in the API. (#3158)
  • A few additional exports for API consumers. (#3156)
  • Expose ledger events through the API. Ledger events provide a way for consumers to receive details about things that are happening inside the ledger, and will be used by tools such as db-sync. (#3085)
  • Improve the error message reported when you try to spend a non-Plutus locked input using a Plutus script. (#3187)
Deprecated features
Fixed issues
  • Fix the configuration of the chainSyncServerHeaderTracer. This fixes a bug which caused logs to be unnecessarily verbose. (#3252)
  • Fixed a bug that could cause a node to become unresponsive to new connections. (#3335)

Sign off

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