From 7ba0e1d67e56ab5b97c11203872e89f4e10c07d4 Mon Sep 17 00:00:00 2001 From: kaustubhkapatral Date: Fri, 6 Feb 2026 10:44:25 +0530 Subject: [PATCH 1/6] added cli command for gov proposals --- .../cheqd-cli-gov-proposals-types.md | 145 ++++++++++++++++++ docs/upgrades/propose-software-upgrade.md | 33 +++- 2 files changed, 171 insertions(+), 7 deletions(-) create mode 100644 docs/cheqd-cli/cheqd-cli-gov-proposals-types.md diff --git a/docs/cheqd-cli/cheqd-cli-gov-proposals-types.md b/docs/cheqd-cli/cheqd-cli-gov-proposals-types.md new file mode 100644 index 0000000..4ca857c --- /dev/null +++ b/docs/cheqd-cli/cheqd-cli-gov-proposals-types.md @@ -0,0 +1,145 @@ +# Using cheqd Cosmos CLI for submitting governance proposals + +From Cosmos SDk v0.50+ versions the `gov` module provides a draft json file for all types of proposals. These json files can be generated using the `draft-proposal` subcommand present within the `gov` module. + +```bash +cheqd-noded tx gov draft-proposal +Use the arrow keys to navigate: ↓ ↑ → ← +? Select proposal type: + ▸ text + community-pool-spend + software-upgrade + cancel-software-upgrade + other +``` +It provides an interactive interface and provides a json output using user submitted information. The json file can be submitted on chain for voting using the following command: +```bash +cheqd-noded tx gov submit-proposal [path/to/proposal.json] + --from \ + --chain-id cheqd-mainnet-1 \ + --gas auto \ + --gas-adjustment 1.4 \ + --gas-prices 5000ncheq +``` + +## Examples of `proposal.json` for a few commonly submitted proposal types: + +### 1) Text proposals: +```bash +{ + "metadata": "ipfs://CID", + "deposit": "8000000000000ncheq", + "title": "", + "summary": "", + "expedited": false +} +``` +The main parameters here are: + +- `proposal-title` - name of the proposal. +- `proposal_description` - proposal description; limited to 255 characters; you can use json markdown to provide links. + +### 2) Community Pool Spend: +```bash +{ + "messages": [ + { + "@type": "/cosmos.distribution.v1beta1.MsgCommunityPoolSpend", + "authority": "cheqd10d07y265gmmuvt4z0w9aw880jnsr700j5ql9az", + "recipient": "", + "amount": [ + { + "denom": "ncheq", + "amount": "" + } + ] + } + ], + "metadata": "ipfs://CID", + "deposit": "8000000000000ncheq", + "title": "", + "summary": "", + "expedited": false +} +``` +The main parameters here are: + +- `proposal-title` - name of the proposal. +- `proposal_description` - proposal description; limited to 255 characters; you can use json markdown to provide links. +- `recipient-address`- cheqd address to which the community pool tokens should be sent. +- `amount` - amount of tokens to be sent to the recipient address. + +### 3) Software upgrade: +``` +{ + "messages": [ + { + "@type": "/cosmos.upgrade.v1beta1.MsgSoftwareUpgrade", + "authority": "cheqd10d07y265gmmuvt4z0w9aw880jnsr700j5ql9az", + "plan": { + "name": "", + "time": "0001-01-01T00:00:00Z", + "height": "", + "info": "", + "upgraded_client_state": null + } + } + ], + "metadata": "ipfs://CID", + "deposit": "8000000000000ncheq", + "title": "", + "summary": "", + "expedited": false +} +``` + +The main parameters here are: + +- `proposal-title` - name of the proposal. +- `proposal_name` - name of proposal which will be used in `UpgradeHandler` in the new application, +- `proposal_description` - proposal description; limited to 255 characters; you can use json markdown to provide links. +- `upgrade_height` - height when upgrade process will be triggered. Keep in mind that this needs to be after voting period has ended. +- `upgrade_info` - link to the upgrade info file, containing new binaries. Needs to contain sha256 checksum. See example - `https://raw.githubusercontent.com/cheqd/cheqd-node/refs/heads/main/networks/mainnet/upgrades/upgrade-v3.json?checksum=sha256:5989f7d5bca686598c315eb74e8eb507d7f9f417d71008a31a6b828c48ce45eb` +- `operator_alias` - alias of a key which will be used for signing proposal. +- `` - identifier of chain which will be used while creating the blockchain. + +### 4) IBC Recover Client: +```bash +{ + "messages": [ + { + "@type": "/ibc.core.client.v1.MsgRecoverClient", + "subject_client_id": "", + "substitute_client_id": "", + "signer": "prop-submitter-address>" + } + ], + "metadata": "ipfs://CID", + "deposit": "8000000000000ncheq", + "title": "", + "summary": "", + "expedited": false +} +``` +- `proposal-title` - name of the proposal. +- `proposal_description` - proposal description; limited to 255 characters; you can use json markdown to provide links. +- `expired-client-id` - IBC client id of the expired connection. +- `new-client-id` - IBC client id of the replacement connection. +- `prop-submitter-address` - Cheqd address of the user who will submit the proposal. + +## Expedited Proposals + +Cosmos SDK v0.50+ also added support for **expedited proposals**. Expedited proposals have shorter a voting period and a higher tally threshold by default. If an expedited proposal fails to meet the threshold within the shorter voting period, it is then automatically converted to a regular proposal and restarts voting under regular voting conditions. + +### Submitting expedited proposals + +Any and all proposals can be submitted as expedited proposals by switching the `expedited` field to `true` in proposal.json file. Eg;- +```bash +{ + "metadata": "ipfs://CID", + "deposit": "8000000000000ncheq", + "title": "", + "summary": "", + "expedited": true +} +``` \ No newline at end of file diff --git a/docs/upgrades/propose-software-upgrade.md b/docs/upgrades/propose-software-upgrade.md index a5e421a..27da227 100644 --- a/docs/upgrades/propose-software-upgrade.md +++ b/docs/upgrades/propose-software-upgrade.md @@ -16,7 +16,7 @@ The next steps are describing the general flow for making a proposal: - Send proposal command to the pool; - After getting it, ledger will be in the `PROPOSAL_STATUS_DEPOSIT_PERIOD`; -- After sending the first deposit from one of other operators, proposal status will be moved to `PROPOSAL_STATUS_VOTING_PERIOD` and voting period (2 weeks for now) will be started; +- After sending the first deposit from one of other operators, proposal status will be moved to `PROPOSAL_STATUS_VOTING_PERIOD` and voting period (5 days for now) will be started; - Due to the voting period operators should send their votes to the pool, get new binary downloaded and got to be installed; - After voting period passing (for now it's 2 weeks) in case of success voting process proposal should be passed to `PROPOSAL_STATUS_PASSED`; - The next step is waiting for `height` which was suggested for upgrade. @@ -25,21 +25,40 @@ The next steps are describing the general flow for making a proposal: #### Command for sending proposal ```bash -cheqd-noded tx gov submit-legacy-proposal software-upgrade \ - --title "" \ - --description "" \ - --upgrade-height \ - --upgrade-info \ - --deposit 8000000000000ncheq \ +cheqd-noded tx gov submit-proposal [path/to/proposal.json] --from \ --chain-id cheqd-mainnet-1 \ --gas auto \ --gas-adjustment 1.4 \ --gas-prices 5000ncheq ``` +Where the contents of `proposal.json` are in the following format +``` +{ + "messages": [ + { + "@type": "/cosmos.upgrade.v1beta1.MsgSoftwareUpgrade", + "authority": "cheqd10d07y265gmmuvt4z0w9aw880jnsr700j5ql9az", + "plan": { + "name": "", + "time": "0001-01-01T00:00:00Z", + "height": "", + "info": "", + "upgraded_client_state": null + } + } + ], + "metadata": "ipfs://CID", + "deposit": "8000000000000ncheq", + "title": "", + "summary": "", + "expedited": false +} +``` The main parameters here are: +- `proposal-title` - name of the proposal. - `proposal_name` - name of proposal which will be used in `UpgradeHandler` in the new application, - `proposal_description` - proposal description; limited to 255 characters; you can use json markdown to provide links, - `upgrade_height` - height when upgrade process will be occurred. Keep in mind that this needs to be after voting period has ended. From 592884ba866791259179fd0a36fdb5d89ed5e594 Mon Sep 17 00:00:00 2001 From: Kaustubh K <54210167+kaustubhkapatral@users.noreply.github.com> Date: Fri, 6 Feb 2026 10:48:45 +0530 Subject: [PATCH 2/6] Correct code block and JSON format in upgrade proposal --- docs/upgrades/propose-software-upgrade.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/upgrades/propose-software-upgrade.md b/docs/upgrades/propose-software-upgrade.md index 27da227..943fd4b 100644 --- a/docs/upgrades/propose-software-upgrade.md +++ b/docs/upgrades/propose-software-upgrade.md @@ -33,7 +33,7 @@ cheqd-noded tx gov submit-proposal [path/to/proposal.json] --gas-prices 5000ncheq ``` Where the contents of `proposal.json` are in the following format -``` +```bash { "messages": [ { From b323875b2baa67e0c1bf3aecd349cf6638f0d42c Mon Sep 17 00:00:00 2001 From: filipdjokic Date: Fri, 6 Feb 2026 14:28:38 +0100 Subject: [PATCH 3/6] fix linter errors --- docs/cheqd-cli/cheqd-cli-gov-proposals-types.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/cheqd-cli/cheqd-cli-gov-proposals-types.md b/docs/cheqd-cli/cheqd-cli-gov-proposals-types.md index 4ca857c..107d602 100644 --- a/docs/cheqd-cli/cheqd-cli-gov-proposals-types.md +++ b/docs/cheqd-cli/cheqd-cli-gov-proposals-types.md @@ -12,7 +12,9 @@ Use the arrow keys to navigate: ↓ ↑ → ← cancel-software-upgrade other ``` + It provides an interactive interface and provides a json output using user submitted information. The json file can be submitted on chain for voting using the following command: + ```bash cheqd-noded tx gov submit-proposal [path/to/proposal.json] --from \ @@ -25,6 +27,7 @@ cheqd-noded tx gov submit-proposal [path/to/proposal.json] ## Examples of `proposal.json` for a few commonly submitted proposal types: ### 1) Text proposals: + ```bash { "metadata": "ipfs://CID", @@ -34,12 +37,14 @@ cheqd-noded tx gov submit-proposal [path/to/proposal.json] "expedited": false } ``` + The main parameters here are: - `proposal-title` - name of the proposal. - `proposal_description` - proposal description; limited to 255 characters; you can use json markdown to provide links. ### 2) Community Pool Spend: + ```bash { "messages": [ @@ -62,6 +67,7 @@ The main parameters here are: "expedited": false } ``` + The main parameters here are: - `proposal-title` - name of the proposal. @@ -70,6 +76,7 @@ The main parameters here are: - `amount` - amount of tokens to be sent to the recipient address. ### 3) Software upgrade: + ``` { "messages": [ @@ -104,6 +111,7 @@ The main parameters here are: - `` - identifier of chain which will be used while creating the blockchain. ### 4) IBC Recover Client: + ```bash { "messages": [ @@ -121,6 +129,9 @@ The main parameters here are: "expedited": false } ``` + +The main parameters here are: + - `proposal-title` - name of the proposal. - `proposal_description` - proposal description; limited to 255 characters; you can use json markdown to provide links. - `expired-client-id` - IBC client id of the expired connection. @@ -134,6 +145,7 @@ Cosmos SDK v0.50+ also added support for **expedited proposals**. Expedited prop ### Submitting expedited proposals Any and all proposals can be submitted as expedited proposals by switching the `expedited` field to `true` in proposal.json file. Eg;- + ```bash { "metadata": "ipfs://CID", @@ -142,4 +154,4 @@ Any and all proposals can be submitted as expedited proposals by switching the ` "summary": "", "expedited": true } -``` \ No newline at end of file +``` From eebb9fd6d8217065c706048f50da2b169325e815 Mon Sep 17 00:00:00 2001 From: filipdjokic Date: Fri, 6 Feb 2026 14:35:35 +0100 Subject: [PATCH 4/6] fix punctuation and trailing spaces --- docs/cheqd-cli/cheqd-cli-gov-proposals-types.md | 16 ++++++++-------- docs/upgrades/propose-software-upgrade.md | 6 ++++-- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/docs/cheqd-cli/cheqd-cli-gov-proposals-types.md b/docs/cheqd-cli/cheqd-cli-gov-proposals-types.md index 107d602..196a1d1 100644 --- a/docs/cheqd-cli/cheqd-cli-gov-proposals-types.md +++ b/docs/cheqd-cli/cheqd-cli-gov-proposals-types.md @@ -24,9 +24,9 @@ cheqd-noded tx gov submit-proposal [path/to/proposal.json] --gas-prices 5000ncheq ``` -## Examples of `proposal.json` for a few commonly submitted proposal types: +## Examples of `proposal.json` for a few commonly submitted proposal types -### 1) Text proposals: +### 1) Text proposals ```bash { @@ -43,7 +43,7 @@ The main parameters here are: - `proposal-title` - name of the proposal. - `proposal_description` - proposal description; limited to 255 characters; you can use json markdown to provide links. -### 2) Community Pool Spend: +### 2) Community Pool Spend ```bash { @@ -73,11 +73,11 @@ The main parameters here are: - `proposal-title` - name of the proposal. - `proposal_description` - proposal description; limited to 255 characters; you can use json markdown to provide links. - `recipient-address`- cheqd address to which the community pool tokens should be sent. -- `amount` - amount of tokens to be sent to the recipient address. +- `amount` - amount of tokens to be sent to the recipient address. -### 3) Software upgrade: +### 3) Software upgrade -``` +```json { "messages": [ { @@ -110,7 +110,7 @@ The main parameters here are: - `operator_alias` - alias of a key which will be used for signing proposal. - `` - identifier of chain which will be used while creating the blockchain. -### 4) IBC Recover Client: +### 4) IBC Recover Client ```bash { @@ -142,7 +142,7 @@ The main parameters here are: Cosmos SDK v0.50+ also added support for **expedited proposals**. Expedited proposals have shorter a voting period and a higher tally threshold by default. If an expedited proposal fails to meet the threshold within the shorter voting period, it is then automatically converted to a regular proposal and restarts voting under regular voting conditions. -### Submitting expedited proposals +### Submitting expedited proposals Any and all proposals can be submitted as expedited proposals by switching the `expedited` field to `true` in proposal.json file. Eg;- diff --git a/docs/upgrades/propose-software-upgrade.md b/docs/upgrades/propose-software-upgrade.md index 943fd4b..50952f3 100644 --- a/docs/upgrades/propose-software-upgrade.md +++ b/docs/upgrades/propose-software-upgrade.md @@ -32,8 +32,10 @@ cheqd-noded tx gov submit-proposal [path/to/proposal.json] --gas-adjustment 1.4 \ --gas-prices 5000ncheq ``` -Where the contents of `proposal.json` are in the following format -```bash + +Where the contents of `proposal.json` are in the following format: + +```json { "messages": [ { From e1c202d536cc7f14259f7973b9efc733f7db091c Mon Sep 17 00:00:00 2001 From: filipdjokic Date: Fri, 6 Feb 2026 15:09:45 +0100 Subject: [PATCH 5/6] Add links, use consistent variable naming convention & other fixes --- SUMMARY.md | 1 + .../cheqd-cli-gov-proposals-types.md | 40 +++++++++---------- docs/upgrades/propose-software-upgrade.md | 2 + 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/SUMMARY.md b/SUMMARY.md index 153177c..c1034a0 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -15,6 +15,7 @@ * [Manage accounts](docs/cheqd-cli/cheqd-cli-accounts.md) * [Manage a node](docs/cheqd-cli/cheqd-cli-node-management.md) * [Make transactions](docs/cheqd-cli/cheqd-cli-token-transactions.md) + * [Draft governance proposals](docs/cheqd-cli/cheqd-cli-gov-proposals.md) * [Use fee abstraction](docs/cheqd-cli/cheqd-cli-fee-abstraction.md) ## 🏦 Validator Guides diff --git a/docs/cheqd-cli/cheqd-cli-gov-proposals-types.md b/docs/cheqd-cli/cheqd-cli-gov-proposals-types.md index 196a1d1..f1d5b75 100644 --- a/docs/cheqd-cli/cheqd-cli-gov-proposals-types.md +++ b/docs/cheqd-cli/cheqd-cli-gov-proposals-types.md @@ -32,15 +32,15 @@ cheqd-noded tx gov submit-proposal [path/to/proposal.json] { "metadata": "ipfs://CID", "deposit": "8000000000000ncheq", - "title": "", - "summary": "", + "title": "", + "summary": "", "expedited": false } ``` The main parameters here are: -- `proposal-title` - name of the proposal. +- `proposal_title` - name of the proposal. - `proposal_description` - proposal description; limited to 255 characters; you can use json markdown to provide links. ### 2) Community Pool Spend @@ -51,7 +51,7 @@ The main parameters here are: { "@type": "/cosmos.distribution.v1beta1.MsgCommunityPoolSpend", "authority": "cheqd10d07y265gmmuvt4z0w9aw880jnsr700j5ql9az", - "recipient": "", + "recipient": "", "amount": [ { "denom": "ncheq", @@ -62,17 +62,17 @@ The main parameters here are: ], "metadata": "ipfs://CID", "deposit": "8000000000000ncheq", - "title": "", - "summary": "", + "title": "", + "summary": "", "expedited": false } ``` The main parameters here are: -- `proposal-title` - name of the proposal. +- `proposal_title` - name of the proposal. - `proposal_description` - proposal description; limited to 255 characters; you can use json markdown to provide links. -- `recipient-address`- cheqd address to which the community pool tokens should be sent. +- `recipient_address`- cheqd address to which the community pool tokens should be sent. - `amount` - amount of tokens to be sent to the recipient address. ### 3) Software upgrade @@ -94,7 +94,7 @@ The main parameters here are: ], "metadata": "ipfs://CID", "deposit": "8000000000000ncheq", - "title": "", + "title": "", "summary": "", "expedited": false } @@ -102,7 +102,7 @@ The main parameters here are: The main parameters here are: -- `proposal-title` - name of the proposal. +- `proposal_title` - name of the proposal. - `proposal_name` - name of proposal which will be used in `UpgradeHandler` in the new application, - `proposal_description` - proposal description; limited to 255 characters; you can use json markdown to provide links. - `upgrade_height` - height when upgrade process will be triggered. Keep in mind that this needs to be after voting period has ended. @@ -117,14 +117,14 @@ The main parameters here are: "messages": [ { "@type": "/ibc.core.client.v1.MsgRecoverClient", - "subject_client_id": "", - "substitute_client_id": "", - "signer": "prop-submitter-address>" + "subject_client_id": "", + "substitute_client_id": "", + "signer": "prop_submitter_address>" } ], "metadata": "ipfs://CID", "deposit": "8000000000000ncheq", - "title": "", + "title": "", "summary": "", "expedited": false } @@ -132,11 +132,11 @@ The main parameters here are: The main parameters here are: -- `proposal-title` - name of the proposal. +- `proposal_title` - name of the proposal. - `proposal_description` - proposal description; limited to 255 characters; you can use json markdown to provide links. -- `expired-client-id` - IBC client id of the expired connection. -- `new-client-id` - IBC client id of the replacement connection. -- `prop-submitter-address` - Cheqd address of the user who will submit the proposal. +- `expired_client_id` - IBC client id of the expired connection. +- `new_client_id` - IBC client id of the replacement connection. +- `prop_submitter_address` - Cheqd address of the user who will submit the proposal. ## Expedited Proposals @@ -150,8 +150,8 @@ Any and all proposals can be submitted as expedited proposals by switching the ` { "metadata": "ipfs://CID", "deposit": "8000000000000ncheq", - "title": "", - "summary": "", + "title": "", + "summary": "", "expedited": true } ``` diff --git a/docs/upgrades/propose-software-upgrade.md b/docs/upgrades/propose-software-upgrade.md index 50952f3..f7abcbc 100644 --- a/docs/upgrades/propose-software-upgrade.md +++ b/docs/upgrades/propose-software-upgrade.md @@ -68,6 +68,8 @@ The main parameters here are: - `operator_alias` - alias of a key which will be used for signing proposal, - `` - identifier of chain which will be used while creating the blockchain. +Follow our [guide for drafting governance proposal](../cheqd-cli/cheqd-cli-gov-proposals-types.md) if you need help with creating the proposal file. + In case of successful submitting the next command can be used for getting `proposal_id`: ```bash From c67cd4fd912bf511c370c6cf4f6309e3de520278 Mon Sep 17 00:00:00 2001 From: filipdjokic Date: Fri, 6 Feb 2026 15:26:34 +0100 Subject: [PATCH 6/6] Fix typo --- SUMMARY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SUMMARY.md b/SUMMARY.md index c1034a0..e5d2ff1 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -15,7 +15,7 @@ * [Manage accounts](docs/cheqd-cli/cheqd-cli-accounts.md) * [Manage a node](docs/cheqd-cli/cheqd-cli-node-management.md) * [Make transactions](docs/cheqd-cli/cheqd-cli-token-transactions.md) - * [Draft governance proposals](docs/cheqd-cli/cheqd-cli-gov-proposals.md) + * [Draft governance proposals](docs/cheqd-cli/cheqd-cli-gov-proposals-types.md) * [Use fee abstraction](docs/cheqd-cli/cheqd-cli-fee-abstraction.md) ## 🏦 Validator Guides