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