github IntersectMBO/cardano-node 1.35.0
Cardano Node 1.35.0

latest releases: 8.12.2, 8.9.4, 8.12.1...
2 years ago

Node 1.35.0 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

Please see here for known issues

Technical Specification

Minimum System Requirements
  • An Intel or AMD x86 processor with two or more cores, at 1.6GHz or faster (2GHz or faster for a stake pool or relay)
  • 16GB of RAM
  • 75GB of free storage (100GB recommended for future growth)
Platforms
  • Linux 64-bit (Ubuntu 18.04 LTS, 20.04 LTS; Mint 19.3, 20; Debian 10.3)
  • Windows 64-bit (8.1, 10, 11)
  • MacOS 10.13, 10.14, 10.15, 11
Supported roles
Platform Block Production Relay Client (Desktop)
Linux ✔️ ✔️ ✔️
Windows ✔️
MacOS ✔️
Downloads

Documentation

Changelogs

Node
  • RTS workaround converting SIGTERM into SIGINT (#3641)
  • Install a dummy SIGHUP handler for non p2p mode (#3896)
  • Add --shutdown-on-slot-synced test and ensure ExitSuccess (#3670)
  • cardano-node: implement --shutdown-on-block-synced (#3932)
  • Update dependencies and pins. (#3700)
  • Propagate protocol in block type (#3818)
  • Create VRF signing key file with correct permissions (#1948)
  • Fix for eliding of the ChainDB tracer (#4038)
  • Tracing infra updates:
    • Configuration structure rework, for better UX: (#3867)
    • Rework implementation to eliminate prototypes from trace definitions (#3731)
    • Fix tracing config to allow selection of the new tracing system (#3655)
    • Register GC metrics. (#3858)
    • Metrics are no longer impacted by severities and frequency limits (#3876)
    • Porting ekg-direct metrics to new-tracing (#3873)
    • Node state data point extensions and fixes: (#3854, #3656)
    • Old peers tracing was erroneously called in new tracing (#3880)
    • Remove unused constraints from TraceConstraints (#3822)
    • Properly init trace forwarding when needed. (#3634)
  • cardano-tracer:
    • Format fixes for forwarded traces: (#3640, #3654, #3660, #3671).
    • Test fixes: (#3714)
    • Remove symlink, fix logs cut off. (#3930)
    • Fix bug with empty line (#3962)
    • RTView, a web performance dashboard, as part of cardano-tracer (#3852)
    • RTView: CPU usage (GC + App) as pct, https by default, errors export (#3934)
  • Documentation updates;
    • 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)
Consensus
  • 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)
Ledger
  • 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 the
    existing 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)
Network
  • 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)
Cardano-cli
  • 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)
Cardano-api
  • 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)
Submit-api
  • Babbage transactions for submit-api (#3979)
Deprecated features
Fixed issues
  • 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)

Sign off

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

Don't miss a new cardano-node release

NewReleases is sending notifications on new releases.