Protocol parameters
Protocol parameters on Cardano are the various settings that define the blockchain's behavior.
Let's delve into the protocol parameters using the Cardano CLI. Note that this time, we will be using the mainnet, as testnet environments may have different parameter values. Additionally, it's important to mention that the output is simplified as the cost models are collapsed.
The CLI retrieves the protocol parameters from the ledger state. This implies that these parameters are currently active, along with their corresponding values. Please note that any parameters set to null have been deprecated.
Protocol parameters can be updated via an update proposal.
Alongside protocol parameters, there are global constants. Unlike protocol parameters, global constants can only be updated through a software update, which always involves incrementing the protocol version. An increase in the major version indicates a hard fork, while the minor version represents a soft fork, allowing old software to validate but not produce new blocks.
Below you will find a description of the protocol parameters and global constants:
Description | Value | |
---|---|---|
NetworkId | Determines the expected network (mainnet or testnet) | mainnet |
MaxLovelaceSupply | The total number of lovelace in the system | 45000000000000000 |
SlotsPerEpoch | The number of slots in an epoch | 432000 |
k | The security parameter, which defines the number of blocks required for the blockchain to be considered final, preventing any further rollback (ie, the maximum allowable length of any chain fork) | 2160 |
ActiveSlotCoeff | The fraction of slots, denoted as 'f' in the Praos paper, represents the average proportion of slots that a block will contain | 0.05 |
slotLength | The length of each slot (in seconds) | 1 |
txFeeFixed | Base transaction fee (in lovelace) | 155381 |
txFeePerByte | Additional transaction fee per byte of data (in lovelace) | 44 |
maxTxSize | Maximum transaction size in bytes | 16384 |
maxBlockBodySize | Maximum block size in bytes | 90112 |
maxBlockHeaderSize | Maximum block header size in bytes | 1100 |
maxValueSize | The maximum serialized length (in bytes) of a multi-asset value (token bundle) in a transaction output | 5000 |
Quorum | The number of the Genesis delegate keys that must endorse an update proposal | 5 |
protocolVersion major minor | Current protocol version | 7.0 |
MaxMajorPV | If the major component of the protocol version is larger than MaxMajorPV, there is an ObsoleteNode failure | Halts below 7.0 nodes |
StabilityWindow | The number of slots needed for a block to become stable, defined as 3k/f | 3k/f |
stakeAddressDeposit | Deposit amount in lovelace required to register stake credential | 2000000 |
stakePoolDeposit | Deposit amount in lovelace required to register a stake pool | 500000000 |
stakePoolTargetNum | The optimal number of saturated stake pools. Impacts saturation threshold, encouraging growth in the number of stake pools | 500 |
decentralization | Controls how many slots are governed by the genesis nodes via OBFT and which slots are open to any registered stake pool | Deprecated Shelley - Alonzo: [0-1] Babbage: Null |
SlotsPerKESPeriod | Defines after how many slots a pool's operational key pair evolves (key evolving signatures) | 129600 |
MaxKESEvolutions | The maximum number of times a KES key pair can evolve before a new KES key pair is generated from the master keys | 62 |
poolRetireMaxEpoch | Maximum number of epochs within which a pool can be announced to retire, starting from the next epoch | 18 |
minPoolCost | Minimum pool cost per epoch (in lovelace), which enables pledge effect | 340000000 |
minUTxOValue | The minimum ada value that a transaction output must hold (during the Shelley era) | Deprecated |
utxoCostPerWord | During the Mary, Allegra, and Alonzo eras, this parameter determined the minimum ada value required for a transaction output to support native assets (in the Mary and Allegra eras) and datum hashes (in the Alonzo era) | Deprecated |
utxoCostPerByte | In the Babbage era, transaction outputs are required to contain at least
| serialized_output |
treasuryCut | Proportion of the reward pot that will move to the treasury at each rewards distribution | 0.2 |
monetaryExpansion | Every epoch, the total amount of ada in circulation is increased by monetaryExpanision % of the ada reserves and is moved to the rewards pot | 3.0e-3 (.003) |
poolPledgeInfluence | Determines stake pool owner-stake influence on pool rewards | 0.3 |
costModels PlutusV1 PlutusV2 | Every phase-2 scripting language converts the calculated execution cost into a number of ExUnits using a cost model, which depends on the language | PV1 PV2 |
executionUnitPrices priceMemory priceSteps | Prices consist of two rational numbers that correspond to the components of ExUnits: the price per unit of memory and price per reduction step | priceMemory: 5.77e-2 (.0577) priceSteps: 7.21e-5 (.0000721) |
maxBlockExecutionUnits memory steps | Maximum ExUnits allowed in a block | memory: 62000000 steps: 40000000000 |
collateralPercentage | The percentage of the total transaction fee, its collateral must (at minimum) cover | 150 |
maxCollateralInputs | Limits the total number of collateral inputs, and thus the total number of additional signatures that must be checked during validation | 3 |
extraPraosEntropy | This provides additional certainty that the blockchain has not been compromised by the seed key holders. Redundant once the system is sufficiently decentralized |
Resources
Cardano ledger repository contains the formal specifications, executable models, and implementations of the Cardano ledger.
Original implementation, Cardano-SL https://github.com/serokell/cardano-sl/blob/master/docs/configuration.md
Last updated