Protocol Parameters

Autonity protocol parameters - definitions, genesis configuration, update mechanism if modifiable

Overview

The protocol parameters are the configuration variables for the Autonity Network blockchain and Autonity Protocol Contracts. The parameterisation sets how the network will function by specifying economic, consensus, temporal, and governance settings.

Protocol parameter values for public Autonity networks are set as network presets in the genesis configuration of the Autonity software - i.e. the Autonity Go Client, Protocol Contracts, and Autonity Oracle Server.

Protocol parameter values for a local Autonity network are specified in the config object of the local network’s genesis.json file. The local network operator can choose to use default settings or specify their own custom settings in their genesis.json file as required by their use case.

A subset of the protocol parameters may be updated by the network’s governance account after genesis.

Protocol Constants

Protocol Constants are protocol parameter constant values that may be used in one or more Protocol Contracts. They are defined in ProtocolConstants.sol.

Parameter Description Genesis Configuration Post Genesis Update Mechanism
SLASHING_RATE_DECIMALS The number of decimal points used for fixed-point arithmetic during computation of slashing penalties 4 None
SLASHING_RATE_SCALE_FACTOR The division precision used as the denominator when computing the slashing amount of a penalty 10 ** SLASHING_RATE_DECIMALS (10^4 = 10_000, i.e. 0.01%) None
CONVERSION_RATIO_DECIMALS The number of decimal points used for fixed-point arithmetic during computation of validator LNTN-NTN conversion ratio 18 None
CONVERSION_RATIO_SCALE_FACTOR The division precision used as the denominator when computing the LNTN-NTN conversion ratio of a validator 10 ** CONVERSION_RATIO_DECIMALS (10^18 = 1_000_000_000_000_000_000, i.e. 100%) None
Scale factor and decimals

Solidity doesn’t natively support decimal fixed point arithmetic. Using the DECIMALS and SCALE_FACTOR method allows the protocol to define the % level of precision used when computing a value.

For example, SLASHING_RATE_DECIMALS and SLASHING_RATE_SCALE_FACTOR are used to allow for decimal slashing penalty values:

Scale Factor Slashing rate applied
10_000 100% slash
1_000 10% slash
100 1% slash
10 0.1% slash
1 0.01% slash

Protocol Contracts

Parameter Description Genesis Configuration Post Genesis Update Mechanism
autonity contract address The Autonity Protocol Contract address Deterministic - see Protocol Contract addresses None
accountability contract address The Accountability Contract address Deterministic - see Protocol Contract addresses See setAccountabilityContract()
oracle contract address The Oracle Contract address Deterministic - see Protocol Contract addresses See setOracleContract()
acu contract address The ASM ACU Contract address Deterministic - see Protocol Contract addresses See setAcuContract()
supplyControl contract address The ASM Supply Control Contract address Deterministic - see Protocol Contract addresses See setSupplyControlContract()
stabilisation contract address The ASM Stabilisation Contract address Deterministic - see Protocol Contract addresses See setStabilizationContract()
auctioneer contract address The ASM Auctioneer Contract address Deterministic - see Protocol Contract addresses See setAuctioneerContract()
upgradeManagerContract contract address The Upgrade Manager Contract address Deterministic - see Protocol Contract addresses See setUpgradeManagerContract()
inflationController contract address The Newton Inflation Controller Contract address Deterministic - see Protocol Contract addresses See setInflationControllerContract()
omissionAccountability contract address The Omission Accountability Contract address Deterministic - see Protocol Contract addresses See setOmissionAccountabilityContract()

Chain Config Protocol Parameters

Protocol parameters are set in the Autonity Network’s ChainConfig, the core configuration object for the protocol.

Parameter object Description Configuration Setting
chainId Autonity network identifier See Chain ID
autonity Autonity Protocol parameters See Autonity Config
accountability Accountability Fault Detection protocol parameters See Accountability Config
oracle Oracle protocol and Oracle Accountability Fault Detection protocol parameters See Oracle Config
inflationController Newton inflation mechanism parameters See Inflation Controller Config
asm Auton Stabilization Mechanism parameters See ASM Config
omissionAccountability Omission Fault Detection protocol parameters See Omission Accountability Config

Chain ID

Parameter Description Genesis Configuration Post Genesis Update Mechanism
chainID Identifier for the Autonity blockchain network Set in the genesis configuration using the format described in config.chainId on the Genesis Reference page None
Note

Autonity assigns the same value to Chain and Network identifiers networkId and chainId.

Autonity Config

Parameter Description Genesis Configuration Post Genesis Update Mechanism
minBaseFee The minimum gas price for computing a transaction on an Autonity network after genesis. A high minimum gas price setting incentivizes validators at genesis when transaction volumes are low Set to 10000000000 (10 gigaton) See setEip1559Params()
epochPeriod The period of time for which a consensus committee is elected, defined as a number of blocks. The epochPeriod must be shorter than the unbondingPeriod and must be greater than the OFD [Delta](/concepts/ofd/#delta-delta)+[lookbackWindow](/concepts/ofd/#lookback-window)-1. Set to 1800 See setEpochPeriod()
unbondingPeriod The period of time bonded stake must wait before Newton can be redeemed after unbonding, defined as a number of blocks. The unbonding period can be any integer number > 0, but must be longer than the epochPeriod. Set to 21600 See setUnbondingPeriod()
blockPeriod The minimum time interval between two consecutive blocks, measured in seconds. Also known as ‘block time’ or ‘block interval’. Set to 1 None
maxCommitteeSize The maximum number of validators that can be selected as members of a consensus committee Set to 27, the number of genesis validators. Increased post-genesis. See setCommitteeSize()
governance operator account Address of the Autonity Protocol governance account. The governance account has the authority to mint Newton and change protocol parameters including specification of a new governance operator account address. A scenario for this would be migrating to a DAO form of governance. Multisig account address See setOperatorAccount()
treasury account The Autonity Protocol’s treasury account for receiving treasury fees used for Autonity community funds. Multisig account address See setTreasuryAccount()
withheldRewardsPool account The address of the Autonity Withheld Rewards account, the pool to which withheld Newton inflation rewards are sent for holding Multisig account address. Set by default to the Autonity treasury account at genesis unless specified See setWithheldRewardsPool()
treasuryFee The percentage fee of staking rewards that is deducted by the protocol for Autonity community funds. The fee is sent to the Autonity Treasury account at epoch end on reward distribution. Specified as an integer value representing up to 18 decimal places of precision. Set to 50000000000000000 (5%) See setTreasuryFee()
delegationRate The percentage fee of staking rewards that is deducted by validators as a commission from delegated stake. The fee is sent to the validator’s treasury account at epoch end on reward distribution. The rate can be specified to the precision of 1 basis point. Specified as an integer value representing up to 3 decimal places of precision. Set to 1000 (10%) See config.autonity.delegationRate
withholdingThreshold The inactivity threshold at which committee member staking and Newton inflation rewards are withheld and sent to the Withheld Rewards Pool account by the Omission Fault Detection protocol Set to 0 (0%, no tolerance) See setWithholdingThreshold()
proposerRewardRate The percentage of epoch staking rewards allocated for proposer rewarding by the Omission Fault Detection protocol Set to 500 (5%) See setProposerRewardRate()
oracleRewardRate The percentage of epoch staking rewards deducted for oracles as a reward for correct price reporting by the Oracle Accountability Fault Detection protocol Set to 500 (5%) See setOracleRewardRate()
initialInflationReserve the amount of Newton held in reserve for Newton inflation rewards Set to 40 Million (40% of the total supply of 100 Million Newton) None
gasLimit The maximum amount of gas expenditure allowed for a block, placing a ceiling on transaction computations possible within a block. The value is specified as the number of gas units allowed in a block. The gas limit determines the amount of gas allowed to compute the genesis block; for subsequent blocks the gas limit is algorithmically adjusted by protocol and is a desired gas limit. The runtime block gas limit is a normal distribution around this target. Value is set to: 30000000 (30M) See setGasLimit()
gasLimitBoundDivisor The divisor that determines the change in the gas limit compared to the parent block’s gas limit. Set to 1024 See setEip1559Params()
baseFeeChangeDenominator Bounds the amount the base fee can change between blocks. Set to 64 See setEip1559Params()
elasticityMultiplier Multiplier to compute the block gas target. Results in block gas target as a percentage of the parent block gas limit. Set to 2 (targets 50% of the block gas limit) See setEip1559Params()
clusteringThreshold Sets the clustering threshold for consensus message routing. When committee size exceeds this threshold, network participants are grouped into deterministic clusters to optimize network propagation of gossiped consensus messages. Set to 64 See setClusteringThreshold()
skipGenesisVerification A boolean flag to skip or not verification checks that the amount of NTN minted and bonded at genesis matches the tokenBond and tokenMint parameter values. Set to false None
tokenBond The amount of NTN stake token bonded to validators at network genesis. Specific to network genesis None
tokenMint The amount of NTN stake token minted at network genesis. Set to 60 Million (60% of the total supply of 100 Million Newton) None
schedules Protocol schedules determine the amount of NTN to deduct from the total minted NTN amount to set the circulating supply (inflation base) to which the inflation rate is applied. Specific to network genesis None
maxScheduleDuration The maximum allowed duration of a schedule. See schedules. Set to 126230400 seconds (4+(1/365) years) See setMaxScheduleDuration()
validators Specify the genesis validator set. Specific to network genesis Post-genesis the genesis validators can pause and reactivate to enter and leave committee selection. New validators can register after genesis.
NTN supply, protocol schedules and Newton inflation

The total supply of NTN is capped at 100M NTN, 60M of which is minted at genesis (tokenMint) and 40M of which is in the Newton inflation reserve (initialInflationReserve. NTN in the inflation reserve is then minted by the Newton inflation mechanism and emitted into circulation over time as inflation rewards awarded to participating NTN. Participating NTN is the amount of NTN in the circulating supply that has been delegated (bonded) to validators and so is securing the network (at genesis this is tokenBond). NTN inflation rewards are emitted epoch end and autobonded to the validator staked to. Autobonding simultaneously increases the NTN participating stake amount of a delegator and increases network security.

The circulating supply of NTN at genesis is the amount of NTN minted at genesis (tokenMint) minus the amount of NTN in the protocol schedules (schedules).

The protocol schedules record the amount of minted NTN that is out of circulation at genesis. Specifically, the protocol schedules record the amount of NTN locked in locking contract(s) that will unlock and release NTN in to the circulating supply over time according to an unlocking schedule. An unlocking schedule can be no greater than the maxScheduleDuration.

The amount of NTN in the circulating supply at genesis (i.e. tokenMint amount minus protocol schedules amount) is the inflation base to which the inflation rate is applied by the Newton inflation mechanism. The protocol schedules are properties of the inflation mechanism, therefore.

For detail on NTN supply, protocol schedules and Newton inflation see:

To return current state data see the Autonity Contract Interfaces and:

Accountability Config

Parameters for the Accountability Contract and the Accountability Fault Detection (AFD) protocol.

Parameter Description Genesis Configuration Post Genesis Update Mechanism
innocenceProofSubmissionWindow The number of blocks forming a window within which an accused offending validator has to submit a proof of innocence on-chain refuting an accusation Set by default to 120 (120 blocks) See setInnocenceProofSubmissionWindow()
delta The delta for the provable fault detector. It is the number of blocks that must elapse before running the fault detector on a certain height (e.g height \(x\) gets scanned at block \(x+delta\)) Set by default to 10 (10 blocks) See setDelta()
range The height range for the provable fault detector. It is used for garbage collection of messages and to establish height boundaries for accusation validity Set by default to 128 (128 blocks) See setRange()
gracePeriod The grace period for a validator to defend against an accusation; prevents the possibility of the protocol raising an indefensible accusation in the case of a range increase. Set by default to 0 (blocks) None; automatically adjusted by protocol
baseSlashingRateLow The base slashing rate for a fault of Low severity Set by default to 50 (0.5%) See setBaseSlashingRates()
baseSlashingRateMid The base slashing rate for a fault of Mid severity Set by default to 100 (1%) See setBaseSlashingRates()
baseSlashingRateHigh The base slashing rate for a fault of High severity Set by default to 200 (2%) See setBaseSlashingRates()
collusionFactor The percentage factor applied to the total number of slashable offences committed during an epoch when computing the slashing amount of a penalty Set by default to 24 (0.25%) See setFactors()
historyFactor The percentage factor applied to the total number of proven faults committed by a validator used as a factor when computing the slashing amount of a penalty Set by default to 150 (1.5%) See setFactors()
jailFactor The number of epochs used as a factor when computing the jail period of an offending validator Set by default to 48 (48 epochs, i.e. 1 day at a 30 mins epoch) See setFactors()
SLASHING_RATE_SCALE_FACTOR Set as a Protocol Constant See SLASHING_RATE_SCALE_FACTOR in Protocol Constants None

Oracle Config

Parameters for the Oracle Contract of the Oracle protocol and Oracle Accountability Fault Detection (OAFD) protocol.

Parameter Description Genesis Configuration Post Genesis Update Mechanism
Oracle symbols The currency pairs that the oracle component collects data points for. The first listed currency of the pair is the base currency and the second the quote currency Comma separated list of currency pairs. Set by default to ["AUD-USD", "CAD-USD", "EUR-USD", "GBP-USD", "JPY-USD", "SEK-USD"] See setSymbols()
Oracle votePeriod The interval at which the oracle network initiates a new oracle round for submitting and voting on oracle data, measured in blocks Set by default to 600 (600 blocks) None
outlierDetectionThreshold Defines the threshold for flagging outliers Set by default to 3 (3%) None
outlierSlashingThreshold Defines the threshold for outlier slashing penalties, controlling the sensitivity of the penalty model Set by default to 225 (15%) None
baseSlashingRate Defines the base slashing rate for outlier slashing penalties Set by default to 10 (0.1%) None
nonRevealThreshold Defines the threshold for missed reveals Set by default to 5 (oracle voting rounds) None
revealResetInterval The number of oracle voting rounds after which the missed reveal counter is reset Set by default to 10 None
slashingRateCap The maximum % slashing rate for oracle accountability slashing penalties Set by default to 50 (0.5%) None
OracleRewardRate Set in the Autonity Protocol Contract configuration See config.autonity.oracleRewardRate See setOracleRewardRate()

Inflation Controller Config

Parameters for the Inflation Controller Contract of the Newton inflation mechanism.

Parameter Description Genesis Configuration Post Genesis Update Mechanism
inflationRateInitial Initial inflation rate Set by default to 7.5% AR None
inflationRateTransition Transition inflation rate Set by default to 5.5% AR None
inflationReserveDecayRate Constant inflation rate Set by default to 17.3168186793% AR None
inflationTransitionPeriod Transition period Set by default to 4.002739726027397 (4+1/365 years) None
inflationCurveConvexity Convexity parameter Set by default to 2.7648007374 None
InitialInflationReserve Set in the Autonity Protocol Contract configuration See config.autonity.InitialInflationReserve None

ASM Config

Configuration of the Auton Stabilization Mechanism (ASM) ACU, Stabilization, Auctioneer, and Supply Control Contracts.

ACU Config

The ASM’s Autonomous Currency Unit (ACU) currency basket configuration, an optimal currency basket of 7 free-floating fiat currencies.

Parameter Description Genesis Configuration Post Genesis Update Mechanism
symbols The currency pair symbols used to retrieve prices for the currencies in the basket Set by default to ["AUD-USD", "CAD-USD", "EUR-USD", "GBP-USD", "JPY-USD", "SEK-USD", "USD-USD"] See modifyBasket()
quantities The basket quantity corresponding to each symbol. Set by default to [1_826_272, 1_634_362, 1_023_622, 886_976, 177_065_877, 11_513_754, 1_192_007] See modifyBasket()
scale The scale used to represent the basket quantities and ACU value. Set by default to 7 See modifyBasket()

Stabilization Config

The ASM’s Stabilization mechanism CDP configuration.

Parameter Description Genesis Configuration Post Genesis Update Mechanism
borrowInterestRate The annual continuously-compounded interest rate for borrowing. 0% while CDP Opening Restrictions are in force. Set by default to 5%, 50_000_000_000_000_000, which applies on lifting of the CDP Opening Restrictions See updateBorrowInterestRate()
announcementWindow The length of time in seconds before an update to ASM Stabilization config will take effect. Set by default to 1 hour, 3600 seconds See updateAnnouncementWindow()
liquidationRatio The minimum ACU value of collateral required to maintain 1 ACU value of debt. Set by default to 1.8, 1_800_000_000_000_000_000 See updateRatios()
minCollateralizationRatio The minimum ACU value of collateral required to borrow 1 ACU value of debt. Set by default to 2, 2_000_000_000_000_000_000 See updateRatios()
minDebtRequirement The minimum amount of debt required to maintain a CDP. Set by default to 1 megaton, 1_000_000 (i.e. 10^-12 ATN) See setMinDebtRequirement()
targetPrice The ACU value of 1 unit of debt. Set by default to the Golden Ratio rounded to 5 dp 1.61804, 1_618_034_000_000_000_000 None
defaultNTNATNPrice Default NTN-ATN price for use at genesis (with Oracle decimals precision) Set by default to 0.6666193 See setDefaultNTNATNPrice()
defaultNTNUSDPrice Default NTN-USD price for use at genesis (with Oracle decimals precision) Set by default to 0.9 See setDefaultNTNUSDPrice()
defaultACUUSDPrice Optional ACU-USD price for use at genesis Set by default to 0.8344052 See setDefaultACUUSDPrice()
ASM restrictions

See the ASM concept and ASM restrictions for detail on CDP Opening Restrictions and the setting of default prices by Fixed Price Restrictions during network bootstrapping.

Supply Control Config

Parameters for the ASM’s Auton supply control configuration.

Parameter Description Genesis Configuration Post Genesis Update Mechanism
initialAllocation The initial allocation of Auton to the ASM \(2^{256} - 1 - GenesisATN\) (integer datatype minus the amount of ATN created by allocation at genesis (\(GenesisATN\))) None

Auctioneer Config

The ASM’s CDP debt and interest Auction mechanism configuration.

Parameter Description Genesis Configuration Post Genesis Update Mechanism
liquidationAuctionDuration The number of blocks for a liquidation auction to move from the liquidation rate to the bankruptcy rate Set by default to 60 (60 blocks) See setLiquidationAuctionDuration()
interestAuctionDuration The number of blocks for an interest auction to move from the discount rate to the floor price Set by default to 60 (60 blocks) See setInterestAuctionDuration()
interestAuctionDiscount The fraction above market price that an interest auction starts at Set by default to 0.1 (10%) See setInterestAuctionDiscount()
interestAuctionThreshold The minimum amount of ATN paid in interest to trigger an interest auction Set by default to 1 ATN See setInterestAuctionThreshold()
proceedAddress The address to which interest auction proceeds are sent. (Proceeds accumulate in the Auctioneer Contract until a proceed address is set by governance.) Set by default to the Auctioneer Contract address See setProceedAddress()

Omission Accountability Config

Parameters for the Omission Accountability Contract and the Omission Fault Detection (OFD) protocol.

Parameter Description Genesis Configuration Post Genesis Update Mechanism
inactivityThreshold Defines the threshold for flagging validator inactivity Set by default to 1500 (15%) See setInactivityThreshold()
lookbackWindow The number of blocks over which the protocol will look for inactivity Set by default to 60 (60 blocks) See setLookbackWindow()
pastPerformanceWeight Determines how much weight is given to past performance of the validator in the preceding epoch in the current epoch when computing the aggregated inactivity score Set by default to 1000 (10%) See setPastPerformanceWeight()
initialJailingPeriod The initial number of block(s) that a validator will be jailed for Set by default to 10_000 (10000 blocks) See setInitialJailingPeriod()
initialProbationPeriod The initial number of epoch(s) that a validator will be set under probation for Set by default to 8 (8 epochs) See setInitialProbationPeriod()
initialSlashingRate The initial slashing rate used with the offence count and collusion degree when computing the slashing amount of a penalty Set by default to 5 (0.05%) See setInitialSlashingRate()
delta The number of blocks to wait before generating an activity proof Set by default to 5 (5 blocks) See setDelta()
SCALE_FACTOR Used for fixed-point arithmetic during computation of inactivity score See SCALE_FACTOR in OmissionAccountability.sol None
SLASHING_RATE_SCALE_FACTOR Set as a Protocol Constant See SLASHING_RATE_SCALE_FACTOR in Protocol Constants None