# Formatting a proposal Begin by writing out the proposal description in markdown. Confirm that it's under the charlimit (5k until Theta and 10k after). Then generate the proposal with `--offline` so that it is not signed but the json is created. Pipe it into a file like `unsigned.json`. You can leave the description empty or with dummy text here because the CLI will try to escape the chars but likely not the way you want. ```bash > gaiad tx gov submit-proposal software-upgrade v7-Theta \ --title v7-Theta \ --deposit 50000uatom \ --upgrade-height 10085397 \ --upgrade-info '{"binaries":{"linux/amd64":"https://github.com/cosmos/gaia/releases/download/v7.0.0/gaiad-v7.0.0-linux-amd64?checksum=sha256:dc0e5b6690a55f0f1c41ad96f068049e25d9e85d53c0587284b7f1a1f9a51545","linux/arm64":"https://github.com/cosmos/gaia/releases/download/v7.0.0/gaiad-v7.0.0-linux-arm64?checksum=sha256:994f67ec8134504ae032a1ae58caf769b5a9a1581a38705efd94ab654a7f6173","darwin/amd64":"https://github.com/cosmos/gaia/releases/download/v7.0.0/gaiad-v7.0.0-darwin-amd64?checksum=sha256:2b7425b27e1c04877f0e9230f1657bee1b3274b73bee8f550a290cc505444dbf","windows/amd64":"https://github.com/cosmos/gaia/releases/download/v7.0.0/gaiad-v7.0.0-windows-amd64.exe?checksum=sha256:1362b026e942cc16ab2b7f35a3ff39fb9075dcde70570635485d4b1866e1d036"}}' \ --description "#test\r\n\r##test" \ --from $(gaiad keys show dev -a) \ --gas auto \ --generate-only \ --sequence 29 > unsigned.json ``` > Note: you may get errors about incorrect sequence. Just update it with what the error tells you to or query yourself with `gaiad q auth <account>`. This will generate a JSON file like: ```json { "body": { "messages": [ { "@type": "/cosmos.gov.v1beta1.MsgSubmitProposal", "content": { "@type": "/cosmos.upgrade.v1beta1.SoftwareUpgradeProposal", "title": "v7-Theta", "description": "#test\\r\\n\\r##test", "plan": { "name": "v7-Theta", "time": "0001-01-01T00:00:00Z", "height": "10085397", "info": "{\"binaries\":{\"linux/amd64\":\"https://github.com/cosmos/gaia/releases/download/v7.0.0/gaiad-v7.0.0-linux-amd64?checksum=sha256:dc0e5b6690a55f0f1c41ad96f068049e25d9e85d53c0587284b7f1a1f9a51545\",\"linux/arm64\":\"https://github.com/cosmos/gaia/releases/download/v7.0.0/gaiad-v7.0.0-linux-arm64?checksum=sha256:994f67ec8134504ae032a1ae58caf769b5a9a1581a38705efd94ab654a7f6173\",\"darwin/amd64\":\"https://github.com/cosmos/gaia/releases/download/v7.0.0/gaiad-v7.0.0-darwin-amd64?checksum=sha256:2b7425b27e1c04877f0e9230f1657bee1b3274b73bee8f550a290cc505444dbf\",\"windows/amd64\":\"https://github.com/cosmos/gaia/releases/download/v7.0.0/gaiad-v7.0.0-windows-amd64.exe?checksum=sha256:1362b026e942cc16ab2b7f35a3ff39fb9075dcde70570635485d4b1866e1d036\"}}", "upgraded_client_state": null } }, "initial_deposit": [ { "denom": "uatom", "amount": "50000" } ], "proposer": "cosmos1hxv7mpztvln45eghez6evw2ypcw4vjmsmr8cdx" } ], "memo": "", "timeout_height": "0", "extension_options": [], "non_critical_extension_options": [] }, "auth_info": { "signer_infos": [], "fee": { "amount": [], "gas_limit": "163345", "payer": "", "granter": "" } }, "signatures": [] } ``` Take your markdown for the description and paste it into https://www.cescaper.com/. Copy the escaped format that converts new lines into `\r\n` and replace your empty description or dummy text in the JSON.