cardano-node

The core component that is used to participate in a Cardano decentralised blockchain.

APACHE-2.0 License

Stars
3K

Bot releases are hidden (Show)

cardano-node - Cardano Node 1.34.0

Published by LaurenceIO over 2 years ago

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

  • 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
  • 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
Platform Block Production Relay Client (Desktop)
Linux ✔️ ✔️ ✔️
Windows ✔️
MacOS ✔️

Documentation

Changelogs

  • 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)
  • 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)
  • Add a prettier rendering of update proposals. (#3208)
  • Add support for CBOR-encoded blobs in the transaction build and transaction 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 and transaction 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"
      }
    ]
    
  • Expose lovelaceToTxOutValue. (#3381)
  • Implement two functions: currentEpochEligibleLeadershipSlots and nextEpochEligibleLeadershipSlots 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 explicit ShelleyBasedEra parameter to determine the era. The previous behaviour (with an implicit IsShelleyBasedEra constraint) can be obtained with fromShelleyAddrIsSbe. (#2253, #3606)
  • Plutus script performance improvements
  • Fix some spelling errors in the CLI help text. (#3499)
  • Fix a spurious assertion failure that could be seen with regards to demoted hot peers. (#3588)

Sign off

Role Approval
Technical Lead ✔️
QA Engineer ✔️
Ops ✔️
Release Manager ✔️
cardano-node - Cardano Node 1.33.0

Published by LaurenceIO almost 3 years ago

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

  • 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
  • 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
Platform Block Production Relay Client (Desktop)
Linux ✔️ ✔️ ✔️
Windows ✔️
MacOS ✔️

Documentation

Changelogs

  • 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)
  • 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)
  • 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)
  • 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)

Sign off

Role Approval
Technical Lead ✔️
QA Engineer ✔️
Ops ✔️
Release Manager ✔️
cardano-node - Cardano Node 1.32.1

Published by LaurenceIO almost 3 years ago

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

  1. 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).
  2. 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

  • 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
  • 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
Platform Block Production Relay Client (Desktop)
Linux ✔️ ✔️ ✔️
Windows ✔️
MacOS ✔️

Documentation

Changelogs

  • 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)
  • Add per-miniprotocol byte limits, for things like how big a block arriving from the network may be. (#3409)
  • Various documentation updates. (#3435, #3461, #3446)
  • Early, unverified and unsupported p2p networking capabilities. Do NOT use in production. (#3467)
  • Default CLI commands to the Alonzo era. (#3339)
  • Add defaults for building the Alonzo genesis. (#3346)
  • 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)
  • Fix the rendering of RemoteConnectionId in trace messages. (#3199)

Sign off

Role Approval
Technical Lead ✔️
QA Engineer ✔️
Ops ✔️
Release Manager ✔️
cardano-node - Cardano Node 1.31.0

Published by LaurenceIO almost 3 years ago

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

  • 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
  • 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
Platform Block Production Relay Client (Desktop)
Linux ✔️ ✔️ ✔️
Windows ✔️
MacOS ✔️

Documentation

Changelogs

  • 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)
  • 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)
  • 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)
  • 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)
  • 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)
  • 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)
  • 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 ✔️
cardano-node - Cardano Node 1.27.0

Published by LaurenceIO over 3 years ago

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

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

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 - Cardano Node 1.26.2

Published by LaurenceIO over 3 years ago

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

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 ✔️
cardano-node - Cardano Node 1.26.1

Published by LaurenceIO over 3 years ago

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 ✔️
cardano-node - Cardano Node 1.25.1

Published by LaurenceIO over 3 years ago

This release is expected to be the final release for the upcoming Mary hard fork, and everyone must upgrade to this (or a later) version to cross the Mary hard fork.

The Mary hard fork introduces native token functionality to Cardano. This is directly useful and is also one of the significant building blocks for the later Goguen smart contracts.

A launchpad testnet for the native token functionality has been running since December, using the cardano-node 1.24.2 release. This 1.25.1 release contains relatively minor changes for the Mary era compared to the 1.24.2 release. It is nevertheless not compatible with the 1.24.2 version and the existing testnet. The launchpad testnet will not be restarted and will remain on 1.24.2. Public testnet and staging have been upgraded to 1.25.1. If you have already tested integration with the existing launchpad testnet then no new integration work is expected for this release other than upgrading the node version and moving to the staging or public testnet.

Exchanges and other users that integrate closely with Cardano must take action to test their integration before the transition takes place on mainnet. Exchanges can use launchpad or staging, SPOs can use staging, and everyone should use public testnet once it forks. Staging will go through the Mary hard fork on 28th January, and public testnet will go through the Mary hard fork during week commencing 1st February. The native token functionality does have an impact for all custom wallet implementations: it is not a feature that can be ignored and remain compatible. All addresses are capable of receiving native tokens.

Stake Pool Operators (SPOs) and Exchanges should take note that the metric namespace has undergone consolidation, so all metrics now reside in cardano.node.metrics:

  • cardano.node.Forge.metrics.* -> cardano.node.metrics.Forge.*
  • cardano.node.ChainDB.metrics.* -> cardano.node.metrics.ChainDB.*
  • cardano.node.BlockFetchDecision.connectedPeers -> cardano.node.metrics.connectedPeers

The node configs require no changes, but allow dropping entries that became redundant: wherever cardano.node.Forge.metrics.*, cardano.node.ChainDB.metrics.* or cardano.node.BlockFetchDecision.connectedPeers were mentioned, those entries can be removed. Only cardano.node.metric needs to remain. Please see #2281 for further details.

This release uses a new cabal snapshot so could be rather resource intensive when building for the first time.

Node changes

  • All metrics now use a common name prefix cardano.node.metrics. This requires a one-off change to the node configuration to route all metrics to the metrics backend and not have them in the log files. This should reduce the number of such changes in future. (#2281)
  • More detailed tracer output for protocol tracers (#2178)

Consensus changes

  • Improve the handling of the encoding of local IPC queries by older clients that do not understand later hard forks. In future this should mean that clients that do not understand a hard fork only fail at the time of the hard fork itself, and not earlier when the update proposal is confirmed (#2818)
  • New query for rewards provenance. This is intended to help wallets explain more details about rewards, and to help SPOs and users better understand how pools' performance and ranking are calculated. This is not yet supported in the CLI in this release. (#2830)
  • Support for using multiple leader credentials for the purpose of running large scale benchmarks. It supported in testnets only, not mainnet (#2832)
  • Support in testnets for skipping initial eras. This makes it easier and quicker to automate the setup of Cardano-mode testnets that start in later eras, such as Allegra or Mary. This enables simplifications in the setup for integration tests or benchmarks (#2811)
  • A first draft of a technical report on the design and the internals of the Cardano consensus and storage layer (#2663, #2838, #2841, #2842, #2853)

Ledger changes

  • Enforce the size of multi-asset names, to match the specification (#2074)
  • Minor change to the ledger CDDL binary specification for the Mary era: restrict the range of multi-asset values to -2^63..2^63-1 where previously the allowed range was -2^64..2^64-1 (#2092)
  • Rename fields in the ledger's CDDL binary specification for clarity and consistency, but no actual changes to the binary format (#2045)
  • Change the minimum ada UTxO value formula for multi-asset values to better reflect the resource costs and to pass on savings (in the form of a lower minimum ada UTxO value) for applications that use smaller asset bundles by sharing policy ids or using shorter asset names (#2107)
  • Improvements to the size of the internal storage format of multi-asset values, enabling a lower minimum ada UTxO value for multi-asset output values (#2083)
  • Restrict the maximum size of multi-asset output values (#2099)
  • Terminology change: the metadata section is renamed to "auxiliary data" to distinguish it from the existing transaction metadata (#2052)
  • Extra documentation on native tokens (#2046)
  • Progress on the new Alonzo era (#2022, #2055, #2061, #2062, #2067, #2077, #2087, #2088, #2095)

Network changes

  • Internal infrastructure to support seeding the P2P graph construction from the SPO relays registered on the chain, weighted by stake (#2535, #2536)
  • Introduce v6 of the node-to-node protocol where we reverse the initial agency of the tx-submission protocol to match the others. This is preparation for the P2P governor which requires the initial agency for mini-protocols to be uniform (#2807)
  • Introduce v8 of the node-to-client protocol with an extension to the local query protocol that allows acquiring the point at the node's current chain tip, without having to provide that point explicitly. Using this simplifies things for node clients for the common use case where the current tip is needed, and eliminates a rare race condition (#2875)
  • Fix a resource leak for chain-sync clients (#2235, #2870, #2888)
  • Tracing improvements for the mux component (#2794)

Cardano-cli changes

  • Allow creating transactions with no outputs (#2223, #2226)
  • Improved error messages for syntax errors in out-of-range lovelace quantities in transaction outputs (#2063, #2079)
  • Improved reference documentation for simple scripts and their use (#2165)
  • Remove support for changing the delegation from Genesis keys to operational keys in the Byron era. This feature was never used on the mainnet during the Byron era. (#2219)
  • Clearer usage information in the CLI --help output (#2203)

Cardano-api changes

  • New IPC modules for easier interaction with the node, including support for all existing local state queries (#2230, #2238, #2263, #2277, #2286)
  • API support for Byron era update proposals and votes (#2209, #2271)
  • Make Cardano.Api the primary public module for the API.
  • API support for serialising multi-asset PolicyId and AssetName (#2270)
  • API for pretty-printing JSON output (#2103)
  • More precise error cases for tx outputs that are out of range (#2217)
  • Host up-to-date generated API documentation via github https://input-output-hk.github.io/cardano-node/ (#2273, #2276, #2278)

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

Sign off

Role Approval
Technical Lead ✔️
QA Engineer ✔️
Ops ✔️
Release Manager ✔️
cardano-node - Cardano Node 1.24.2

Published by LaurenceIO almost 4 years ago

This release provides support for the upcoming Allegra (token locking) Hard Fork and Mary Hard Fork and the new features they bring.

Everyone must upgrade to this (or a later) version to cross the Allegra Hard Fork.
Daedalus users should look for Daedalus release 3.0.0 which includes a version of the node that will cross the Token locking Cardano update, however people using the node directly must upgrade.

  • Token locking Cardano update adds some features needed to support the Catalyst treasury scheme. It extends the existing multi-sig script language with predicates for time, via the slot number. It allows, for example, to make a script address that is not spendable until a certain point in time.
  • The native tokens Cardano update adds multi-asset support. This is comparable to ERC20 and ERC721 tokens, but supported natively in the UTxO ledger. This is part of the Goguen feature set. It is a very significant feature and will have implications for all Cardano wallet implementations, including exchanges.

Stake Pool Operators (SPOs) and Exchanges should update their node config "options" section with an extra entry:

  "options": {
    "mapBackends": {
      "cardano.node.resources": [
        "EKGViewBK"
      ],

See link to configuration files in documentation section below.

Node changes

  • Add a nodeStartTime metric. This is a partial replacement for the uptime metric that was removed in the 1.23.0 release. (#2118)
  • New metrics for the size of the UTxO and delegation maps (#2158)
  • Tracing changes to support "K=1000" benchmarks (#2156, #2175)
  • Mention the required xz tool in the Cabal build instructions (#2132)
  • Eliminate the need to update the LastKnownBlockVersion-* entries in the node config files for the Shelley-based eras. This means the configuration does not need to be updated for the Token locking or native tokens eras. (#2193)
  • Export some more metrics for selected OS and RTS stats (#2192)

Ledger changes

  • Support for optional additional scripts in the tx auxiliary data (#1993)
  • Update the CDDL specification of the blockchain binary format for Token locking and native tokens eras (#1994, #1999, #2009)
  • Improved serialised binary format for multi-asset values (#1979)
  • Add a compact in-memory storage format for multi-asset values (#1996)
  • Updates to the multi-asset formal specifiation (#2003)
  • Adjust how the major protocol version is handled for soft forks (#1998)
  • Initial preparatory steps for the Alonzo era (#2016, #2027)
  • Benchmarks for the transaction generators (#2024)

Consensus changes

  • Use a single set of credentials for all Shelley-based eras. This keeps the node configuration simple for the new eras. (#2753)
  • Add support for a token locking-only protocol mode to simplify benchmarking (#2754)
  • Add support for the system wall clock time being adjusted backwards by a small amount without triggering a node shutdown and restart. Small backwards adjustments can be caused by NTP. (#2781, #2785)

Network changes

  • Preparations for publishing io-sim as a public library (#2775)
  • Improved logging of the creation of the node's sockets (#2746)
  • Update the cardano-ping tool to support the node-to-node protocol V4 (#2787)

CLI changes

  • CLI support for the Token locking and native tokens eras, including creating transactions for the new eras, and support for the special new features in the new eras: script extensions, tx validity intervals, auxiliary scripts, multi-asset tx outputs and asset minting. (#2072, #2129, #2136)
  • It is now necessary to specify the target era (e.g. --allegra-era) when creating a transaction (with build-raw) so that the right format and feature-set is used. The --shelley-era remains the default.
  • It is necessary for now to specify the target era when using the CLI query commands. This may become automatic in future. The default is --shelley-era.
  • Move all the Shelley sub-commands to the top level of the command line. For example cardano-cli shelley transaction build-raw becomes simply cardano-cli transaction build-raw. The existing names are also kept for compatibility. (#2076, #2145)
  • Updated help text for the ledger/protocol state queries to clarify that they are primarily for debugging and are not stable interfaces (#2125, #2126, #2133)
  • New command transaction policyid for making multi-asset policy ids (#2176)
  • New command byron transaction txid to help scripts with getting the transaction id for Byron transactions made using the cli (#2169)
  • New --tx-file flag for the command transaction txid to accept complete txs, not just tx bodies (#2169)
  • Hide the deprecated --ttl flag in the --help output (#2189, #2190)

API changes

  • Full API support for the Token locking and native tokens eras, including creating transactions for the new eras, and support for the special new features in the new eras: script extensions, tx validity intervals, auxiliary scripts, multi-asset tx outputs and asset minting (#2092, #2110, #2111, #2121, #2127, #2128, #2141, #2149)

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

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

Sign off

Role Approval
Technical Lead ✔️
QA Engineer ✔️
Ops ✔️
Release Manager ✔️
cardano-node - Cardano Node 1.23.0

Published by LaurenceIO almost 4 years ago

This release includes a substantial amount of internal changes to support the upcoming Allegra and Mary hard forks and the new features they bring. This is not the final release before the Allegra hard fork, but it does include the bulk of the functionality for both Allegra and Mary hard forks.

  • The Allegra hard fork adds some features needed to support the Catalyst treasury scheme. It extends the existing multi-sig script language with predicates for time, via the slot number. It allows, for example, to make an address not spendable until a certain point in time.
  • The Mary hard fork adds multi-asset support. This is comparable to ERC20 and ERC721 tokens, but supported natively in the UTxO ledger. This is part of the Goguen feature set. It is a very significant feature and will have implications for all Cardano wallet implementations, including exchanges.

Another notable change in this release is an adjustment to the pool ranking that will benefit small pools that have not yet made many blocks. We have adjusted the initial Bayesian prior so that instead of assuming new pools will perform at some less-than-perfect average level, we assume they will perform more-or-less perfectly. This prior is still updated based on the actual performance history, so pools that perform poorly will still drop in ranking. This change will especially benefit small pools that have produce few blocks so far, because they have very little performance history and so their score will be more influenced by the initial prior.

Improvements

  • Preliminary support for the upcoming Allegra and Mary eras (#1899, #1951, #1958, #1959, #1961, #1965, #1971, #1977, #1981, #1984, #1987, #1988, #1989, #1990, #2019, #2038, #2080, #2666, #2668, #2670, #2677, #2679)
  • Preliminary support for the Allegra script language extensions (#1847, #1875, #1895, #1908, #2069)
  • Preliminary support for the Mary multi-asset extensions (#1905, #1931, #1938 #2081, #2083, #2085, #2093)
  • Adjust how the pool performance is estimated as part of the pool ranking: for pools with no performance history use a Bayesian prior that assumes that pools will perform well. This should benefit new small pools. (#1936)
  • Adjust the ledger state dump to return the "extended" ledger state (#2019)
  • Support bech32 and hex formats for reading verification keys (#1852)
  • Improved documentation for CLI multi-signature support (#1976)
  • Improve handling of invalid command line input (#2088)
  • Improved ledger state serialisation performance (#1968)
  • Restore build compatibility with GHC 8.6.5, so this release builds with both GHC 8.6.5 and 8.10.2. Future releases will support 8.10.x only. (#1956, #1990, #2540, #2652)
  • Several new local state queries in v4 of the node-to-client protocol (#2694)
  • Keep a compact form of the Shelley genesis content, to allow it to be queried later (#2704)
  • Switch to the newly-published "nothunks" package (#1894, #2664)
  • Address technical debt in the db-analyser tool (#2667)
  • Allow most Shelley ledger rules to be reused in subsequent eras (#1922)
  • Adjust how the ledger is parametrised to reflect the fact that some parts change with the ledger era, while others change with the consensus protocol. This makes it easier to handle ledger-only era changes that still use the same Praos consensus protocol. (#1915)
  • Support serialisation for the Shelley genesis data structure to support a new node query that can return the genesis parameters (#1927)
  • New cardano-ping demo and tool (#2701)
  • Make the node fail on startup if we cannot bind to the necessary ports (#2696)
  • Improvement to the calculation and collection of network connection performance metrics (#2636)
  • Improvements to the handling of the initial connection handshake (#2691)
  • Preparations for publishing io-sim as a public library (#2580, #2631, #2649)
  • Improved IPv6 support (#1928, #2662)
  • Preparation for the p2p governor: add a new node-to-node protocol version (4) with a new negotiated handshake parameter to determine if the connection will be uni-directional or bi-directional (#2658)
  • Documentation for the hard fork transition (#1741)
  • Check VRF signing key files have the correct file permissions (#1936, #1938)
  • Improve IPv6 support and related internal refactoring (#1928)

Resolved issues

  • Fix a space leak in the stake pool performance tracking that caused writing ledger state snapshots in consensus to take too long (#1967)
  • Fix a corner case in the way the pool performance history is calculated as part of the overall pool score calculation (#1897)
  • Fix a failure that occurs on starting a node when there are certain kinds of DB corruption (specifically a ledger snapshot that is newer than the tip of the immutable DB, which would typically occur when chain DB files are manually moved or removed) (#2651)
  • Fix a long-standing (highly unlikely) bug in evaluating alternative chains that cross a hard fork boundary (#2314, #2318, #2657, #2661)

Deprecated Features

  • Remove the HardForkNotBeforeEpoch setting from the config file (#2073, #2736, #2739)
  • Remove the deprecated LiveView feature, now that RTView is released (#1977)

Known Issues

  • #1734 ErrorPolicyUnhandledApplicationException may be observed when running CLI commands on windows
  • See GitHub Issues for further issues that have been reported

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

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)
  • 4GB of RAM (8GB for a relay or stake pool)
  • 10GB of free storage (20GB for a stake pool)
Role Approval
Technical Lead ✔️
QA Engineer ✔️
Ops ✔️
Release Manager ✔️
cardano-node - Cardano Node 1.21.1

Published by tatyanavych about 4 years ago

This patch release updates Cardano Node 1.21.0 with a few minor fixes. In particular, it resolves a problem on startup when the node is configured to use systemd socket activation.

Deployed on the testnet on 6 October 2020.
Deployed on the mainnet on 6 October 2020.

Improvements

  • Added more detail to the logging of the keep-alive protocol (#1873)

Resolved issues

  • Fixed configuration defaults that were interfering with using systemd socket activation (#1927)
  • Added workaround for building on Linux systems without systemd (#1775)
  • Fixed the severity level for some protocol tracers (#1910)

Known Issues

  • #1734 ErrorPolicyUnhandledApplicationException may be observed when running CLI commands on windows
  • See GitHub Issues for further issues that have been reported

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

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

Sign off

Role Approval
Technical Lead ✔️
QA Engineer ✔️
Ops ✔️
Release Manager ✔️
cardano-node - Cardano Node 1.21.0

Published by dcoutts about 4 years ago

This release includes support in the cardano-cli for multi-signature addresses and transactions. It also resolves a problem that has been affecting pool operators at the 48-hour mark within each epoch. It has various other minor improvements and fixes detailed below.

The "Live View" mode for the Cardano node is being deprecated in favour of a new external "RT View" (RT for real-time) monitoring tool which is cross-platform and has a richer browser-based interface. The new RT View component will be released separately. The Live View mode is still available in this release of the node, but will be removed in a future release.

New Features

  • Added support for multi-signature scripts in the node CLI and API (#1788, #1880)

Improvements

  • Added support in Byron witnesses for addresses that use attributes, which include all addresses in legacy Daedalus Byron wallets (#1851, #1871)
  • Optimised the expensive reward calculations while checking if the node is the slot leader, which significantly reduce the CPU spike at the 48 hour point in each epoch (#2642)
  • Added initial support for hard forks after Shelley (#2452, #2471)
  • Added support for a low-impact soft fork with stricter metadata validation (#1874)
  • Adjusted the outstanding data limit for the block fetch protocol (#2624)
  • Improved protocol logging (#2609, #2610, #2618, #2611)
  • Added trace for ledger events during DB replay (#2508, #2621, #2627)
  • Added further improvements to the performance of reward calculations and some other ledger calculations (#1857, #1881, #1884)
  • Updated the formal specification with the change in the overlay schedule calculation (#1862)
  • Made minor corrections to the formal specification arising from internal review and internal audit (#1776, #1808, #1811, #1820, #1861)
  • Documented the meaning of the MIR pot field in the CDDL chain specification (#1864)
  • Updated documentation on the details of pool ranking (#1852)
  • Fixed the mux protocol description and typos in the network documentation (#2625, #2639)
  • Added information about the RT View component that will replace Live View in the node documentation (#1866)

Deprecated features

  • Live View mode of Cardano node

Removed features

  • Removed stack build support (#2638)

Resolved issues

  • Fixed a bug in crossing the hard fork from Byron to Shelley (#2455, #2626)
  • Fixed a bug in the calculation of the pool stake fraction reported in the stake pool query used by wallets (#1880)
  • Fixed a bug for the corner case for testnets where all value is in the reserves with no value in circulation (#1876)

Known Issues

  • #1734 ErrorPolicyUnhandledApplicationException may be observed when running CLI commands on windows
  • See GitHub Issues for further issues that have been reported

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)
  • Docker image

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

Sign off

Role Approval
Technical Lead ✔️
QA Engineer ✔️
Ops
Release Manager ✔️
cardano-node - Cardano Node 1.20.0

Published by tatyanavych about 4 years ago

This release is light on user-visible changes as the development has been focusing on preparations for the multi-asset features and on paying down technical debt. It does however include a number of performance improvements in the node, a few new CLI commands, and an improvement that will enable Daedalus to report stake pool saturation.

Note that this release will automatically perform a DB migration on the first startup after the update. The migration will take 10-20 minutes depending on your CPU. If this is a problem for your use, then see below for steps to mitigate this.

Deployed on the testnet on 21 September 2020.
Deployed on the mainnet on 23 September 2020.

Steps to mitigate downtime for this update

This update includes a change in the format of a part of the chain DB (specifically the ledger state snapshots). The migration for this is handled automatically by the node on startup. The migration will take 10-20 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.20.0
  6. Repeat steps 3-5 for all production nodes

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

New Features

  • New CLI command convert-cardano-address-key for converting more legacy signing key formats (#1756, #1822)
  • New CLI command create-genesis-key-delegation-certificate for creating genesis key delegation certificates (#1784)

Improvements

  • Adjusted the query used by the wallet to report pool stake to report it as a fraction of total stake rather than as a fraction of total supply, enabling it to be used to report pool saturation (#1836, #1850)
  • Adjusted the same query to report pool size based on the live stake distribution rather than the stake distribution snapshot from the last epoch boundary snapshot, enabling its use in the wallet for live reporting of pool saturation (#1854)
  • Introduced optimisations in the consensus layer leading to approximately a 15% synchronisation time improvement (#2555)
  • Optimised performance in the ledger for the end-of-epoch reward calculation, to reduce the CPU spike at the 48 hour point in each epoch (#1851)
  • Made performance and memory improvement in the overlay schedule of the ledger layer (#1849)
  • Added a new document on the details of pool ranking (#1816)
  • Improved support for conversion between JSON and transaction metadata, with support for two JSON schemas, suitable for different use cases (#1797)
  • Added sanity checks for the Shelley genesis on node start-up to help with configuring private testnets (#1149, #1478, #1820)
  • Added CLI support for bech32 and hex formats when reading signing keys (#1790)
  • Improved error messages for CLI errors (#1801, #1839)
  • Improved logging message for DB events (#576, #1819)
  • Added a script for a node that connects to the current mainnet (#1847)
  • Bundled the benchmarking scripts (#1810)

Resolved issues

  • Fixed a bug in the time (slot/era) node query (#2579)

Known Issues

  • #1734 ErrorPolicyUnhandledApplicationException may be observed when running CLI commands on windows
  • See GitHub Issues for further issues that have been reported

Documentation

Platforms

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

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

Sign off

Role Approval
Technical Lead ✔️
QA Engineer ✔️
Ops ✔️
Release Manager ✔️
cardano-node - Cardano Node 1.19.1

Published by disassembler about 4 years ago

This release delivers minor improvements to the performance of the node, fixes KES period reporting for newly generated KES keys, and disables RDRAND for seed generation.

Deployed on the testnet on 2 September 2020.
Deployed on the mainnet on 4 September 2020.

Improvements

  • Lowered memory usage (#2532, #2533)
  • Made minor performance improvements (#1790, #1798)
  • Defaulted cabal scripts to build with RDRAND disabled (#1787)
  • Added validation of transaction metadata (#1432, #1677)
  • Adjusted the transaction metadata JSON schema to be fully recursive (#1735)
  • Updated documentation (#1718, #1736, #1740, #1741, #1750, #1752, #1757, #1763, #1764, #1770)

Resolved issues

  • Fixed the reporting of the metrics for the opcert/KES status (#1742, #2529)
  • Fixed the testnet vs mainnet argument for the genesis create command in CLI (#1761)
  • Fixed the --treasury flag for MIR cert creation (#1780)
  • Fixed the output rendering in the command to hash genesis files (#1713, #1767)
  • Fixed minor issue to ensure compliance with CIP5 for common bech32 prefixes (#1781)
  • Fixed bugs related to the ledger view history (#1935, #2506, #2559, #2562, #2546)

Known Issues

Documentation

Platforms

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

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

Sign off

Role Approval
Technical Lead ✔️
QA Engineer ✔️
Ops ✔️
Release Manager ✔️
cardano-node - Cardano Node 1.19.0

Published by tatyanavych about 4 years ago

This release delivers major improvements to the performance of the node, including synchronisation time, startup time and epoch boundary processing.

It also introduces a number of new and updated CLI commands and an enhancement to show KES periods in the Live View console.

Deployed on the testnet on 20 August 2020.
Deployed on the mainnet on 20 August 2020.

New features

  • Conversion of ITN extended keys to Shelley stake keys via the CLI (#1579)
  • Conversion of password-protected Byron signing keys via the CLI (#1633)
  • Build script addresses via the CLI (#1641)
  • Display KES current and remaining periods in the Live View console (#1503)
  • Forget old copies of KES keys, pending crypto support (#2446)
  • A new keep-alive network mini protocol (#2251)

Improvements

  • To CLI commands:
    • Improved the output of the stake-address-info query (#1546, #1636, #1671)
    • Reorganised Byron CLI commands similarly to Shelley ones (#1609, #1628)
  • Improved rendering of points in unstructured log output (#1693)
  • Improved error messages for problems in the JSON topology file (#1446, #1634)
  • Added improvements in ledger layer to enable consensus layer performance optimisations (#1742, #1789)
  • Made performance optimisations in ledger layer (#1707, #1760, #1771, #1779, #1785, #1786)
  • Made performance optimisations in consensus layer(#2512, #2520, #2521)

Resolved issues

  • Fixed the Live View display of memory metrics (#1552)
  • Fixed incorrect console state after Live View shutdown (#1569)
  • Fixed display of stake distribution pool ids to be in Bech32 (#1729)
  • Fixed size accounting in block forging to avoid over-filling blocks (#2469)
  • Fixed size-accounting for block fetching (#2480, #2481, #2484)
  • Fixed pool-ranking calculation for newly registered pools (#1724)
  • Corrected hash algorithm used for script hashes (#1746)
  • Minor corrections to the formal specification arising from internal review and internal
    audit (#1714, #1717, #1725, #1733, #1728, #1745, #1748, #1751, #1752, #1753, #1764, #1765, #1773)
  • Minor correction to the CDDL specification for transaction metadata (#1743)

Known Issues

Documentation

Platforms

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

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

Sign off

Role Approval
Technical Lead ✔️
QA Engineer ✔️
Ops ✔️
Release Manager ✔️
cardano-node - Cardano Node 1.18.0

Published by tatyanavych about 4 years ago

This is the final planned release before the Shelley hard fork. It is necessary to use this 1.18.0 version to successfully cross the hard fork.

This release delivers the complete set of Shelley features together with the mechanism that will be used to transition from the federated Byron era to the decentralised Shelley era (the hard-fork combinator).

Important new features include:

  • use of the hard-fork combinator to enable the transition between the Byron and Shelley eras,
  • witnesses for spending from Byron addresses in Shelley era transactions,
  • numerous improvements and resolved issues.

To support the new Cardano mainnet, a new configuration mode for the node has been introduced: the "Cardano" mode uses the hard-fork combinator to provide a single mode that is the sequential composition of the two current eras (Byron;Shelley). This will also be used for future versions of the node, allowing easy transitions between future eras. If you plan to use a manually configured node on the mainnet, it is crucial to use the Protocol: Cardano mode and the correct ShelleyGenesisHash in the node configuration file.

New Cardano documentation site with cardano-node documentation is now available. The specific configuration to run a node on mainnet or any of the testnets is also available. Note that it is necessary to use the exact Shelley genesis file to successfully cross the hard fork, and it is highly recommended to include that hash in the node configuration file, as in the provided sample configuration.

The 1.15.0, 1.15.1, 1.16.0, 1.17.0 tagged versions were not released for general use, however, for applications that were successfully integrated against 1.16.0 or 1.17.0, this release should be a drop-in replacement: there are no client interface changes compared to the unreleased 1.16.0 or 1.17.0 tags. In particular, the node's client protocols and transaction formats are unchanged since 1.16.0.

Deployed on the testnet on 25 July 2020.
Deployed on the mainnet on 25 July 2020.

New features

  • Hard-fork combinator
    • Support for hard fork queries in all protocol modes (#2399)
    • Use of the hard-fork combinator in single-era modes (#1475, #2405, #2407, #2412, #2414)
    • Initial infrastructure for supporting old transactions in new eras, for future hard forks (#2371, #2431)
    • Support for triggering a hard fork at a specific epoch (#1328) and at a specific protocol version (#1345)
    • Improvements in chain selection across future hard forks (#2118, #2416)
    • Optimised chain selection for forks (#1223, #2323)
    • Identification of and warning about a likely hard fork misconfiguration (#2386, #2391)
    • Clarification and documentation of the interface for triggering a hard fork (#2307)
  • Witnessing Byron addresses in Shelley era - format, specification and implementation (#1657, #1670)
    • Limited sizes of attributes in Byron addresses (#1662)
  • New configuration parameter to specify the maximum concurrent redundancy of block downloads (#1420, #1469)
  • New local state queries (QueryHardFork) that are specific to the hard fork support (#2365, #2370)
  • New tip-sampling mini-protocol for later use in P2P governor (#2340)
  • New key command with key utilities (#1487, #1493)
  • cardano.org cardano-node documentation (#1490, #1491, #1508)

Improvements

  • In CLI commands:
    • Added support for interacting with nodes that are running in Byron-only, Shelley-only or Cardano mode (Byron;Shelley) (#1435)
    • Added support for Byron keys and extended ed25519 keys (#1411)
    • Improved bash completion for flags that accept files (#1459)
    • Added Shelley CLI stake stake-address key-hash and VRF key hashing node key-hash-VRF commands (#1407)
    • Changed output format to JSON for the address info (#1426) and query tip commands (#1340, #1365)
    • In the delegation CLI command, changed to accept optionally: either a pool id, or verification key (#1460)
    • Allowed genesis keys as transaction witnesses (#1483)
    • Allowed extended genesis delegate keys to sign operational certificates (#1497)
    • Assigned default value to byron-witness-count in the command for fee calculation (#1516)
    • Assigned default value to the Cardano protocol for talking to a node (#1515)
  • Allowed the initial Praos epoch nonce (#2005, #2289) and set it to the Shelley genesis hash (#1470)
  • Added validation for Shelley genesis configurations (#2423)
  • Eliminated protocolMagicId from the Shelley genesis file (#1668)
  • Changed genesis file and Nix setup (#1531, #1532)
  • Improved block fetching (#2430, #2433, #2434, #2441, #2451)
  • Reduced default block fetch concurrency deadline to 1 (#2457)
  • Added tracing of the UTxO size in block forging to help the benchmarking tools (#1329)
  • Corrected display of transaction hash in Shelley UTxO query command output (#1535)
  • Optimised translating Byron to Shelley UTxOs (#2464)
  • Optimised performance for large UTxO and other state sizes (#1658)
  • Optimised memory use for the UTxO (#1663), and other (#1678, #1683)
  • Changed to use slightly smaller KES keys with 2^6 not 2^7 max periods (#2403)
  • Changed to use a smaller representation for hashes for reduced memory (#2266)
  • Improved performance of syncing in Cardano mode (#2375, #2390)
  • Changed to prefer blocks the node produced, irrespective of the VRF value (#1286#2348)
  • Simplified the calculation of the VRF seed (#1659)
  • Simplified calculation for turning the VRF output into the leader value (#1579)
  • Reinstated verification of the VRF for BFT blocks (#1590)
  • Added richer support for queries using multiple protocol eras to allow some queries to be answered outside of the era to which they belong (#2349)
  • Changed the definition of a transaction's size to be its size in bytes (#1639)
  • Changed unclaimed epoch pool rewards to go to the treasury not the reserves (#1642), and back to reserves, not the treasury (#1703)
  • Accounted for encoding overhead of Shelley transactions (#2466)
  • Included in the pool ranking function whether the pool pledge is met (#1634)
  • Clarified the design specification on how pool pledges are enforced (#1611), and other (#1618, #1655)
  • Improved serialisation with hashing and signing (#1613, #1659, #1666)
  • Added the ability to run node build with STS assertions enabled (#1610, #1629, #1672)
  • Allowed update proposals to be submitted near the end of an epoch, but apply them only at the end of the following epoch (#1574)
  • Improved performance of a particular calculation in the rules (#1700)
  • Improved clarity between executable and formal spec, arising from audit feedback (#1685, #1687, #1690, #1694)
  • Removed stkCreds and stpools maps from formal spec, in line with simplifications from the executable specification (#1692)
  • Changed the expected block count to account for the decentralisation parameter #1710
  • Enable more efficient transaction translations (#1708)
  • Replaced dependency on lens with microlens (#1705)
  • Fixed typo in CDDL key name (#1706)
  • Improved error messages for protocol codec failures (#2360)
  • Created infrastructure for showing the type of protocols in errors (#2419)
  • Made the max concurrency of block downloads a configurable parameter (#2363)
  • Enabled the KeepAlive responder-side protocol handler (#2392)
  • Added more concurrency utilities (#2298)
  • Adjusted the local state query wrapper type for DB syncing (#2437)
  • Removed the "forks created" metric from the live view (#1315)
  • Improved the Cardano ledger README description the main design and specification documents (#1626)
  • Updated the README build instructions, including libsodium (#1325, #1361, #1362)
  • Added tracing of hard fork transition events (#1520, #2449)
  • Added script for setting up a local cluster in Cardano mode (#1487)
  • Improved error reporting (#2458)
  • Tuned defaultDiskPolicy (#2454)
  • Improved documentation (#1533, #1534, #1536, #1537)

Shelley breaking changes

  • A number of changes have been made to the blockchain protocol that mean that this version of the node is not compatible with previous versions
  • The hash of the Shelley genesis file is checked on node startup and is incorporated into the initial Praos epoch nonce - care must be taken to preserve the Shelley genesis file content. All instances that are running on the same network must use the same genesis file.

Resolved issues

  • Fixed query compatibility between Cardano and Byron modes (#2385)
  • Fixed an off-by-one error in the KES certificate validity period (#2306)
  • Fixed a number of bugs that have been found by the hard fork tests (#2310, #2312)
  • Fixed the selection of the epoch nonce (#1651)
  • Fixed minor design specification description mistake (#1612)
  • Fixed the documentation of the size of key hashes (#1622)
  • Fixed a bug in the pool reaping that could cause a crash on epoch boundaries (#1593)
  • Fixed a preservation of value bug in the rewards that are given to retired stake pools (#1598, #1604)
  • Fixed a bug in pool reaping when multiple pools share a reward account (#1605)
  • Fixed the calculation of non-myopic rewards that is queried by the wallet (#1601)
  • Fixed the presentation of pool metadata hashes in JSON output (#1596)
  • Fixed the output of the calculate-min-fee command (#1401, #1408)
  • Fixed the format of Byron addresses used in Byron CLI commands (#1326)
  • Fixed KES metric reporting in the Cardano mode (#1448, #1505)
  • Fixed rendering of block hashes in logging output (#1488)
  • Fixed a bug in the serialisation for the Shelley-only era (#2435)
  • Fixed an accidental change to the delegation update rule (#1701)
  • Fixed serialisation of protocol state to be valid CBOR (#1684)

Known Issues

  • High CPU usage can be observed under some conditions when syncing
  • There are a number of issues with LiveView - other monitoring systems are preferred
  • In some situations, the node may fail to shutdown properly on Windows (#1086)
  • There may be issues with creating blocks on epoch boundaries
  • The CLI does not yet support multi-signature transactions
  • The CLI supports only basic transaction construction

Documentation

Platforms

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

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

Sign off

Role Approval
Technical Lead ✔️
QA Engineer ✔️
Ops ✔️
Release Manager ✔️
cardano-node - Cardano Node 1.14.2

Published by tatyanavych over 4 years ago

Cardano Node 1.14.2

This patch release provides fixes for hashing of stake pool metadata, and query that dumps the ledger state.

Deployed on the Shelley testnet on 29 June 2020.
Deployed on the mainnet on 30 June 2020.

Resolved issues

  • Fixed the hashing of stake pool metadata in command metadata-hash (#1346)
  • Fixed the query that dumps the ledger state as JSON in CLI and API (#1333, #1334)

Documentation

Platforms

Sign off

Role Approval
Technical Lead ✔️
QA Engineer ✔️
Ops ✔️
Release Manager ✔️
cardano-node - Cardano Node 1.14.0

Published by dcoutts over 4 years ago

Cardano Node 1.14.0

This release delivers new and refined CLI commands, support for transaction metadata, the new ledger minimum pool cost feature, and enhancements to pool rankings. It also includes a new implementation of the VRF cryptography primitives, improvements in the KeepAlive network mini-protocol, the Byron-to-Shelley hard-fork implementation, block fetch calculation, logging and reporting, and simplified Docker image usage.

There are Shelley breaking changes in this release including changes in the implementation of address hash and VRF cryptography primitives, and removal of the decaying deposit feature. The Shelley features have been pre-released for public testing and review on the re-spawn of Cardano Shelley Testnet. The Shelley changes are not available in the Byron mode.

Deployed on the Shelley testnet on 23 June 2020.

Shelley new features

  • A minimum pool cost ledger feature as a protocol parameter minPoolCost (#1539, #1546)
  • New option for transaction metadata --metadata-file for transaction construction using the build-raw command (#1038, #1233)
  • New flag for reward account withdrawals --withdrawal in transaction construction (#1117, #1237)
  • New command for pool metadata JSON validation and hashing metadata-hash (#1207, #1234, #1299)
  • New flags for pool metadata: --pool-metadata-file, used in metadata-hash command, and --metadata-url, --metadata-hash, used in the pool registration certificate command registration-certificate (#1234)
  • New flags for pool relays --multi-host-pool-relay, --single-host-pool-relay, --pool-relay-port in pool registration certificate command registration-certificate (#1282, #1296)
  • New command convert-itn-key to convert ITN keys (#1070, #1136)
  • New command txid to get the transaction id of a transaction body (#1231)

Improvements

  • Adjusted logging verbosity defaults (#1225)
  • Added logging of warnings and alerts for certificate expiry (#1228)
  • Added reporting number of missed opportunities to make blocks in the live view (#1202)
  • Allowed overriding the hostname using the environment variable CARDANO_NODE_LOGGING_HOSTNAME (#1278)
  • Changed timeouts for chain synchronisation to be drawn from a Praos-specific distribution (#2249)
  • Improved KeepAlive network mini-protocol (#2230) for apps with scheduled stop
  • Added support for restarting mini-protocols (#2205, #2221, #2286)
  • Adjusted and simplified the block fetch calculation for determining the current mode - deadline mode or bulk sync mode (#2267)
  • Shelley ledger changes:
    • Improved track of historical pool performance for pool ranking (#1565)
    • Added support of pool ranking with hypothetical amount to delegate (#1543)
    • Improved genesis JSON support in the ledger (#1534, #1536)
    • Added genesis JSON support for initial stake pools and delegation (#1552)
    • Added benchmarks and optimisations (#1527, #1566)
    • Updated the formal specification to cover MIR certificates drawing from the treasury (#1526)
    • Updated the design specification address terminology, and multi-sig (#1547, #1554)
    • Updated the design specification on stake pool metadata (#1507)
  • ⚠️ Simplified the Docker image usage: cardano-node is used now as the entry-point, aligning with the existing interface of the underlying service, and removing the convention of mounting volumes into specified directories. As a result, previously pre-set arguments including, but not limited to --config or --socket-path, now need to be passed at runtime based on user specific configuration. See the diff and inline description for more info. The quickstart mode of passing a NETWORK environment is not impacted by this change" (#1317). This is a breaking change. Customised (other than testnet and mainnet) Docker image build may fail

Shelley breaking changes ⚠️

  • Changed the ledger state dump query to return the whole state (#2288)
  • Changed address hashes to be 224 bit, according to the design spec (#1549)
  • Updated to the latest VRF API changes (#1527)
  • Removed the decaying deposits feature. Deposits are returned in full (#1512)
  • Removed unnecessary pool relay port number override in DNS SRV case (#1570)

Resolved issues

  • Fixed a minor regression in the logging so all tracers are configurable (#1192)
  • Fixed reporting of git revision in cardano-node --version command (#1263)
  • Fixed genesis JSON conversion of fractional values to preserve precision (#1569)
  • Fixed the query stake-address-info to accept stake addresses (#1197, #1194)
  • Fixed return exit code for transaction submission failures (#1226)

Known Issues

Shelley testnet-specific Issues

  • Incorrect genesis settings may result in the node not connecting as expected
  • There are still a number of performance issues that need to be addressed
  • There are various issues with logging and monitoring

Documentation

Platforms

Sign off

Role Approval
Technical Lead ✔️
QA Engineer ✔️
Ops ✔️
Release Manager ✔️
cardano-node - Cardano Node 1.13.0

Published by tatyanavych over 4 years ago

Cardano Node 1.13.0

This release completes the development of many core Shelley features and provides basic Shelley functionality for stake pools and delegation. It delivers new CLI commands for obtaining Shelley stake pool information and creating MIR certificates, a new network KeepAlive mini-protocol. It also prepares the Cardano blockchain for the Byron-to-Shelley hard fork operational change that will deactivate Byron mode and will enable the Shelley decentralised mode. This release also includes improvements in existing Shelley CLI commands, as well as in KES and VRF cryptographic key processing, Praos chain selection and hard fork implementation. In addition, logging, tracing, error messages and documentation have been improved, and a few outstanding issues have been fixed, notably, an issue that was causing high CPU usage on MacOS.

The Shelley features have been pre-released for public testing and review on the Cardano Shelley Testnet.
They are not available in the Byron mode, and are, therefore, deactivated on the Cardano mainnet.

Deployed on the Shelley testnet on 5 June 2020.
Deployed on the mainnet on 9 June 2020.

New features

  • New commands in the node CLI:
    • to query stake addresses, balance and delegation (#1053, #1129)
    • to get the stake pool id (#1069)
    • to create MIR certificates (#1075)
  • New KeepAlive network mini-protocol (#2175)
  • New monitoring metric for KES key periods, including remaining ones (#1030, #1144)
  • New local ledger state query to get the current state of stake addresses, namely, their reward account balance, and current delegation choice (if any) (#2161)

Improvements

  • Changed the Shelley CLI command and flag names to be more consistent (#1068)
  • Improved logging for mempool transaction validation failures (#1035)
  • Added logging of the epoch number as well as the slot number (#1108)
  • Fixed logging of node information on startup (#1122)
  • Extended tracing for benchmarking analysis (#1091)
  • Improved human readable error messages for Shelley commands (#1021)
  • Improved error message for transaction input parser errors (#1066)
  • Updated Making Shelley blockchain from scratch documentation (#1062)
  • Improved hard fork implementation (#2139, #2150, #2151, #2152, #2158, #2165, #2177, #2183, #2192, #2199)
  • Prepared for the Byron-to-Shelley hard-fork (#2163, #2145, #2182, #2185, #2187)
  • Changed the Praos protocol chain selection rule to be deterministic based on the chain values (using the leader VRF key) rather than relying on the order of arrival; this reduces network node congestion (#2195)
  • Evolved the KES keys eagerly rather than on-demand (#2160)
  • Distinguished cases when a node should be slot leader, but cannot forge (#2169, #2171, #2172, #2176, #2193)
  • Improved tracing of block forging, and forge errors (#2168, #2170)
  • Increased the header size estimate to avoid ingress queue overruns (#2206)
  • Shelley ledger changes:
    • Provided delegators a whole epoch to react to pool parameter changes (#1494)
    • Included the VRF key in the hash-to-genesis delegation mapping (#1495, #1501)
    • Changed MIR certificates so they can now draw from either the treasury, or reserves (#1513)
    • MIR certificates are witnessed by the genesis delegates, not genesis keys (#1513)
    • Dropped the use of the "set" tag from the CDDL (#1505)
    • Improved to use the right binary format for stake addresses (#1491)
    • Included the network id in addresses (by value, not type) (#1487)
    • Documented the network id and binary format in the specification (#1500)

Resolved issues

  • Fixed high CPU usage on MacOS (#770)
  • Fixed override order for the node socket: first CLI, then config file (#1124, #1145)
  • Fixed error handling on genesis file parse errors (#1134)
  • Fixed various issues with Live View (#1076, #1126)
  • Fixed the parsing of the pool margin in pool registration certificates (#1063, #1110)
  • Fixed mempool issues (#1498, #2006)
  • Fixed long thread delays on 32bit systems more widely (#2135, #2162)
  • Fixed Praos stability window calculations (#2201, #2202, #2219, #2220)
  • Fixed off-by-one error in pool retirement epoch in both, Shelley ledger specification and code (#1511)

Known Issues

  • Incorrect constant value for epochSlots in validate-cbor command (#848)
  • cardano-cli does not have description of the new, Shelley relevant, commands (#1071)

Shelley testnet-specific Issues (not mainnet)

Documentation

Platforms

  • Linux 64-bit, Windows 64 bit

Sign off

Role Approval
Technical Lead ✔️
QA Engineer ✔️
Ops ✔️
Release Manager ✔️
cardano-node - Cardano Node 1.12.0

Published by tatyanavych over 4 years ago

Cardano Node 1.12.0

This release includes the integration of the majority of the Shelley features within the node and corresponding support in the command line tool. This includes the ability:

  • to start a blockchain from genesis in Shelley mode;
  • to create and use Shelley payment addresses and stake addresses;
  • the ability to register and delegate to stake pools; and
  • the ability to create blocks using stake pools.

The Shelley features are not available in the Byron mode, and so, are deactivated on the Cardano mainnet. They are pre-released and being tested on the Cardano Shelley Testnet.

In addition, logging, tracing and error messages have been improved, and a few issues have been fixed.

Deployed on the mainnet on 28 May 2020.

New features

  • cardano-cli has been extracted into a separate cardano-node sub-component (#819). It provides a command line interface for various low-level node-related functionality. Byron and Shelley relevant commands are distinguished by its prefixed byron and shelley command keywords. Documentation on constructing a Shelley chain from scratch (#893, #932, #1000) has been added. The following new commands were implemented:
    • generate Shelley KES and VRF keys (#816)
    • generate Shelley address keys (#824)
    • create Shelley genesis (#852, #864, #908, #926, #929)
    • key-gen commands for various Shelley keys (#846, #870)
    • commands for Shelley address construction (#870, #872, #887)
    • Shelley transaction sign command (#894, #900)
    • Shelley transaction submission command (#904)
    • node query commands (#880, #884, #903, #918, #920, #933, #994, #1008, #1016)
    • commands to create stake address certificates (#890, #919, #967)
    • commands to create stakepool certificates (#922)
    • system commands to update genesis delegations and create MIR certificates (#895)
    • calculate the minimum fee for a transaction (#931)
    • view the content of the various binary files (#915)
    • create Shelley protocol param updates (#950, #1004)
    • Byron update proposal vote creation and submission (#804)
    • version command and --version flag, with git revision (#959)
  • Added new cardano-client library in the network component to provide a simpler node client API (#2109)
  • Added support of initial Shelley protocol parameters in the Shelley genesis (#906)
  • Added new --shutdown-on-slot-synced flag for the benchmarking and CI tests (#776)
  • Added hard fork support (#2034, additional PRs in the Changelog)

Improvements

  • CLI commands that talk to the node no longer require the node config file (#901, #907, #917, #913, #928)
  • Improved human readable error messages for CLI Byron commands (#1003)
  • Added systemd socket activiation support (#856, #1022, #1995)
  • systemd support on Linux is now optional (#911)
  • Improved FetchDecision tracing output (#863)
  • Improved suppression of frequent repeated log messages (#842)
  • Added logging of the node's network magic number on startup (#921)
  • Adjusted configuration to keep metrics out of the log files (#930)
  • Added trace of the node uptime (#892)
  • Added trace of the number of transactions processed and blocks forged (#937, #943)
  • Added trace for race of the current set of node peers for the live view (#1060
  • Added Darwin (macOS) support for OS metrics in the "live view" (#785)
  • Improved DB file locking behaviour (#1906, #2031, #2033)
  • Added memory leak detection for Shelley transactions for mempool (#2010)
  • Fixed the construction of the Shelley initial UTxO (#2038, #2046)
  • The Shelley protocol parameters are included into the Shelley genesis (#2040)
  • Used an improved more realistic KES implementation (#2092)
  • Provided Shelley-compliant handling of OCert issue number in chain selection (#2108)
  • Provided interface for node clients with minimal configuration (#2050, #2056)
  • Added whole or filtered options for UTxO in local state query (#2016, #2110)
  • Improved calculation of transaction sizes (#2114, #2115, #2116)
  • Used TCP_NODELAY for faster block relaying (#2069)
  • Added ability to shut down transaction submission protocol cleanly by receiving side (#2090)
  • Made protocol handlers dependent on the negotiated protocol version (#2090)
  • Exposed bits of the ledger state needed for the node live view (#772)
  • Added local state query for dumping a whole ledger state for test and debug (#2113)
  • Shelley ledger changes:
    • Relay nodes' IP/DNS are included in pool registration certificates (#1391, #1397, #1398, #1413)
    • Removed the active slot coefficient from the set of parameters that could be changed via on-chain protocol parameter updates (#1394)
    • Simplified specification and implementation of transaction size calculation (#1405)
    • Adjusted the definition of total stake (#1428, #1437)
    • Added support for minimum UTxO, aka non-decaying deposits (#1447)
    • Finalised decision on final network Id number assignments in address format (#1465)
    • Documented specific cryptographic choices in the specification appendix (#1389)
    • Added options to local state query for querying the UTxO, either by all, or by address (#1402, #1422)
    • Completed the support for caching serialised representation (#1380, #1408)
    • Improved handling of cryptographic key roles (#1410)
    • Improved details in ledger validation error reports (#1442, #1458, #1463, #1469, #1470, #1476)
    • Added initial support for Byron addresses in the pre-Shelley state (#1473)

Resolved issues

  • Fixed various live view issues(#964, #965, #974)
  • Fixed structured tracing of transactions within adopted blocs for analysis tools (#993)
  • Fixed handling of operational certificates for KES validity periods (#2092, #2094)
  • Fixed long thread delays on 32bit systems (#2095)
  • Fixed transaction signing in specification and implementation to sign the body hash, but not body (#1418)
  • Fixed handling of the overlay schedule when there are no BFT nodes (#1401)

Known Issues

  • Some Windows environments may prevent the creation of the node's named pipe (#754)
  • Incorrect constant value for epochSlots in validate-cbor command (#848)

Documentation

Platforms

  • Linux 64-bit, Windows 64 bit

Sign off

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