/CosmosParametersWiki

An educational wiki for the Cosmos Hub that outlines the Hub's parameters, describes their functions, and describes the potential implications of modifying each parameter.

Creative Commons Zero v1.0 UniversalCC0-1.0

Note: the Cosmos Hub and Cosmos SDK has been upgraded, making parts of this information no longer relevant. Please see the more actively maintained governance repo here: https://github.com/cosmos/governance

Cosmos Hub 3 - Parameter-Change Best Practices & Wiki

This Cosmos Hub educational documentation aims to outline the Hub's parameters, describe their functions, and describe the potential implications of modifying each parameter. This documentation also aims to provide guidelines for creating and assessing parameter-change proposals.

This documentation has not had adequate review from experts or testing from participants, so please be cautious when using it. Discuss its development here and please provide feedback either in the forum or by opening a Github issue. If you are technically inclined, this is the full list of modules in the Cosmos SDK.

Best Practices

Drafting and submitting a parameter-change governance proposal involves two kinds of risk: losing proposal deposit amounts and the potential to alter the function of the Cosmos Hub network in an undesirable way. The objective of this documentation is to reduce these risks by preparing participants for what to pay attention to and for what information to consider in a proposal. Ideally, a proposal should only fail to pass because the voters 1) are aware and engaged and 2) are able to make an informed decision to vote down the proposal.

If you are considering drafting a community-spend proposal, you should know:

  1. How the voting process and governance mechanism works
  2. Where and how to engage with the Cosmos community about your proposed change(s)
  3. What the community will likely want to know about the proposed change(s)
  4. How to prepare your final proposal draft for submission
  5. How to submit your proposal to the Cosmos Hub testnet & mainnet

Modules Wiki

There are currently 8 modules active in the Cosmos Hub with parameters that may be altered via governance proposal:

  1. auth - Authentication of accounts and transactions
  2. bank - Token transfer functionalities
  3. gov - On-chain governance proposals and voting
  4. staking - Proof-of-stake layer
  5. slashing - Validator punishment mechanisms
  6. distribution - Fee distribution and staking token provision distribution
  7. crisis - Halting the blockchain under certain circumstances (ie. if an invariant is broken)
  8. mint - Creation of new units of staking token

There is an index of these parameters here.

The value or setting for each parameter may be verified in the chain's genesis file, found here. These are the parameter settings that the latest Cosmos Hub chain launched with, and will remain so unless a governance proposal or software upgrade changes them.

There are also ways to query the current settings for each module's parameter(s). Some can be queried with the command line program gaiacli, but I'm still exploring the ways that these settings can be queried. Want to help? I've opened this up as an issue here. You can begin by using the command gaia q [module] -h to get help about the subcommands for the module you want to query. For example, gaiacli q staking params --chain-id cosmoshub-3 --node http://51.79.82.228:26657 returns the settings of four parameters:

unbonding_time: 504h0m0s
max_validators: 125
max_entries: 7
bond_denom: uatom

Note

  • You cannot currently query the bank module's parameter, which is sendenabled. You also cannot query the crisis module's parameters.
  • You will need to compile gaiacli from source into a binary file executable by your operating system eg. MacOS, Windows, Linux
  • You will need to indicate which chain you are querying, and currently this is --chain-id cosmoshub-3
  • You will need to connect to a full node. If gaiacli isn't already configured for this, you can use this tag in your command --node [address]:26657.

Full nodes

Running a full node can be difficult for those not technically-inclined, so you may choose to use a third-party's full node. In this case, the primary security risk is that of censorship: it's the single place where you have a single gateway to the network, and any messages submitted through an untrusted node could be censored.

Contributors

This documentation was created by Gavin Birch (Figment Networks). Its development was supported by community funding that was approved on January 29, 2020 by the Cosmos Hub via community-spend proposal Prop23. You can read the full proposal PDF here. You can also create an issue or pull request to participate in its development at any time!

Special thanks to the following for helping to provide credible information that contributed to this wiki's development: