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
ORACLE_SLASHING_RATE_CAP The % slashing rate for oracle accountability slashing penalties 1_000 (10%) None
Scale factor

SLASHING_RATE_DECIMALS and SLASHING_RATE_SCALE_FACTOR are used to allow for decimal slashing values. Solidity doesn’t natively support decimal fixed point arithmetic. Using the scale factor method allows the protocol to define the % level of precision used when computing a slashing penalty.

For example:

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()
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 500000000 See setMinimumBaseFee()
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 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. See config.autonity.unbondingPeriod 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 30, the number of genesis validators. Increased post-genesis to 100 See setCommitteeSize()
maxScheduleDuration The maximum allowed duration of a schedule Set to 94608000 (1095 days) See setMaxScheduleDuration()
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. EOA account address See setOperatorAccount()
treasury account The Autonity Protocol’s treasury account for receiving treasury fees used for Autonity community funds. EOA 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 EOA 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 10000000000000000 (1%) 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 account 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 1000 (10%) 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 1000 (10%) 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

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 100 (100 blocks) See setInnocenceProofSubmissionWindow()
baseSlashingRateLow The base slashing rate for a fault of Low severity Set by default to 400 (4%) See setBaseSlashingRates()
baseSlashingRateMid The base slashing rate for a fault of Mid severity Set by default to 600 (6%) See setBaseSlashingRates()
baseSlashingRateHigh The base slashing rate for a fault of High severity Set by default to 800 (8%) 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 200 (2%) 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 500 (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", "ATN-USD", "NTN-USD", "NTN-ATN"] 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 30 (30 blocks) None
outlierDetectionThreshold Defines the threshold for flagging outliers Set by default to 10 (10%) None
outlierSlashingThreshold Defines the threshold for slashing penalties, controlling the sensitivity of the penalty model Set by default to 225 (15%) None
baseSlashingRate Defines the base slashing rate for penalising outliers Set by default to 10 (0.1%) None
OracleRewardRate Set in the Autonity Protocol Contract configuration See config.autonity.oracleRewardRate See setOracleRewardRate()
ORACLE_SLASHING_RATE_CAP Set as a Protocol Constant See ORACLE_SLASHING_RATE_CAP in Protocol Constants None

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+1/365) years None
inflationCurveConvexity Convexity parameter Set by default to -1.7794797758 None
InitialInflationReserve Set in the Autonity Protocol Contract configuration See config.autonity.InitialInflationReserve None

ASM Config

Configuration of the Auton Stabilization Mechanism’s (ASM) ACU, Stabilization, 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_744_583, 1_598_986, 1_058_522, 886_091, 175_605_573, 12_318_802, 1_148_285] 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. Set by default to 5%, 50_000_000_000_000_000 None
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 setLiquidationRatio()
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 setMinCollateralizationRatio()
minDebtRequirement The minimum amount of debt required to maintain a CDP. Set by default to a megaton, 1_000_000 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

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

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 to1000 (10%) See setInactivityThreshold()
lookbackWindow The number of blocks over which the protocol will look for inactivity Set by default to 40 (40 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 24 (24 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 25 (0.25%) 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