cardano-node

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

APACHE-2.0 License

Stars
3K

Bot releases are visible (Hide)

cardano-node - Cardano Node 1.35.7

Published by disassembler over 1 year ago

Node 1.35.7 is a bug fix release that addresses an issue with the legacy network stack connecting to a P2P relay. SPOs are recommended to deploy this version on all their nodes.

IMPORTANT: P2P on mainnet is only intended to be ran on a single relay at this time. Continue to run any other relays with P2P disabled using the legacy topology.

NOTICE Minimum resources were adjusted in this release due to chain growth.

Please note that this version contains no breaking changes

Known Issues

  • Shelley ledger era Tx body in CDDL format is not supported by some CLI commands (#3688)

  • Cardano-cli computes wrong collateral return output for multiple occurrences of collateral inputs (#4744)

  • A hot -> warm -> hot busy demotion / promotion cycle is not fixed in this release (#4385)

  • cardano-submit-api can't handle transactions (#4829)

  • Please see here for other known issues. None of these is considered to be a blocker.
    They will be addressed in future releases.

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)
  • 24GB of RAM
  • 150GB of free storage (250GB recommended for future growth)
  • 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

NONE

NONE

NONE

  • Fixed interoperability bug in the legacy (non-p2p) networking stack exposed by p2p nodes (input-output-hk/ouroboros-network#4467).

NONE

NONE

NONE

Sign off

Role Approval
Cardano Head of Engineering ✔️
Cardano Head of Product ✔️
Test Engineer ✔️
Site Reliability Engineer ✔️
Release Engineer ✔️
cardano-node - Cardano Node 1.35.6

Published by disassembler over 1 year ago

Node 1.35.6 is a release adding P2P support without need of development network protocols when EnableP2P is set to true. The legacy topology is still supported as a parallel mode of operation. This release is based on the release/1.35 branch so has no changes not related to P2P included.

IMPORTANT: P2P on mainnet is only intended to be ran on a single relay at this time. Continue to run any other relays with P2P disabled using the legacy topology.

P2P Configuration

To run a node in P2P mode set EnableP2P to true (the default is False) in the configuration file. You will also need to specify the topology in a new format which is described here. There are a few new tracers and configuration options which you can set (listed below by component):

Outbound Governor

The outbound governor is responsible for satisfying targets of root peers, known (cold, warm and hot), established (warm & hot) and active peers (synonym for hot peers) and local root peers. The primary way to configure them is by setting the following options:

  • TargetNumberOfRootPeers (default value: 100) - a minimal number of root peers (unlike other targets this one is one sided, e.g. a node might have more root peers
  • TargetNumberOfKnownPeers (default value: 100) - a target of known peers (must be larger or equal to TargetNumberOfRootPeers)
  • TargetNumberOfEstablishedPeers (default value: 50) - a target of all established peers (including local roots, ledger peers)
  • TargetNumberOfActivePeers (default value: 20) - a target for hot peers which engage in the consensus protocol

Let us note two more targets. In the topology file you may include local root peers. This is a list of groups of peers, each group comes with its own valency. The outbound governor will maintain a connection with every local root peer, and will enforce that at least the specified number of them (the valency) are hot. Thus the TargetNumberOfKnownPeers , TargetNumberOfEstablishedPeers and TargetNumberOfActivePeers must be large enough to accommodate local root peers.

The following traces can be enabled:

  • TracePeerSelection (by default on) - tracks selection of upstream peers done by the outbound-governor. Warm peers are ones with which we have an open connection but don't engage in consensus protocol, hot peers are peers which engage in consensus protocol (via chain-sync, block-fetch and tx-submission mini-protocols), cold peers are ones which we know about but the node doesn't have an established connection. Note that the notions of hot, warm and cold are only related to usage of initiator sides of mini-protocols in a connection (which can be either inbound or outbound).
  • TracePeerSelectionCounters (by default on) - traces how many cold / warm / hot / local root peers the node has, it's also available via ekg.
  • TracePeerStateActions (by default on) - includes traces from a component which executes peer promotion / demotions between cold / warm & hot states.
  • TracePublicRootPeers (by default off) - traces information about root / ledger peers (e.g. ip addresses or dns names of ledger peers, dns resolution)
  • DebugPeerSelectionInitiator and DebugPeerSelectionInitiatorResponder (by default off) - a debug tracers which log the information about current state of the outbound governor.

At this point haddock documentation of the outbound governor is available.

Inbound Governor

The inbound governor is maintaining responder side of all mini-protocols. Unlike the outbound governor it is a purely responsive component which reacts to actions of remote peer (its outbound governor).

  • TraceInboundGovernor (by default on) - traces information about inbound connection, e.g. we track if the remote side is using our node as warm or hot peer, traces when we restart a responder.
  • TraceInboundGovernorCounters (by default on) - traces number of peers which use the node as cold, warm or hot (which we call remote cold, remote warm or remote hot). Note that we only know if a peer is in the remote cold state if we connected to that peer and it's not using the connection. This information is also available via ekg.
  • TraceInboundGovernorTransitions (by default on) - a debug tracer which traces transitions between remote cold, remote warm and remote hot states.

The inbound governor is documented in The Shelley Networking Protocol (section 4.5).

Connection Manager

Connection manager tracks the state of all tcp connections, and enforces various timeouts, e.g. when the connection is not used by either of the sides. The following traces are available:

  • TraceConnectionManager (by default on) - traces information about new inbound or outbound connection, connection errors.
  • TraceConnectionManagerCounters (by default on) - traces the number of inbound, outbound, duplex (connections which negotiated P2P mode and can use a connection in full duplex mode), full duplex (connections which run mini-protocols in both directions, e.g. at least warm and remote warm at the same time), unidirectional connections (connections with non p2p nodes, or p2p nodes which configured themselves as initiator only nodes).
  • TraceConnectionManagerTransitions (by default on) - a low level traces which traces connection state changes in the connection manager state machine.

The connection manager is documented in The Shelley Networking Protocol (section 4).

Ledger Peers

Ledger peers are the relays registered on the chain. Currently we use square of the stake distribution to randomly pick new ledger peers. You can enable TraceLedgerPeers (by default off) to log actions taken by this component.

Server

The accept loop. You can enable TraceServer to log its actions or errors it encounters (by default it is off, however we suggest to turn it on) .

Please note that this version contains no breaking changes

Known Issues

  • Shelley ledger era Tx body in CDDL format is not supported by some CLI commands (#3688)

  • Cardano-cli computes wrong collateral return output for multiple occurrences of collateral inputs (#4744)

  • A hot -> warm -> hot busy demotion / promotion cycle is not fixed in this release (#4385)

  • Please see here for other known issues. None of these is considered to be a blocker.
    They will be addressed in future releases.

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)
  • 16GB of RAM
  • 120GB of free storage (200GB recommended for future growth)
  • 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

NONE

  • Report consensus initialisation errors (#4015).

NONE

  • Split WarningDevelopmentNetworkProtocolVersions into WarningDevelopmentNodeToNodeVersions and WarningDevelopmentNodeToClientVersions (#4691).
  • Provided NodeToNodeVersion and NodeToClientVersion JSON instances (#4691).
  • Modified P2PWarning, it now sais: You are using an early release of peer-to-peer capabilities, please report any issues. (#4691).
  • Removed not needed P2PWarningDevelopmentNetworkProtocols (#4691).
  • New p2p topology file format (#4559).
  • Fixed warm -> cold demotion (input-output-hk/ouroboros-network#4163).
  • Added PeerGSV to SendFetchRequest (input-output-hk/ouroboros-network#4167).
  • Added TraceDemoteLocalAsynchronous (input-output-hk/ouroboros-network#4127).
  • Fixed issue input-output-hk/ouroboros-network#3968).
  • Fixed issue input-output-hk/ouroboros-network#4064).
  • Report exceptions thrown when configuring a socket in the subscription component (non p2p) (nput-output-hk/ouroboros-network#3970).
  • Configure socket passed through systemd socket activation (input-output-hk/ouroboros-network#3977).
  • Reinitialise dns library on Windows (input-output-hk/ouroboros-network#3968).
  • Interpolation of peer metrics (input-output-hk/ouroboros-network#3915)).

NONE*

NONE

NONE

Sign off

Role Approval
Cardano Head of Engineering ✔️
Cardano Head of Product ✔️
Test Engineer ✔️
Site Reliability Engineer ✔️
Release Engineer ✔️
cardano-node - Cardano Node 1.35.5

Published by disassembler over 1 year ago

Node 1.35.5 is a maintenance release addressing a fix in ledger internal data structures.

Please note that this version contains no breaking changes

Known Issues

  • Shelley ledger era Tx body in CDDL format is not supported by some CLI commands (#3688)

  • Cardano-cli computes wrong collateral return output for multiple occurrences of collateral inputs (#4744)

  • Please see here for other known issues. None of these is considered to be a blocker.
    They will be addressed in future releases.

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)
  • 16GB of RAM
  • 120GB of free storage (200GB recommended for future growth)
  • 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

NONE

*NONE

  • Fixes internal data structure representation

NONE

NONE*

NONE

NONE

Sign off

Role Approval
Cardano Head of Engineering ✔️
Test Engineer ✔️
Site Reliability Engineer ✔️
Release Engineer ✔️
cardano-node - Cardano Node 1.35.4

Published by disassembler almost 2 years ago

Node 1.35.4 supports the use of SECP256K1 elliptic curves via new Plutus primitives at protocol version 8. It also includes some CLI improvements, including changing the default ledger era to Babbage for transaction commands.

Please note that this version contains breaking changes, as listed below:

Breaking Changes

  • With this version, all transactions are created in the Babbage ledger era format if --<ledger-era>-era is not passed as an option.

Known Issues

  • Shelley ledger era Tx body in CDDL format is not supported by some CLI commands (#3688)

  • Please see here for other known issues. None of these is considered to be a blocker.
    They will be addressed in future releases.

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)
  • 16GB of RAM
  • 120GB of free storage (200GB recommended for future growth)
  • 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

  • Update Plutus to version 1.0.0.1 to enable SECP256K1 primitives at protocol version 8
    Benchmark results for SECP256K1 Primitive
  • Update cardano-crypto-class to version 2.0.0.0.1 to add SECP256K1 crypto primitives
  • Update block header advertised version in babbage to 8.0
  • The maximum major protocol version of the Cardano protocol is now correctly
    based off of Babbage instead of Alonzo.

NONE

NONE

  • Improve memory efficiency of query ledger-state command (PR4205)
  • Update transaction build command to automatically calculate total and return collateral values(PR4198)
  • Allow reading and writing text envelope files from pipes(PR4384)
  • Update transaction view command to render inline datums and reference inputs (PR4089)
  • Switch default era in cardano-cli from Alonzo to Babbage (PR4485)
  • For the transaction build and transaction build-raw commands, always use ledger's CDDL format for transaction body creation.
    Remove the cli-format flag and make --cddl-format deprecated and hidden
    (PR 4303 PR 4617)
  • Allow reading signing keys from a pipe (PR 4342)
  • Expose Key interface via Cardano.Api.Shelley (PR4048)

  • Append, not prepend change output when balancing a transaction (PR4343)

  • Expose convenience functions executeQueryCardanoMode, determineEra, constructBalancedTx and queryStateForBalancedTx (PR 4446)

NONE

Sign off

Role Approval
Cardano Head of Engineering ✔️
Test Engineer ✔️
Site Reliability Engineer ✔️
Release Engineer ✔️
cardano-node - Cardano Node 1.35.3

Published by LaurenceIO about 2 years ago

Node 1.35.3 fixes some important issues with previous versions of the node and provides some CLI enhancements. The node provides full Vasil era capabilities.

Node 1.35.3 adds important functionality that will enable the use of new Plutus capabilities
following the Vasil hard fork, including node and CLI support for:

It also includes significant improvements to the logging/monitoring, and networking codebases, as well as significant memory and time performance improvements, including the first implementation of diffusion pipelining, and reduced VRF checks, as well as several improvements to the ledger.

Please note that this version contains breaking changes, as listed below, specifically with respect to operational certificates
on the CLI. Stake pool operators may need to update their management scripts to accommodate this change.

Breaking Changes

  • With this version, the ledger state will need to be replayed from the genesis block, meaning that the initial synchronisation may be slow. Users should account for this when deploying the node.
  • Restricted opcert issue number increment, as of Babbage. Previously op cert issue numbers could be anything, provided it was larger than previously used numbers. Now the op cert counter must be exactly one more than the previously used op cert.
  • The decentralisation ('d') updatable protocol parameter has been removed, as of Babbage. It will no longer be possible to change this from its current setting (fully decentralised).
  • Bugfix: transaction validity intervals will actually be limited, as of Babbage.

Known Issues

  • Shelley era Tx body in CDDL format is not supported by some CLI commands (#3688)

  • Please see here for known issues.

None of these issues are considered to be blockers for the mainnet hard fork;
they will be addressed in future releases.

Technical Specification

  • An Intel or AMD x86 processor with two or more cores, at 1.6GHz or faster (2GHz or faster for a stake pool or relay)
  • 16GB of RAM
  • 100GB of free storage (150GB recommended for future growth)
  • 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

  • RTS workaround converting SIGTERM into SIGINT (#3641)
  • Install a dummy SIGHUP handler for non p2p mode (#3896)
  • Add --shutdown-on-slot-synced test and ensure ExitSuccess (#3670)
  • cardano-node: implement --shutdown-on-block-synced (#3932)
  • Update dependencies and pins. (#3700)
  • Propagate protocol in block type (#3818)
  • Create VRF signing key file with correct permissions (#1948)
  • Fix for eliding of the ChainDB tracer (#4038)
  • Tracing infra updates:
    • Configuration structure rework, for better UX: (#3867)
    • Rework implementation to eliminate prototypes from trace definitions (#3731)
    • Fix tracing config to allow selection of the new tracing system (#3655)
    • Register GC metrics. (#3858)
    • Metrics are no longer impacted by severities and frequency limits (#3876)
    • Porting ekg-direct metrics to new-tracing (#3873)
    • Node state data point extensions and fixes: (#3854, #3656)
    • Old peers tracing was erroneously called in new tracing (#3880)
    • Remove unused constraints from TraceConstraints (#3822)
    • Properly init trace forwarding when needed. (#3634)
  • cardano-tracer:
    • Format fixes for forwarded traces: (#3640, #3654, #3660, #3671).
    • Test fixes: (#3714)
    • Remove symlink, fix logs cut off. (#3930)
    • Fix bug with empty line (#3962)
    • RTView, a web performance dashboard, as part of cardano-tracer (#3852)
    • RTView: CPU usage (GC + App) as pct, https by default, errors export (#3934)
  • Documentation updates;
    • Update Haskell installation method and mention libsecp256k1 (#3796)
    • Update cardano-node-cli-reference.md (#3630)
    • Documentation improvements for new tracing. (#3834, #3842)
    • Recommended system requirements. (#4005)
    • Further explain the libsodium installation (#4000)
  • Various workbench, build, testing and benchmarking infrastructure improvements. (#3638, #3643, #3705, #3789, #3812, #3824, #3941, #3851)
  • Bump block header protocol version (#4260, #4211)
  • Update dependencies (#4242, #4220, #4146)
  • The obsolete node check in the new 'Praos' protocol was not performing the check that was intended. It is supposed to check that the current protocol version is no greater than the max major protocol version. It was instead checking that the max major protocol version was not greater than the protocol version listed in the block header (which is currently not supposed to have any semantic meaning, and is used to manually check the readiness of the network for a hard fork). Note that this mistake is only in the Praos protocol, not in TPraos. The consequence of this incorrect check is that nodes will not properly halt after a hard fork when they do not have the required software for the hard fork. (#3891)
  • Block diffusion pipelining (#3688, #3742, #3752, #3688)
  • Moving from two VRF checks to one, as of Babbage (#3595)
  • Restricted opcert issue number increment, as of Babbage (#3595)
  • New function getOpCertCounters (#3781)
  • Bugfix: transaction validity intervals will actually be limited, as of Babbage (#3754)
  • Simplification: Babbage will run proper Praos protocol instead of Transitional Praos, since d will remain at 0 (#3595)
  • protocol: add PraosProtocolSupportsNode class (#3758)
  • Provide an EpochInfo that can fail to ledger. (#3770)
  • Add COMPLETE pragma for FallingEdge pattern synonym (#3766)
  • Simplification: remove stale handshake versions (#3696, #3699)
  • Implementing the Babbage era. (#2560, #2599, #2602, #2613, #2618, #2619, #2629, #2633, #2643, #2645, #2654, #2661, #2664, #2666, #2678, #2681, #2689, #2694, #2700, #2701, #2702, #2708, #2710, #2711, #2712, #2716, #2717, #2723, #2727, #2751, #2766, #2789, #2799, #2807, #2813, #2814, #2815, #2816, #2819, #2821, #2822, #2848, #2852)
  • Fix a bug in the computation of the exponential function via Taylor series approximation. This bug was not ever exhibited in code, but the fix is useful for future resilience. (#2591)
  • Add missing protocol parameters to the Alonzo CDDL spec. (#2590)
  • Work to separate the ledger from the TPraos protocol. (#2575, #2605, #2628, #2630, #2711, #2748, #2763, #2776)
  • For Plutus V2, encode the cost model in the integrity hash using a definite length list. (#2589)
  • Additional testing across all eras. (#2338, #2598, #2620, #2656, #2674, #2695, #2696, #2698, #2747, #2758, #2760, #2790, #2817)
  • Various internal refactorings and small fixes. (#2596, #2597, #2600, #2603, #2606, #2608, #2611, #2621, #2622, #2623, #2624, #2639, #2644, #2650, #2660, #2671, #2706, #2709, #2721, #2722, #2733, #2735, #2752, #2755, #2768, #2769, #2773, #2777, #2795, #2803)
  • Add a check to ensure that only positive transfers are allowed in MIR certs. (#2579)
  • Various work to reduce the memory usage of a running ledger. (#2584, #2592, #2607, #2609, #2616, #2625, #2637, #2675, #2707, #2759)
  • Various work to increase the performance of the ledger. (#2632, #2636, #2667, #2668, #2699, #2731, #2750, #2761, #2767, #2771, #2772, #2801, #2804)
  • Add JSON serialiser/deserialiser for Alonzo genesis. This is not used in the ledger, but may be used by the node. (#2627)
  • Add two new events related to rewards - DeltaRewardEvent and TotalRewardEvent. The former gives incremental rewards as they are being computed, and the latter gives a report of the result at the end of computation. (#2615, #2647, #2673, #2690)
  • Add an additional reward event, RestrainedRewards, which contains details of any rewards which are subsequently not paid out owing to e.g. deregistered addresses. (#2726)
  • Add an event which yields the stake distribution at the time where it is snapshotted. (#2652)
  • Add two new events related to Plutus script execution. SuccessfulPlutusScriptsEvent is emitted in the case of no failures where IsValid is true. This event contains all the information needed to rerun all the scripts in a transaction. In the case of IsValid being false and failures being present, two events are emitted; the preceding event with successful scripts and a FailedPlutusScriptsEvent with the details for failing scripts. (#2670)
  • Add an event TotalAdaPotEvent which is emitted on the epoch boundary and reports the size of the various ADA pots (reserves, treasury, reward pot etc.) (#2797)
  • Disallow the spending of Byron outputs in transactions also spending from Plutus V2 locked outputs. Plutus V1 scripts could be spent in the same transaction as Byron outputs, but the Byron outputs would not be visible to Plutus. (#2617)
  • Fix a memory leak in the tests. (#2648)
  • Add a reference for the cost model keys. (#2635)
  • Specify how seeds are computed, and how a slot is converted to a seed, in the
    Shelley specification. (#2626)
  • Significant improvements to the benchmarking suite. (#2668, #2669, #2699)
  • Fix the pulsing size used for incremental computation of rewards. This should result in a more even spread of load over the epoch. (#2676)
  • Prune the unused cardano-ledger-example-shelley package. (#2693)
  • Add logic to the STS rules to run certain things only if no failures have yet been accumulated. This is useful to e.g. avoid evaluating Plutus scripts in places where the transaction is broken. (#2679, #2847)
  • Hide the CostModel constructor. The appropriate way to construct a CostModel is using costModelParamsToCostModel. (#2703, #2730)
  • Support querying the set of UTxO entries which are required to process a block. This is an important feature required for moving the UTxO onto disk. (#2715)
  • Add support for stashing the AVVM addresses at the Byron/Shelley transition. This is slightly annoying work to enable on-disk UTxO, since the AVVM addresses must be removed on the Shelley/Allegra boundary, but by the time UTxO is on disk (from Shelley onwards) we disallow full queries over the UTxO. (#2728)
  • Remove ledger-based validation of Datum. This is now done entirely by Plutus on deserialisation. (#2757)
  • Add documentation on all ledger events. This can be found at:
    https://github.com/input-output-hk/cardano-ledger/blob/master/docs/LedgerEvents.md (#2778)
  • In the Alonzo era, extend the epoch info provided by Plutus to allow time translation arbitrarily into the future. This pertains to a bug in consensus which was allowing arbitrarily distant translation only in the last era. This bug has been fixed, but the ledger must preserve the previous behaviour in theexisting era. (#2785)
  • Translate legacy cost mode parameter names in the JSON deserialiser. The deserialiser now does not care about the names, only about the ordering of the parameters. This is consistent with how cost model parameters are treated in update proposals. (#2792)
  • Ensure pure EpochInfo is not overused. (#2818)
  • Do not serialize empty txbody fields (#2863)
  • Remove empty SuccessfulPlutusScriptsEvent events (#2861)
  • Disable staking Ptr optimization (#2875)
  • integrity hash not needed for all ref scripts (#2878)
  • Fix the alonzo UTxO rule to use alonzo minfee function (#2938)
  • Ensure Babbage TxOut decoder can't fail due to malformed Ptr. This bug manifests itself if a node is running in the Babbage era and shuts down, it has to re-sync from genesis when started back up. (#2897)
  • Update plutus (#2917)
  • Multinode Diffusion Simulation (#3497)
  • Trace exceptions thrown by inboundGovernorLoop (#3591)
  • Added prop_timeouts_enforced (#3532)
  • Connection Manager tests using IOSimPOR (#3632)
  • Don't overwrite localrootpeers lookup results (#3641)
  • Extract tcp_info for mux tcp bearer (#3648)
  • IOSim MonadFix instance (#3647)
  • io-classes: added strict versions of traceTVar & traceTMVar (#3654)
  • Platform independent TCPInfo trace (#3660)
  • Connection manager transition order test using IOSimPOR (#3640)
  • Removed ST effects from IOSimPOR (#3662)
  • RootPeersDNS: garbage collect DNS results && test single source of truth (#3643)
  • Enabled accept errors in net-sim testing (#3668)
  • Update supported protocol versions of cardano-ping" (#3700)
  • Add yield to MonadFork (#3713)
  • Diffusion Tests (#3619, #3629, #3633, #3636, #3707, #3727, #3728, #3761)
  • cardano-ping: fix misplaced unless quiet (#3729)
  • Import getMonotonicNSec from base rather than via FFI (#3735)
  • connection-manager: mini-protocol params (#3606)
  • Remove TxSubmission V1 and all node-to-node versions smaller or equal to NodeToNodeV_6 (#3696)
  • Remove NodeToClientV_8 and below (#3699)
  • Relax overly strict disconnection rule for known-invalid blocks (#3726)
  • Moved io-sim & typed-protocols to new repositories (#3747)
  • Fix NodeToNodeVersion for Babbage and P2P. (#3775)
  • Various changes (#3736)
  • Documentation updates;
    • Update chain-sync documentation (#3594)
    • Fixed typos in network-mux (#3666)
    • Reflect recent nix build changes in documentation links. (#3651)
    • Fix typos (#3635)
  • Add Vasil hardfork to cardano-api and cardano-cli (#3765)
  • Reference script integration (#3953)
  • Wire up remaining Plutusv2 reference script types (#4034)
  • Add friendly printing of transactions (envelopes) with signatures (#3617)
  • cardano-cli transaction view: Add friendly certificate printing (#3377)
  • cardano-cli query kes-period-info: Always display metrics (#3683)
  • JSON format for leadership schedule (#3687)
  • Vasil cardano-cli update (#3810)
  • Prevent return collateral from including reference scripts and datums (#3850)
  • kes-period-info property test (#3718)
  • Extend deserialiseFromRawBytesHex to produce error description (#3304)
  • add genesis create-cardano command (#3832)
  • Propagate protocol in block type (#3818)
  • Fix kes period info command (#3945)
  • Create VRF signing key file with correct permissions (#1948)
  • Set local encoding to UTF-8 in cardano-cli (#4018)
  • Update example-reference-script-usage.sh to also use inline datums (#4006)
  • Wire up simple reference scripts in cardano-cli (#4014)
  • Add read-only-tx-in-reference option to cardano-cli #(4042)
  • Update build and build-raw commands to accept simple reference minting scripts (#4087)
  • Fix query protocol-state (#4102)
  • Render reference script hashes when using --calculate-plutus-script-cost option (#4204)
  • Transaction build in any alonzo era when on babbage testnet (#4135)
  • Add Vasil hardfork to cardano-api and cardano-cli (#3765)
  • Reference script integration (#3953)
  • Wire up remaining Plutusv2 reference script types (#4034)
  • Add IsString (Hash BlockHeader) (#3619)
  • Make LedgerStateEvents a type alias (#3692)
  • Propagate protocol epoch state decode error (#3696)
  • Expose the tx mempool monitoring mini protocol in cardano-api (#3706)
  • Babbage functionality integration in cardano api Part 1 (#3803)
  • Remove unused package (#3816)
  • Add IsCardanoEra constraint to BlockInMode (#3665)
  • Update cardano-api's TxOut with inline datum (#3773)
  • Update cardano-api txout with reference scripts (#3779)
  • Implement return and total collateral in cardano-api (#3787)
  • Add reference transaction inputs to cardano-api (#3804)
  • Fix datum in tx and ref scripts (#3882)
  • Support the babbage era in the API function cddlTypeToEra (#3916)
  • Fix typo for TxWitness BabbageEra (#3961)
  • kes-period-info property test (#3718)
  • Extend deserialiseFromRawBytesHex to produce error description (#3304)
  • add genesis create-cardano command (#3832)
  • Propagate protocol in block type (#3818)
  • Create VRF signing key file with correct permissions (#1948)
  • Update example-reference-script-usage.sh to also use inline datums (#4006)
  • Restore deleted comment (#4044)
  • Do not require decentralization parameter in protocol parameters (#4051)
  • Fix leadership schedule for current on babbage (#4106)
  • Update build to allow all invalid scripts (again) (#4088)
  • Fix building of Alonzo transaction in Babbage era. (#4166)
  • Add utxoCostPerByte protocol parameter (#4141)
  • Babbage transactions for submit-api (#3979)
  • Fix for eliding of the ChainDB tracer (#4038)
  • Fix kes period info command (#3945)
  • Fix datum in tx and ref scripts (#3882)
  • Bugfix: transaction validity intervals will actually be limited, as of Babbage (#3754)
  • Fix a bug in the computation of the exponential function via Taylor series
    approximation. This bug was not ever exhibited in code, but the fix is useful
    for future resilience. (#2591)
  • Fix the pulsing size used for incremental computation of rewards. This should
    result in a more even spread of load over the epoch. (#2676)
  • [BUG] - Invalid snapshot DiskSnapshot followed by replaying from genesis (#4142)

Sign off

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

Published by LaurenceIO over 2 years ago

Node version 1.34.1 is a minor release that fixes two issues:

  1. the tracer configuration settings were not respected, meaning that tracing was always enabled;
  2. the node start time and basic information (version etc) were not recorded in EKG logs.

Known Issues

To avoid increased synchronisation times, we recommended that Windows users DO NOT upgrade to this node version. We recommend instead that they continue to run node 1.33.0. Future releases will address this issue which is specific to Windows.

Technical Specification

  • 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

  • Fix tracer config mismatches #3668
  • Fix #3664: Restore legacy metrics #3676

Sign off

Role Approval
Technical Lead ✔️
QA Engineer ✔️
Ops ✔️
Release Manager ✔️
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.30.1

Published by github-actions[bot] about 3 years ago

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)
  • 8GB of RAM
  • 10GB of free storage (20GB for a stake pool)
  • 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
Platform Block Production Relay Client (Desktop)
Linux ✔️ ✔️ ✔️
Windows ✔️
MacOS ✔️

Documentation

Changelogs

  • Correctly translate time for Plutus (from protocol version 6 onwards). (#2451)
  • Adding changes to the libsodium bindings. Those include a functional fix that makes it safe to call the function that generates a public key from a private key concurrently. We only use those functions in the CLI, in a non-concurrent manner, but they are exposed in cardano-api. This fix ensures that custom code written against cardano-api behaves as expected when run in multiple threads. Furthermore, there are performance improvements that should have a positive impact on sync times. (#236)

Sign off

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

Published by github-actions[bot] about 3 years ago

This release is an important update to the node that provides the functionality that is needed following the Alonzo hard fork.
All users, including stake pool operators, must upgrade to this version (or a later version) of the node.

The release includes features that will enable the use of the node in the Alonzo era, allowing the on-chain execution of Plutus scripts,
including extended CLI commands to support the construction of transactions that include Plutus scripts, datums and redeemers.
It incorporates several improvements, including a new transaction build command that calculates transaction fees and Plutus script execution units, and a new version of the query tip command that provides additional information, including node synchronisation progress. The transaction build command requires a local instance of the node in order to check Plutus script validity and to provide information that is used by the fee calculation. The Shelley specification has also been updated with respect to rewards calculation.

Note that this release changes the log format of traces configured by TraceChainSyncHeaderServer and TraceChainSyncClient . See #2746 for more detail.

  • When migrating to 1.29.0, SPOs need to make the following changes:
    • Download mainnet-alonzo-genesis.json file
    • Update mainnet-config.json file to include the following 2 lines:
  "AlonzoGenesisFile": "mainnet-alonzo-genesis.json",
  "AlonzoGenesisHash": "7e94a15f55d1e82d10f09203fa1d40f8eede58fd8066542cf6566008068ed874",

Node changes

  • Introduce support for running an Alonzo node. (#2642, #2649, #2657, #2738, #2759)
  • Add a separate genesis file for Alonzo. This must be present when forking to the Alonzo era. It provides initial configuration for new parameters required in Alonzo, such as cost models and pricing for Plutus scripts. (#2743, #2765)
  • Update the genesis hash mismatch error for Alonzo. (#3003)
  • Add cardano-tx-generator. This is a testing utility. (#2603)
  • Add additional capabilities to the tx generator:
    • Plutus. (#2853)
    • Fees and UTxO. (#2980)
    • Miscellaneous bugfixes. (#3015)
  • Introduce the trace-forward library, which is part of the replacement for the logging infrastructure. (#2960)
  • Add the difference in chain length to the AddedToCurrentChain and SwitchedToAFork traces. (#2678)
  • Additional block hashes added to TraceBlockFetchServerSendBlock, TraceForgedBlock, CompletedBlockFetch events. (#2710)
  • The various ChainSync server traces provide additional fields that help in debugging. Note that this entails a change to the log format. (#2746)
  • Various documentation updates. (#2681, #2689, #2713, #2837, #2857, #2860, #2870, #2874, #2914, #2933)
  • Various build, testing and benchmarking infrastructure improvements. (#2672, #2676, #2682, #2705, #2719, #2722, #2730, #2737, #2748, #2766, #2768, #2777, #2796, #2812, #2813, #2826, #2827, #2831, #2832, #2833, #2849, #2855, #2861, #2864, #2865, #2866, #2879, #2887, #2888, #2894, #2900, #2902, #2909, #2912)

Consensus changes

  • Introduce the Alonzo era. (#3131, #3138)
  • Enable the Alzono era by default. (#3295)
  • Additional testing in the Alonzo era. (#3191, #3210)
  • Allow the EpochInfo provided to the ledger to fail. This is necessary when the ledger may be querying for time conversions outside of the forecast window. (#3098)
  • The mempool now checks bounds on the capacity of execution units allowed when forging a new block. This is needed to avoid trying to create invalid blocks in Alonzo. (#3224)
  • Allow the node to modify the maximum capacity of the mempool, in terms of various factors (size, execution units) on a per-node basis. (#3238, #3246, #3261, #3266)
  • Update the mempool design for compatibility with Alonzo, which requires some additional logic to deal with 2-phase validation. (#3066)
  • Update consensus documentation. (#3071, #3155, #3195)
  • Updates to the io-sim testing infrastructure. (#3076, #3172, #3196, #3222)
  • Node to client queries are now wrapped in a top-level versioned Query type, in preparation for adding new queries to the node. (#3106)
  • Support additional queries now exposed through the API/CLI. (#3220)
  • Documentation updates. (#3269, #3273)
  • Reject invalid scripts coming from the local wallet. This is a fallback measure which allows the node to protect the user from accidentally losing their collateral. (#3230)

Ledger changes

  • Implementation of the Alonzo era. (#2260, #2264, #2265, #2270, #2273, #2274, #2277, #2283, #2287, #2294, #2295, #2296, #2299, #2302, #2303, #2304, #2305, #2306, #2317, #2320, #2322, #2324, #2328, #2329, #2335, #2342, #2345, #2355, #2359)
  • Define the CDDL for Alonzo datatypes. (#2281, #2315, #2337, #2362)
  • Testing work for the Alonzo era. (#2259, #2261, #2263, #2272, #2275, #2279, #2280, #2293, #2311, #2334, #2340, #2361)
  • Additional testing for serialisation of types which are depended on by consensus. (#2298, #2323)
  • Add the ability to query the UTxO by TxIn, which is now used by the CLI. (#2331)
  • Updates to the Alonzo formal specification. (#2353, #2258, #2271, #2341)
  • Rename the IsValidating field in Alonzo to IsValid. (#2396)
  • Testing for the Alonzo era. (#2348, #2380, #2390)
  • Update the Alonzo Tx to include the validity flag, which will now be passed by the client and other nodes. (#2379)
  • Add the ability to convert from slot time to UTC time within the forecast window. This will be necessary for Plutus scripts. (#2297)
  • Fix the version of Plutus to be used in release. ((#2369, #2372, #2384, #2420, #2425)
  • Canonically encode the subset of protocol parameters presented to Plutus scripts. Since this is not user-provided, but instead generated by the node, we need to use the canonical encoding here. (#2357)
  • Add utilities for computing the transaction fee, for use in the CLI. (#2376)
  • Improved error message when collateral fails. (#2409)
  • Add reporting of why Plutus scripts fail, sufficient to locally reproduce the failure. (#2386, #2430)
  • Expanded benchmarks for performance critical functions. (#2262)
  • Introduce the event logger. This allows the ledger to emit extra information during normal operation for the use of downstream components. The initial use of this will be for db-sync to validate its computation of rewards. (#2373, #2405, #2417, #2431)
  • Add utilities to measure ExUnits in order to allow consensus to apply block-level limits. (#2391)
  • Disallow extra redeemers in the witness set. (#2392, #2393)
  • Allow script stake credentials to earn rewards. (#2400)
  • Updated the Shelley spec with an image depicting the reward process and the various phases it goes through. (#2282)
  • Add an errata to the Shelley spec, which addresses:
    • Reward calculation & stake addresses registration timing.
    • Add a note about Byron redeem addresses being returned to the reserves.
    • Define precisely how reward aggregation works.
    • A discrepancy in the use of the Stability window between the spec and the
      implementation.
    • The use of the incorrect reserve pot when creating the reward update.
      (#2323)
  • Align the Shelley spec with code. (#2339)
  • Restrict the pool metadata hash to the correct size for such a hash. (#2358)

Network changes

  • Work on the network-mux. (#2999, #3100, #3121, #3160, #3166, #3193, #3204)
  • Add an additional tracer to the BlockFetch protocol. (#3190)
  • Monitor exceptions thrown by the accept loop. This addresses an issue where the accept loop could die and the node stop accepting connections. (#3299, #3305)
  • Update the specification document. (#3257)
  • Update network documentation. (#2887, #3071, #3089, #3126, #3217)

Cardano-cli changes

  • The query tip command is now tidier (#2885) and shows additional information:
    • The epoch number is now shown during the Byron era. Previously this worked only in the Shelley and subsequent eras. (#2688)
  • Attempting to use an IPv6/IPv4 address where the other is expected will now give a more helpful error message. (#2691)
  • Queries should now work during the Alonzo era. (#2727, #2755)
  • Support for submitting transactions during the Alonzo era. (#2774, #2798, #2806, #2811, #2823, #2863, #2848)
  • cardano-cli genesis create now also creates the new Alonzo genesis file. (#2743)
  • The UTxO CLI query now allows an additional --tx-in flag which allows filtering the UTxO by TxIn, and requires the addition of the --whole-utxo flag to return the complete UTxO set (which was previously the default). Returning the whole UTxO set is an expensive operation only useful in small testnets, so we don't want it as the default option. (#2843, #2854)
  • The parser for rational units (as used in for example execution unit prices) now supports rational syntax (e.g. 1/2). (#2922)
  • Add a "tx build" command to the CLI. This command takes care of calculating the appropriate fee for a transaction, and balancing the transaction appropriately. It does not do input selection for fees, so sufficient balance must be available in the inputs to pay the computed fee, and sufficient collateral must also be present when phase-2 validating scripts are used. The tx build command is capable of computing both the fees required from transaction size and the fees incurred by script execution. (#2921, #2953, #2995, #3025)
    Improve the output format for rational fields in protocol parameters and genesis. When these are simple, we now convert them to decimal format. (#2992)
  • Improved formatting of the CLI help text. (#2945)
  • Introduce the --script-valid and --script-invalid flags. The latter can be used to mark a script as being known invalid, such that the node will allow it to be submitted anyway (whereas under normal operation it would reject such a transaction in order to avoid loss of collateral). This flag is only likely to be of use in testing. The --script-valid flag is set as a default. (#3050, #3091, #3093)
  • Add colours to the CLI output. (#3023)

Cardano-api changes

  • Support for the Alonzo era, including protocol parameters, Plutus scripts and collateral inputs. (#2784, #2798, #2808, #2810, #2815, #2818, #2823, #2828)
  • Add support for querying the Alonzo ledger state. (#2974)
  • Add a function 'getTransactionBodyContent'. This extracts a general view of the TxBody from the era-specific bodies. (#2663)
  • Add API support for new node queries:
    • QuerySystemStart gets the system start time.
    • QueryStakePools and QueryStakePoolParameters can be used to get details on the currently known stake pools.
    • QueryUTxOFilter provides various ways to query a filtered subset of the UTxO.
      (#2843)
  • Add functions to the API to assist in automated transaction building:
    • evaluateTransactionBalance computes the current balance of a (partial) transaction, which is helpful for determining what needs to be done to correctly balance it (such that value produced equals value consumed).
    • evaluateTransactionExecutionUnits computes how many ExUnits will be needed by all the scripts in a (partial) transaction.
    • evaluateTransactionFee computes the fee for a (partial) transaction, assuming a given number of VKey witnesses (corresponding to inputs).
    • estimateTransactionKeyWitnessCount attempts to estimate the number of VKey witnesses needed.
    • makeTransactionBodyAutoBalance attempts to create and automatically balance a transaction body, using the above tools.
      (#2906)
  • Support for automated Tx building. (#2953)
  • A few additional exports for API consumers. (#3001, #3055)
  • Block folding interface now derives the network ID automatically from the ledger config. (#2955, #2975)
  • Improve the error generated when a Tx output does not meet the minimum UTxO value. (#3027)
  • Update the API documentation.

Deprecated Features

Fixed Issues

  • Fix a bug in deserialisation of witnesses. This would allow for somebody to include signatures of something other than the transaction body, which would not be deserialised and hence could persist on the chain. Unfortunately we have to continue to allow this in pre-Alonzo eras since it has been observed on the public testnet. (#2419, #2432)

Known Issues

  • Sync times may be 10%-20% worse than 1.27.0
  • [FR] - Cli to pass required signer (reqSignerHashes) to plutus script for txInfoSignatories (#3106)
  • Transaction's valid time range is not passed to ScriptContext (#3090)
  • transaction view does not work for Alonzo era transactions (#3039)
  • Withdrawal doesn't work with transaction build command (#3074)
  • [FR] - Lovelace output needed when output address for native tokens is the same as change address (#3057)
  • Plutus transaction txins are not properly validated in build command (#3018)
  • transaction build does not balance correctly when the certificate is already submitted (#3040)
  • transaction build attempts to create UTxO with 0 lovelace as change (#3041)
  • [FR] - Reject non-key-locked collateral inputs (#3112)
  • [FR] - Make transaction build to balance automatically also the multi-assets (#3068)
  • [FR] - Add input utxo validation to transaction build cmd (#2996)
  • [FR] - improve the formatting of the additional information that is provided when Plutus scripts fail (#3126)
  • [FR] - Return the transaction fee when executing transaction build command (#3024)

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.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 ✔️