ADR 005: Genesis parameters
Status
Authors
Alexandr Kolesov, Ankur Banerjee, Alex Tweeddale
ADR Stage
ACCEPTED
Implementation Status
Implemented
Start Date
2021-09-15
Last Updated
2022-12-08
Summary
The aim of this document is to define the genesis parameters that will be used in cheqd network testnet and mainnet.
Cosmos v0.44.3 parameters are described.
Context
Genesis consists of Tendermint consensus engine parameters and Cosmos app-specific parameters.
Tendermint consensus parameters
Tendermint requires genesis parameters to be defined for basic consensus conditions on any Cosmos network.
Block parameters
max_bytes
This sets the maximum size of total bytes that can be committed in a single block. This should be larger than max_bytes for evidence
.
200,000 (~200 KB)
200,000 (~200 KB)
max_gas
This sets the maximum gas that can be used in any single block.
200,000 (~200 KB)
200,000 (~200 KB)
time_iota_ms
Unused. This has been deprecated and will be removed in a future version of Cosmos SDK.
1,000 (1 second)
1,000 (1 second)
Evidence parameters
max_age_num_blocks
Maximum age of evidence, in blocks. The basic formula for calculating this is: MaxAgeDuration / {average block time}
.
12,100
25,920
max_age_duration
Maximum age of evidence, in time. It should correspond with an app's "unbonding period".
1,209,600,000,000,000 (expressed in nanoseconds, ~2 weeks)
59,200,000,000,000 (expressed in nanoseconds, ~72 hours)
max_bytes
This sets the maximum size of total evidence in bytes that can be committed in a single block and should fall comfortably under max_bytes
for a block.
50,000 (~ 50 KB)
5,000 (~ 5 KB)
Validator key parameters
pub_key_types
Types of public keys supported for validators on the network.
Ed25519
Ed25519
Cosmos SDK module parameters
Cosmos application is divided into a list of modules. Each module has parameters that help to adjust the module's behaviour.
auth
module
auth
modulemax_memo_characters
Maximum number of characters in the memo field
512
512
tx_sig_limit
Max number of signatures
7
7
tx_size_cost_per_byte
Gas cost of transaction byte
10
10
sig_verify_cost_ed25519
Cost of ed25519
signature verification
590
590
sig_verify_cost_secp256k1
Cost of secp256k1
signature verification
1,000
1,000
bank
module
bank
moduledefault_send_enabled
The default send enabled value allows send transfers for all coin denominations
True
True
cheqd
module (DID module)
cheqd
module (DID module)create_did
The specified transaction fee for creating a Decentralized Identifier (DID) on the cheqd network
50,000,000,000 ncheq (50 CHEQ)
50,000,000,000 ncheq (50 CHEQ)
update_did
The specified transaction fee for updating an existing Decentralized Identifier (DID) on the cheqd network
25,000,000,000 ncheq (25 CHEQ)
25,000,000,000 ncheq (25 CHEQ)
deactivate_did
The specified transaction fee for deactivating an existing Decentralized Identifier (DID) on the cheqd network
10,000,000,000 ncheq (10 CHEQ)
10,000,000,000 ncheq (10 CHEQ)
burn_factor
The percentage of the transaction fee for create_did
, update_did
or deactivate_did
that is burnt, i.e., destroyed from the cheqd network
50%
50%
crisis
module
crisis
moduleconstant_fee
The fee is used to verify the invariant(s)
10,000,000,000,000 ncheq (10,000 CHEQ)
10,000,000,000,000 ncheq (10,000 CHEQ)
distribution
module
distribution
modulecommunity_tax
The percent of rewards that goes to the community fund pool
0.02 (2%)
0.02 (2%)
base_proposer_reward
Base reward that proposer of a block receives
0.01 (1%)
0.01 (1%)
bonus_proposer_reward
Bonus reward that proposer gets for proposing block. This depends on the number of pre-commits included to the block
0.04 (4%)
0.04 (4%)
withdraw_addr_enabled
Whether withdrawal address can be changed or not. By default, it's the delegator's address.
True
True
gov
module
gov
moduledeposit_params
min_deposit
The minimum deposit for a proposal to enter the voting period.
[{ "denom": "ncheq", "amount": "8,000,000,000,000" }] (8,000 cheq)
[{ "denom": "ncheq", "amount": "8,000,000,000,000" }] (8,000 cheq)
max_deposit_period
The maximum period for Atom holders to deposit on a proposal. Initial value: 2 months.
604,800s (1 week)
172,800s (48 hours)
voting_params
voting_period
The defined period for an on-ledger vote from start to finish.
259,200s (3 days)
86.40s (1.2 minutes)
tally_params
quorum
Minimum percentage of total stake needed to vote for a result to be considered valid.
0.334 (33.4%)
0.334 (33.4%)
threshold
Minimum proportion of Yes votes for proposal to pass.
0.5 (50%)
0.5 (50%)
veto_threshold
The minimum value of veto votes to total votes ratio for proposal to be vetoed. Default value: 1/3.
0.334 (33.4%)
0.334 (33.4%)
mint
module
mint
modulemint_denom
Name of the cheq smallest denomination
ncheq
ncheq
inflation_rate_change
Maximum inflation rate change per year. In Cosmos Hub they use 1.0
. Formula: inflationRateChangePerYear = (1 - BondedRatio / GoalBonded) * MaxInflationRateChange
0.045 (4.5%)
0.045 (4.5%)
inflation_max
Inflation aims to this value if bonded_ratio
< bonded_goal
0.04 (4%)
0.04 (4%)
inflation_min
Inflation aims to this value if bonded_ratio
> bonded_goal
0.01 (1%)
0.01 (1%)
goal_bonded
Percentage of bonded tokens at which inflation rate will neither increase nor decrease
0.60 (60%)
0.60 (60%)
blocks_per_year
Number of blocks generated per year
3,155,760 (1 block every ~10 seconds)
3,155,760 (1 block every ~10 seconds)
resource
module
resource
moduleimage
The specified transaction fee for creating an image as a DID-Linked Resource on the cheqd network
10,000,000,000 ncheq (10 CHEQ)
10,000,000,000 ncheq (10 CHEQ)
json
The specified transaction fee for creating a JSON file as a DID-Linked Resource on the cheqd network
2,500,000,000 ncheq (2.5 CHEQ)
2,500,000,000 ncheq (2.5 CHEQ)
default
The specified transaction fee for creating any other type of DID-Linked Resource on the cheqd network, other than images or JSON files
5,000,000,000 ncheq (5 CHEQ)
5,000,000,000 ncheq (5 CHEQ)
burn_factor
The percentage of the transaction fee for image
, json
or default
DID-Linked Resources that are burnt, i.e., destroyed from the cheqd network
50%
50%
slashing
module
slashing
modulesigned_blocks_window
Number of blocks a validator can miss signing before it is slashed.
25,920 (expressed in blocks, equates to 259,200 seconds or ~3 days)
17,280 (expressed in blocks, equates to 172,800 seconds or ~2 days)
min_signed_per_window
This percentage of blocks must be signed within the window.
0.50 (50%)
0.50 (50%)
downtime_jail_duration
The minimal time validator have to stay in jail
600s (~10 minutes)
600s (~10 minutes)
slash_fraction_double_sign
Slashed amount as a percentage for a double sign infraction
0.05 (5%)
0.05 (5%)
slash_fraction_downtime
Slashed amount as a percentage for downtime
0.01 (1%)
0.01 (1%)
staking
module
staking
moduleunbonding_time
A delegator must wait this time after unbonding before tokens become available
1,210,000s (~2 weeks)
259,200s (~3 days)
max_validators
The maximum number of validators in the network
125
125
max_entries
Max amount of unbound/redelegation operations in progress per account
7
7
historical_entries
Amount of unbound/redelegate entries to store
10,000
10,000
bond_denom
Denomination used in staking
ncheq
ncheq
ibc
module
ibc
modulemax_expected_time_per_block
Maximum expected time per block, used to enforce block delay. This parameter should reflect the largest amount of time that the chain might reasonably take to produce the next block under normal operating conditions. A safe choice is 3-5x the expected time per block.
30,000,000,000 (expressed in nanoseconds, ~ 30 seconds)
30,000,000,000 (expressed in nanoseconds, ~ 30 seconds)
allowed_clients
Defines the list of allowed client state types. We allow connections from other chains using the Tendermint client, and with light clients using the Solo Machine client.
[ "06-solomachine", "07-tendermint" ]
[ "06-solomachine", "07-tendermint" ]
ibc-transfer
module
ibc-transfer
modulesend_enabled
Enables or disables all cross-chain token transfers from this chain
true
true
receive_enabled
Enables or disables all cross-chain token transfers to this chain
true
true
Decision
The parameters above were agreed separate the cheqd mainnet and testnet parameters. We have bolded the testnet parameters that differ from mainnet.
Consequences
Backward Compatibility
The token denomination has been changed to make the smallest denomination 10^-9 CHEQ (= 1 ncheq) instead of 1 CHEQ. This is a breaking change from the earliest versions of the cheqd testnet that which required issuing new tokens to be transferred and issued to testnet node operators.
Positive
Inflation allows fees to be collected from block rewards in addition to transaction fees.
In production/mainnet, parameters can only be changed via a majority vote without veto defeat according to the cheqd network governance principles. This allows for more democratic governance frameworks to be created for a self-sovereign identity network.
Negative
Existing node operators will need to re-establish staking with new staking denomination and staking parameters.
Neutral
Unbonding period, and deposit period have all been reduced to 2 weeks to balance the speed at which decisions can be reached vs giving enough time to validators to participate.
References
Last updated