description. These provide the opportunity to include markdown if formatted correctly, as well as line breaks with \n.
Beware, however, that if you are using the CLI to create a proposal, and setting description using a flag, the text will be escaped which may have undesired effects.
Formatting a proposal can be a trial-and-error process, which is why first submitting to the testnet is recommended.
The examples shown below are of the text in a json file packaged into a submit-proposal transaction sent on-chain. More details about how to submit a proposal are in the Submitting a Governance Proposal section, but for now just be aware that the examples are the contents of a file separate from the transaction. As a general rule, any flags specific to a proposal (e.g., Title, description, deposit, parameters, recipient) can be placed in a json file, while flags general to a transaction of any kind (e.g., chain-id, node-id, gas, fees) can remain in the CLI.
Text
Text proposals are used by delegators to agree to a certain strategy, plan, commitment, future upgrade, or any other statement in the form of text. Aside from having a record of the proposal outcome on the Cosmos Hub chain, a text proposal has no direct effect on the change Cosmos Hub. There are four components:- Title - the distinguishing name of the proposal, typically the way that explorers list proposals
- Summary - the body of the proposal that further describes what is being proposed and details surrounding the proposal
- Deposit - the amount that will be contributed to the deposit (in micro-ATOMs “uatom”) from the account submitting the proposal
- Metadata - usually a link to an off-chain resource
Real example
Proposal 12 asked if the Cosmos Hub community of validators charging 0% commission was harmful to the success of the Cosmos Hub. You can usegaiad tx gov draft-proposal and choose text to create the proposal file.
You must submit the proposal using gaiad tx gov submit-proposal <path_to_text_proposal.json>.
Community Pool Spend
There are five (5) components:- Title - the distinguishing name of the proposal, typically the way that explorers list proposals
- Summary - the body of the proposal that further describes what is being proposed and details surrounding the proposal
- Recipient - the Cosmos Hub (bech32-based) address that will receive funding from the Community Pool
- Amount - the amount of funding that the recipient will receive in micro-ATOMs (uatom)
- Deposit - the amount that will be contributed to the deposit (in micro-ATOMs “uatom”) from the account submitting the proposal
Real example
Theamount is 1000000000uatom. 1,000,000 micro-ATOM is equal to 1 ATOM, so recipient address cosmos1xf2qwf6g6xvuttpf37xwrgp08qq984244952ze will receive 1000 ATOM if this proposal is passed.
The deposit": "1000000uatom results in 1 ATOM being used from the proposal submitter’s account.
You can use the gaiad tx gov draft-proposal utility and choose /cosmos.distribution.v1beta1.MsgCommunityPoolSpend to create a draft proposal file.
You must use gaiad tx gov submit-proposal <path_to_proposal_file.json> to submit the proposal. The proposal cannot be submitted using submit-legacy-proposal.
Legacy Param Change
Note: The changes outlined here must be submitted usingsubmit-legacy-proposal.
For param-change proposals, there are arguably seven (7) components, though three are nested beneath ‘Changes’:
- Title - the distinguishing name of the proposal, typically the way that explorers list proposals
- Description - the body of the proposal that further describes what is being proposed and details surrounding the proposal
- Changes - a component containing
- Subspace - the Cosmos Hub module with the parameter that is being changed
- Key - the parameter that will be changed
- Value - the value of the parameter that will be changed by the governance mechanism
- Deposit - the amount that will be contributed to the deposit (in micro-ATOMs “uatom”) from the account submitting the proposal
To update any of the cosmos-sdk modules you must use
gaiad tx gov submit-proposal with a correctly formatted proposal file containing a MsgUpdateParams.When using MsgUpdateParams please note that all fields must always be specified (PUT semantics). Please be careful to not accidentally submit a proposal
that changes more parameters than was intended. The parameters that you do not want to change you can simply copy from existing module params.