10.2.1
Node 10.2.1 provides support for the new tracing system and an initial integration of Ouroboros Genesis, a new feature which enables nodes to bootstrap from the network. It also provides a number of bug fixes and enhancements, including fixes and improvements to a number of CLI commands.
Benchmarking reports relevant to the 10.2.x release series can be found in this post on Cardano Updates.
Limitations
Note that lightweight checkpoints are not integrated into node 10.2.1, so it is recommended to only use Ouroboros Genesis for testing purposes (on e.g. Preview or PreProd) and not on Mainnet.
Known Issues
There is a known bug with the experimental Ouroboros Genesis feature that is not yet recommended for mainnet use.
ChainSync Jumping (CSJ) is not disabled once a node is caught up. This should not affect normal operation of the syncing node, but does risk a DoS attack for the caught-up node. It will be corrected in a future release (Issue IntersectMBO/ouroboros-consensus#1490).
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)
- Or, for MacOS, an Apple Silicon (M1, M2, M3 or M4) processor
- 24GB of RAM
- 200GB of free storage (250GB recommended for future growth)
Platforms
- Linux 64-bit (Ubuntu 18.04 LTS, 20.04 LTS, 22.04 LTS; Mint 19.3, 20; Debian 10.3)
- Windows 64-bit (8.1, 10, 11)
- MacOS 10.13, 10.14, 10.15, 11
GHC/Cabal supported versions
- GHC 8.10.7
- Cabal 3.8/3.12
Supported roles
| Platform | Block Production | Relay | Client (Desktop) |
|---|---|---|---|
| Linux | 🟢 | 🟢 | 🟢 |
| Windows | 🟥 | 🟥 | 🟢 |
| MacOS | 🟥 | 🟥 | 🟢 |
Downloads
Documentation
- Cardano Node documentation
- Cardano CLI
- Internal API docs for ledger, consensus and network
- Compatibility matrix
Sign-off
| Role | Approval |
|---|---|
| Technical Steering Committee (Intersect) | 🟢 |
| Product Committee (Intersect) | 🟢 |
| Test Engineer | 🟢 |
| Performance Engineer | 🟢 |
| Site Reliability Engineer | 🟢 |
| Release Engineer | 🟢 |
Legend
- 🟢 - signed / agreed / supported
- 🟥 - not agreed / unsupported
Changelogs
Node
cardano-node
-
Ledger peer snapshot path entry added to topology JSON parser,
which a new decoder functionreadPeerSnapshotFileprocesses
at startup and SIGHUP. Data is available to the diffusion layer
via TVar. -
Configuration changes:
- Add
ConsensusModeandMinBigLedgerPeersForTrustedState - Add Genesis config
- Add
diffusionModeto local root peers group configuration - Add
DoDiskSnapshotChecksum
- Add
-
Use new tracing system by default. To continue using the current system, explicitly set
"UseTraceDispatcher": falsein the config. -
Change fallback node name for trace forwarding from
host:porttohost_port -
Replace
snap-serverbased web stack inside the Node withwarp / wai -
Tracing updates:
- Add support for
ChainSelStarvationEvent,ExtValidationError - Add support for
KeepAliveprotocol - Add support for
LocalStateQueryprotocol - Add support for
UsingBigLedgerPeerSnapshot,VerifyPeerSnapshot - Add support for
ConnectionError - Add support for
AddNewNodeIdMapping - Add support for
PeerFetchandPeerStarvedUs - Add support for
SnapshotMissingChecksum - Add support for stateful messages
- Add
maximumKesEvolutionstoInvalidKesSignatureOCERTevent - Rename kind field of all
MuxXxxtrace messages to beMux.Xxx - Rename fields in
RotatedDynamoevent tooldPeer,newPeer - Rename
ConnectTotoConnect - Change format of
GenesisPoint,LabelPeer,DecisionEvent - Change format of
ConnectionManagerState - Change format of
AddedToCurrentChain - Drop support for
ClientAgency,ServerAgency - Drop support for
FetchDecision declined,FetchDecision results - Drop support for
StakeKeyInRewardsDELEG - Drop support for
ChainSelectionForFutureBlock,BlockInTheFuture,
CandidateContainsFutureBlocks,CandidateContainsFutureBlocksExceedingClockSkew,
InvalidBlockReason
- Add support for
-
Drop NodeToClient versions 9 through 15, and add 19
-
Increase minor protocol version to
10.3
Consensus
- Snapshots are now CRC-checksum checked (link).
- Drop NodeToClient versions < 16 (link).
- Remove
cdbFutureBlocksas headers now will be delayed until they are no
longer "from the future" (link). - Implement new bulk sync logic for BlockFetch for Genesis (link).
- Update to
typed-protocols-0.3.0.0API and addKeepAlivetracer (link). - Fixed a bug where a valid tx with less than 4 bytes less than the max tx size
would be incorrectly rejected by the mempool (link). TestXxxHardForkAtVersionwas removed in favor ofCardanoHardForkTriggers(link).
Ledger
- Add registered DRep stake distribution query
Network
- Genesis support, see cardano developer portal.
- New bulk sync algorithm for Genesis mode: PR4919
- Diffusion mode for local root peers: PR5020, see cardano developer portal.
- Improvements to connection handshake which enable enforcement of running only agreed upon miniprotocols: PR5061
- Changes in error handling for IOErrors.
cardano-cli
Release Notes for cardano-cli (10.2.0.0 to 10.4.0.0)
Main changes
-
Added
cardano-cli latest query ledger-peer-snapshotfor a snapshot of big ledger peers used when syncing in Genesis
(feature)
PR 727A new query subcommand
ledger-peer-snapshotwas introduced to serialize a snapshot of big ledger peers. These relays will be relied on by network layer when a node is syncing up in Genesis consensus mode, since a node may not have any or up to date information from its own ledger which are the big ledger peer relays. -
Added the
debug check-node-configuration --node-configuration-file node-config.jsoncommand
that readsnode-config.jsonand checks that the hashes of genesis files are correct.
(feature)
PR 923 based on ADR 5 -
Added anchor data hash checks to
transaction build
(feature)
PR 951This version adds a built-in check that allows
cardano-clito verify anchor data linked by a transaction at the time it is being built if using the commandtransaction build. Thecardano-cliwill automatically try to download the referenced anchor data, hash it, and check the obtained hash against the one in the transaction, letting the user know if there is a mismatch.
Other features
-
Added
cardano-cli conway query future-pparams
(feature, compatible)
PR 1038 -
Added the ratify-state query
(feature, compatible)
PR 1036 -
Added certificates to CLI interface in
compatible transaction-sign
(feature, compatible)
PR 972 -
DRep ID: support key hash as input
(compatible)
PR 1009 -
transaction id: added
--output-[json,text]flag to control format of the output
(feature, compatible)
PR 1005 -
Added datums and scripts to
friendlyTxImpl, which translates into them being showed bytransaction view.
(feature)
PR 977 -
Implemented the
query proposalscommand
(feature, compatible)
PR 984 -
Modified anchor-data checking to allow HTTP schema for testing purposes
(feature)
PR 979 -
transaction buildnow checks and fails if stake addresses used for deposit return or treasury withdrawals in proposals are NOT registered on-chain.
(feature)
PR 963 -
Added option
--committee-keystocreate-testnet-datato create the cold and hot credential for constitutional committee members
(compatible)
PR 961
Breaking changes
-
Added governance action deposits to the output of
query stake-address-info. This also renames the field stakeDeposit to stakeRegistrationDeposit in the JSON output.
(feature, breaking)
PR 1032 -
Integrated
plutus,cardano-ledger,ouroboros-network,ouroboros-consensus,cardano-api-10.6.0.0
(breaking, feature)
PR 986 -
DRep ID: have
--output-bech32and--output-hexinstead of--output-format STRING
(breaking)
PR 1017 -
Disambiguated DRep being a key or a script in certificate descriptions
(breaking)
PR 1007 -
Moved
genesis hashcommand tohash genesis-file
(breaking)
PR 982 -
Augmented
query spo-stake-distributionto include the DRep delegation choices of the Pool's rewards accounts
(breaking)
PR 990 -
More fine grained controls of eras for create-testnet-data. Forbid creating DReps and CC in babbage. And remove the
create-testnet-dataaltogether in eras earlier than Babbage
(breaking)
PR 968 -
create-testnet-data: create byron genesis
(breaking, test)
PR 974 -
Transaction submit: print transaction hash, like this:
Transaction successfully submitted. Transaction hash is: {"txhash":"456c614d5d547b7fe197a4d18fbb86e086cb9080594dabf9059adf08b00cf2bd"}Previously it was:
Transaction successfully submitted.(feature, breaking)
PR 925
Bugfixes
- Fix costs calculation for transaction with more than one certificates with the same stake credential and script witness.
(bugfix)
PR 1028
cardano-api
10.8.0.0
-
Add QueryFuturePParams
(feature, compatible)
PR 739 -
Re-export
getBlockTxs
(compatible, bugfix)
PR 738 -
Change a representation of witnesses in transaction's certificates to an ordered map where a certificate is the key.
(breaking, bugfix)
PR 734 -
Add support for the ratify-state query
(feature, compatible)
PR 737
10.7.0.0
-
Deprecate patterns, to lower entry bar knowledge to this codebase
(breaking, refactoring)
PR 733 -
Introduce new type
PlutusScriptInEraand fix the double cbor encoding plutus script bug
Resolves: IntersectMBO/cardano-api#685
(bugfix)
PR 720 -
Shelley: export {to,from}AlonzoLanguage (Plutus script language conversions)
(compatible)
PR 731 -
Expose GovActionState from Ledger
(feature, compatible)
PR 730 -
Deprecate some patterns, remove deprecated ones. See the deprecation stanzas for migration guidance.
(compatible, refactoring)
PR 728
10.6.0.0
-
Downgrade plutus version to 1.37
(bugfix)
PR 727 -
Added schema checking functionality for DRep registration, DRep update, and GovAction metadata, based on CIP-0100, CIP-0108, and CIP-0119. Also add functionality to check whether a certificate is for DRep registration or updating.
(feature, compatible, test)
PR 713 -
Added
GetBigLedgerPeerSnapshotblock query
(breaking)
PR 521 -
Add certificates support in
createCompatibleSignedTx.
(feature, breaking)
PR 691 -
Integrate
typed-protocols,ouroboros-network,cardano-ledgerandouroboros-consensus
(breaking, feature)
PR 687 -
Export genTxOutByron
(compatible)
PR 703
10.5.0.0
-
Don't export the ledger's
coerceKeyRolefunction anymore, export RewardAccount
(breaking)
PR 708 -
Adds
modTxTotalCollateral,modTxReturnCollateral,modTxFee,modTxValidityLowerBound,modTxValidityUpperBound,modTxMetadata,modTxAuxScripts,modTxWithdrawals,modTxCertificates,modTxUpdateProposal,modTxScriptValidity,modTxMintValuefunctions for modifyingTxBodyContent. AddsaddTxMintValueandsubtractTxMintValue.
(compatible)
PR 706 -
Add TxBodyModifier functions:
addTxIns,modTxInsCollateral,addTxInsCollateral,addTxInCollateral,modTxInsReference,addTxInsReference,addTxInReference,addTxOuts,modTxExtraKeyWits,addTxExtraKeyWits.
(compatible)
PR 704
10.4.0.0
-
Integrate queryProposals (GetProposals)
(feature)
PR 684 -
Export HasKeyRole's coerceKeyRole function
(compatible)
PR 699 -
Exposed
Language,Plutus,Script,getNativeScript,languageToText,plutusBinary,plutusScriptLanguage,serializeAsHexText,showTimelockinCardano.Api.Ledger, andAlonzoEraOnwardsConstraintsinCardano.Api
(feature)
PR 689 -
Export the Convert class
(compatible)
PR 696 -
fromProposalProcedure: return StakeCredential
(breaking)
PR 692 -
Export GovActionIx from the ledger
(compatible)
PR 688 -
We introduce the
Converttype class as an alternative to cardano-ledger'sInjecttypeclass.
WhileInjectis more general,Convertis specifically designed for transformations between era-indexed types,
making the intent clearer at call sites where we're converting between eons.
(feature)
PR 690
10.3.0.0
-
Add
sbeToSimpleScriptLanguageInEra,getScriptWitnessScript,getScriptWitnessReferenceInput,getScriptWitnessReferenceInputOrScriptfunction
RefactorTxMintValueto better represent minting state
PropagateIsPlutusLanguageconstraint toScriptLanguage lang,AnyPlutusScriptVersion,Script langandScriptWitness witctx eratypes.
RemoveMaybe ScriptHashfromPReferenceScriptandSReferenceScript.
(breaking, refactoring)
PR 663 -
Improve plutus script failure error
(feature)
PR 683 -
Remove experimental code exposure in
Cardano.Apinon-experimental modules
(breaking)
PR 681 -
Deprecate eons conversion functions like
conwayEraOnwardsToBabbageEraOnwards. AddInjectinstances for eon conversions. See the PR description for migration aid.
(compatible, refactoring)
PR 636
10.2.0.0
-
ValueParser: rename publicly exposed function names to indicate they are parsers
To adapt: prefix old function name by
parseand everything should compile again.
(breaking)
PR 674 -
Parameterize Value parser on role of the Value being parsed: transaction output or minting policy
(breaking)
PR 666 -
Add function to extract anchor data from a certificate
(feature)
PR 664 -
Export the Committee record from the ledger, for use in the CLI
(compatible)
PR 669 -
Exposed functions and types from
ouroboros-*required bycardano-cli.
(compatible)
PR 667 -
Rename
TxOutDatumInTxdatum toTxOutSupplementalDatum
(breaking)
PR 662 -
Exposed
GovActionandConstitutiontypes and constructors required by hash check intransaction buildincardano-cli
(feature)
PR 661
Submit-api
- No changes
Plutus
Detailed Changelogs
Individual packages' changelogs
| Package | Version | Changelog |
|---|---|---|
| Win32-network | 0.2.0.1 | ChangeLog.md |
| base-deriving-via | 0.1.0.2 | CHANGELOG.md |
| byron-spec-chain | 1.0.1.0 | CHANGELOG.md |
| byron-spec-ledger | 1.0.1.0 | CHANGELOG.md |
| cardano-api | 10.8.0.0 | CHANGELOG.md |
| cardano-binary | 1.7.1.0 | CHANGELOG.md |
| cardano-cli | 10.4.0.0 | CHANGELOG.md |
| cardano-crypto | 1.1.2 | |
| cardano-crypto-class | 2.1.5.0 | CHANGELOG.md |
| cardano-crypto-praos | 2.2.0.0 | CHANGELOG.md |
| cardano-crypto-test | 1.5.0.2 | |
| cardano-crypto-tests | 2.1.2.0 | CHANGELOG.md |
| cardano-crypto-wrapper | 1.5.1.3 | CHANGELOG.md |
| cardano-data | 1.2.3.1 | CHANGELOG.md |
| cardano-git-rev | 0.2.2.0 | |
| cardano-ledger-allegra | 1.6.1.0 | CHANGELOG.md |
| cardano-ledger-alonzo | 1.12.0.0 | CHANGELOG.md |
| cardano-ledger-alonzo-test | 1.3.0.1 | CHANGELOG.md |
| cardano-ledger-api | 1.10.0.0 | CHANGELOG.md |
| cardano-ledger-babbage | 1.10.1.0 | CHANGELOG.md |
| cardano-ledger-babbage-test | 1.3.0.0 | CHANGELOG.md |
| cardano-ledger-binary | 1.5.0.0 | CHANGELOG.md |
| cardano-ledger-byron | 1.0.2.0 | CHANGELOG.md |
| cardano-ledger-byron-test | 1.5.2.0 | CHANGELOG.md |
| cardano-ledger-conway | 1.18.1.0 | CHANGELOG.md |
| cardano-ledger-conway-test | 1.3.0.0 | CHANGELOG.md |
| cardano-ledger-core | 1.16.0.0 | CHANGELOG.md |
| cardano-ledger-mary | 1.7.1.0 | CHANGELOG.md |
| cardano-ledger-shelley | 1.15.0.0 | CHANGELOG.md |
| cardano-ledger-shelley-ma-test | 1.2.2.5 | CHANGELOG.md |
| cardano-ledger-shelley-test | 1.5.1.0 | CHANGELOG.md |
| cardano-ping | 0.7.0.0 | CHANGELOG.md |
| cardano-prelude | 0.2.1.0 | ChangeLog.md |
| cardano-prelude-test | 0.1.0.5 | |
| cardano-protocol-tpraos | 1.3.0.0 | CHANGELOG.md |
| cardano-slotting | 0.2.0.0 | CHANGELOG.md |
| cardano-strict-containers | 0.1.3.0 | CHANGELOG.md |
| contra-tracer | 0.1.0.2 | |
| cuddle | 0.3.2.1 | CHANGELOG.md |
| ekg-forward | 0.8.1 | CHANGELOG.md |
| ekg-wai | 0.1.1.0.0.0.0.1 | |
| heapwords | 0.1.0.2 | CHANGELOG.md |
| iohk-monitoring | 0.2.0.0 | |
| libsystemd-journal | 1.4.5.0.0.0.0.1 | Changelog.md |
| lobemo-backend-aggregation | 0.1.0.0 | |
| lobemo-backend-ekg | 0.2.0.0 | |
| lobemo-backend-monitoring | 0.1.0.0 | |
| lobemo-backend-trace-forwarder | 0.1.0.0 | |
| lobemo-scribe-systemd | 0.1.0.0 | |
| measures | 0.1.0.2 | CHANGELOG.md |
| monoidal-synchronisation | 0.1.0.6 | CHANGELOG.md |
| network-mux | 0.6 | CHANGELOG.md |
| non-integral | 1.0.0.0 | CHANGELOG.md |
| optparse-applicative-fork | 0.18.1.0 | CHANGELOG.md |
| ouroboros-consensus | 0.22.0.0 | CHANGELOG.md |
| ouroboros-consensus-cardano | 0.21.0.1 | CHANGELOG.md |
| ouroboros-consensus-diffusion | 0.20.0.0 | CHANGELOG.md |
| ouroboros-consensus-protocol | 0.10.0.0 | CHANGELOG.md |
| ouroboros-network | 0.19.0.3 | CHANGELOG.md |
| ouroboros-network-api | 0.12.0.0 | CHANGELOG.md |
| ouroboros-network-framework | 0.16.0.0 | CHANGELOG.md |
| ouroboros-network-mock | 0.1.1.2 | CHANGELOG.md |
| ouroboros-network-protocols | 0.13.0.0 | CHANGELOG.md |
| ouroboros-network-testing | 0.8.0.0 | CHANGELOG.md |
| plutus-core | 1.37.0.0 | CHANGELOG.md |
| plutus-ledger-api | 1.37.0.0 | CHANGELOG.md |
| plutus-tx | 1.37.0.0 | CHANGELOG.md |
| prettyprinter-configurable | 1.36.0.0 | |
| quickcheck-monoids | 0.1.0.1 | CHANGELOG.md |
| set-algebra | 1.1.0.3 | CHANGELOG.md |
| small-steps | 1.1.0.1 | CHANGELOG.md |
| sop-extras | 0.2.1.0 | CHANGELOG.md |
| strict-checked-vars | 0.2.0.0 | CHANGELOG.md |
| strict-sop-core | 0.1.2.0 | CHANGELOG.md |
| tracer-transformers | 0.1.0.4 | |
| typed-protocols | 0.3.0.0 | CHANGELOG.md |
| typed-protocols-cborg | 0.3.0.0 | CHANGELOG.md |
| typed-protocols-examples | 0.5.0.0 | |
| typed-protocols-stateful | 0.3.0.0 | |
| typed-protocols-stateful-cborg | 0.3.0.0 | ChangeLog.md |
| validation-selective | 0.2.0.0.0.0.0.0.1 | CHANGELOG.md |
| vector-map | 1.1.0.0 | CHANGELOG.md |