Cardano Node 1.18.0
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 hashingnode key-hash-VRF
commands (#1407) - Changed output format to JSON for the address
info
(#1426) andquery 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
andstpools
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
withmicrolens
(#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
- Cardano Node documentation
- Cardano CLI
- Internal API docs for ledger, consensus and network
- Making a Shelley blockchain from scratch
- Shelley testnet tutorial
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 | ✔️ |