--- tags: upgrade,proposal --- # Software Upgrade Proposal Workflow * [v8-Rho Mainnet Proposal Text](https://hackmd.io/NEFlSY9fQViCb4Hl5A-24Q) * [Unsigned JSON](https://github.com/cosmos/testnets/blob/master/public/UPGRADES.md#upgrade-height-and-binaries) for the testnet v8-Rho proposal For mainnet: * [X] Desired upgrade time: `2023-02-16 13:00 UTC` * Estimated block height: `14099412` * [X] Proposer address: `cosmos1e8thjs478fuuerp6v55sgatxgg4ytyyc02w4ag` * [X] Binaries * [ ] e66c0e62aa5b0ccf9fb174c50b598df6048c1d7952f5f99b807b9934c9629f2c gaiad-v8.0.0-darwin-amd64 * [ ] 95000b52f55f22e1b40b81263bc0ae0df1351e8b9b40264c54509ad1e4d6e9fb gaiad-v8.0.0-darwin-arm64 * [ ] 6d0c123e246a8b56ba534f70dd5dc72058b00fd5e5dde5ea40509ff51efc42e2 gaiad-v8.0.0-linux-amd64 * [ ] a0afbbe35eda3d5e52a7907bcae296415e84b3ff6c7da97429d91f324004a5ab gaiad-v8.0.0-linux-arm64 * [ ] fca2a4371eef6dc50b6b46a025bde3537fa96ec32c732499c8be8aa64683f147 gaiad-v8.0.0-windows-amd64.exe ## Preparation * Calculate an appropriate block height for the upgrade to take place * [Block height estimator spreadsheet](https://docs.google.com/spreadsheets/d/13HsQTevmnUycX2uihh32EcuY0u8I-EcvBLgLd8vs69w/edit#gid=24297356) * Obtain the URLs for the new binary files * The chain ID is `cosmoshub-4` * This workflow will set the `v8-Rho` software upgrade * The proposer address is `cosmos1e8thjs478fuuerp6v55sgatxgg4ytyyc02w4ag` * The node that is submitting the proposal must be online, otherwise use the `--node flag` * If the Gaia home folder is not `~/.gaia`, set the `--home [gaia home]` flag in all `gaiad` commands ## Format and Submit a Proposal 1. Generate the usigned proposal JSON using the `--offline` flag. Add a placeholder for the `description` text. ```bash gaiad tx gov submit-proposal software-upgrade v8-Rho \ --title v8-Rho \ --deposit 1000uatom \ --upgrade-height 14099412 \ --upgrade-info '{"binaries":{"linux/amd64":"https://github.com/cosmos/gaia/releases/download/v8.0.0/gaiad-v8.0.0-linux-amd64?checksum=sha256:6d0c123e246a8b56ba534f70dd5dc72058b00fd5e5dde5ea40509ff51efc42e2","linux/arm64":"https://github.com/cosmos/gaia/releases/download/v8.0.0/gaiad-v8.0.0-linux-arm64?checksum=sha256:a0afbbe35eda3d5e52a7907bcae296415e84b3ff6c7da97429d91f324004a5ab","darwin/amd64":"https://github.com/cosmos/gaia/releases/download/v8.0.0/gaiad-v8.0.0-darwin-amd64?checksum=sha256:e66c0e62aa5b0ccf9fb174c50b598df6048c1d7952f5f99b807b9934c9629f2c","darwin/arm64":"https://github.com/cosmos/gaia/releases/download/v8.0.0/gaiad-v8.0.0-darwin-arm64?checksum=sha256:95000b52f55f22e1b40b81263bc0ae0df1351e8b9b40264c54509ad1e4d6e9fb","windows/amd64":"https://github.com/cosmos/gaia/releases/download/v8.0.0/gaiad-v8.0.0-windows-amd64.exe?checksum=sha256:fca2a4371eef6dc50b6b46a025bde3537fa96ec32c732499c8be8aa64683f147"}}' \ --description "placeholder" \ --from cosmos1e8thjs478fuuerp6v55sgatxgg4ytyyc02w4ag \ --fees 5000uatom \ --chain-id cosmoshub-4 \ --generate-only > unsigned-rho-proposal.json ``` > You may get an incorrect sequence error. Update the command with the number listed in the error or query the account sequence with `gaiad q auth <account>`. The `unsigned.json` file will look like this: ```json { "body": { "messages": [ { "@type": "/cosmos.gov.v1beta1.MsgSubmitProposal", "content": { "@type": "/cosmos.upgrade.v1beta1.SoftwareUpgradeProposal", "title": "v7-Theta", "description": "placeholder", "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": [] } ``` After the unsigned proposal gets generated, modify the gas limit from `200 000` to `1 000 000`. 2. Write out the proposal description in Markdown. It must be less than 10k characters long. ```markdown # v8-Rho Software Upgrade ## Summary This on-chain upgrade governance proposal is to adopt Gaia `v8.0.0`. By voting YES to this proposal, you approve of adding these updates to the Cosmos Hub. This upgrade does not include the Replicated Security feature; that will be part of the v9-Lambda upgrade. The forum post discussing this upgrade can be found [here](https://forum.cosmos.network/t/upcoming-interchain-accounts-bugfix-release/8911/8). #### Background Since the last v7-Theta upgrade at height 9283650 there have been a number of updates, fixes and new modules added to Gaia. **Updates** - Bump [IBC](https://github.com/cosmos/ibc-go) to `v3.4.0` from `v3.0.0` which includes a fix for the interchain accounts vulnerability. See the full [Changelog](https://github.com/cosmos/ibc-go/blob/v3.4.0/CHANGELOG.md) for more information. - Bump [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) to `v0.45.12` from `v0.45.9`. See the full [Release Notes](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.12) and [Commit History](https://github.com/cosmos/cosmos-sdk/compare/v0.45.9...v0.45.12) for details and updates between the last version of the SDK used in Theta. - Bump [Tendermint](https://github.com/informalsystems/tendermint) to `v0.34.24` and replace with the [Informal Systems fork](https://github.com/informalsystems/tendermint) to ensure software continuity. - Bump [Liquidity](https://github.com/Gravity-Devs/liquidity) to `v1.5.3` which notably includes updating Go to `1.18` and the Cosmos-SDK to `v45.11` to ensure compatiblity with the Cosmos Hub. - Bump [Packet Forward Middleware](https://github.com/strangelove-ventures/packet-forward-middleware) to `v3.1.1` from `v2.1.1`. Users should note that PFM was not configure properly in the previous version of Gaia. This module update includes necessary bug fixes to make it functional on the Cosmos Hub in v8. **Features** - Add the [Global Fee](https://github.com/cosmos/gaia/tree/main/x/globalfee) module to the Cosmos Hub, which enables setting transaction fees at the network level via `param-change` governance proposal. For more information, see the [module documentation](https://github.com/cosmos/gaia/blob/main/docs/modules/globalfee.md). - Add the `debug bech32-convert` [command](https://github.com/cosmos/gaia/pull/1845), enabling users to convert any bech32 string to the cosmos prefix. **Fixes** - Fix Bank Denom Metadata [issue](https://github.com/cosmos/gaia/pull/1892). In a previous upgrade, the `x/bank` metadata was incorrectly migrated, resulting in an incorrect bank metadata. See the fix in the [upgrade handler](https://github.com/cosmos/gaia/blob/release/v8.0.x/app/upgrades/v8/upgrades.go#L19) for more information. - Fix Quicksilver ICA exploit detailed in the [forum post](https://forum.cosmos.network/t/upcoming-interchain-accounts-bugfix-release/8911) on the incident. See the fix in the [upgrade handler](https://github.com/cosmos/gaia/blob/release/v8.0.x/app/upgrades/v8/upgrades.go#L58) for more information. **Tests** - Add a [suite of E2E tests](https://github.com/cosmos/gaia/tree/release/v8.0.x/tests/e2e) to ensure core features of the Cosmos Hub work as expected. #### Testnet V8 Rho went live on the persistent testnet after the successful simulated upgrade. For more information, see the testnet [upgrade proposal](https://explorer.theta-testnet.polypore.xyz/proposals/112) or [block explorer](https://explorer.theta-testnet.polypore.xyz/), and visit the [persistent testnet documentation](https://github.com/cosmos/testnets/tree/master/public). #### On-Chain Upgrade Process This upgrade can be performed in multiple ways. When the network reaches the halt height, the state machine program of the Cosmos Hub will be halted. The classic method for upgrading requires all validators and node operators to manually substitute the existing state machine binary with the new binary. Alternatively node operators can use the Cosmovisor utility to swap the binaries automatically. Cosmovisor also includes the ability to download the binaries automatically *before* swapping them. Documentation on Cosmovisor can be found [here](https://github.com/cosmos/cosmos-sdk/tree/main/tools/cosmovisor). If you are interested in trying Cosmosvisor with a simulated local upgrade please see the [local testnet documentation](https://github.com/cosmos/testnets/tree/master/local). Because it is an onchain upgrade process, the blockchain will be continued with all the accumulated history with continuous block height. #### Potential Risk Factors Although very extensive testing and simulation has taken place there always still exists a risk that the Cosmos Hub might experience problems due to potential bugs or errors from the new features. In the case of serious problems, validators should stop operating the network immediately. Cosmos Core Contributors will coordinate with validators in the `#validators-verified channel` of the [Cosmos Developer Discord](https://discord.gg/cosmosnetwork) to create and execute a contingency plan. Likely this will be an emergency release with fixes or the recommendation to consider the upgrade aborted and revert back to the previous release of gaia (v7.1.0). ``` 3. Paste the Markdown for the proposal description into https://www.cescaper.com/. From cescaper: ``` # v8-Rho Software Upgrade\r\n\r\n## Summary\r\n\r\nThis on-chain upgrade governance proposal is to adopt Gaia `v8.0.0`. By voting YES to this proposal, you approve of adding these updates to the Cosmos Hub.\r\n\r\nThis upgrade does not include the Replicated Security feature; that will be part of the v9-Lambda upgrade.\r\n\r\nThe forum post discussing this upgrade can be found [here](https://forum.cosmos.network/t/upcoming-interchain-accounts-bugfix-release/8911/8).\r\n\r\n#### Background\r\nSince the last v7-Theta upgrade at height 9283650 there have been a number of updates, fixes and new modules added to Gaia.\r\n\r\n**Updates**\r\n- Bump [IBC](https://github.com/cosmos/ibc-go) to `v3.4.0` from `v3.0.0` which includes a fix for the interchain accounts vulnerability. See the full [Changelog](https://github.com/cosmos/ibc-go/blob/v3.4.0/CHANGELOG.md) for more information.\r\n- Bump [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) to `v0.45.12` from `v0.45.9`. See the full [Release Notes](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.12) and [Commit History](https://github.com/cosmos/cosmos-sdk/compare/v0.45.9...v0.45.12) for details and updates between the last version of the SDK used in Theta. \r\n- Bump [Tendermint](https://github.com/informalsystems/tendermint) to `v0.34.24` and replace with the [Informal Systems fork](https://github.com/informalsystems/tendermint) to ensure software continuity.\r\n- Bump [Liquidity](https://github.com/Gravity-Devs/liquidity) to `v1.5.3` which notably includes updating Go to `1.18` and the Cosmos-SDK to `v45.11` to ensure compatiblity with the Cosmos Hub.\r\n- Bump [Packet Forward Middleware](https://github.com/strangelove-ventures/packet-forward-middleware) to `v3.1.1` from `v2.1.1`. Users should note that PFM was not configure properly in the previous version of Gaia. This module update includes necessary bug fixes to make it functional on the Cosmos Hub in v8.\r\n\r\n**Features**\r\n- Add the [Global Fee](https://github.com/cosmos/gaia/tree/main/x/globalfee) module to the Cosmos Hub, which enables setting transaction fees at the network level via `param-change` governance proposal. For more information, see the [module documentation](https://github.com/cosmos/gaia/blob/main/docs/modules/globalfee.md).\r\n- Add the `debug bech32-convert` [command](https://github.com/cosmos/gaia/pull/1845), enabling users to convert any bech32 string to the cosmos prefix. \r\n\r\n**Fixes**\r\n- Fix Bank Denom Metadata [issue](https://github.com/cosmos/gaia/pull/1892). In a previous upgrade, the `x/bank` metadata was incorrectly migrated, resulting in an incorrect bank metadata. See the fix in the [upgrade handler](https://github.com/cosmos/gaia/blob/release/v8.0.x/app/upgrades/v8/upgrades.go#L19) for more information. \r\n- Fix Quicksilver ICA exploit detailed in the [forum post](https://forum.cosmos.network/t/upcoming-interchain-accounts-bugfix-release/8911) on the incident. See the fix in the [upgrade handler](https://github.com/cosmos/gaia/blob/release/v8.0.x/app/upgrades/v8/upgrades.go#L58) for more information.\r\n\r\n**Tests**\r\n- Add a [suite of E2E tests](https://github.com/cosmos/gaia/tree/release/v8.0.x/tests/e2e) to ensure core features of the Cosmos Hub work as expected.\r\n\r\n\r\n#### Testnet\r\nV8 Rho went live on the persistent testnet after the successful simulated upgrade. For more information, see the testnet [upgrade proposal](https://explorer.theta-testnet.polypore.xyz/proposals/112) or [block explorer](https://explorer.theta-testnet.polypore.xyz/), and visit the [persistent testnet documentation](https://github.com/cosmos/testnets/tree/master/public).\r\n\r\n#### On-Chain Upgrade Process\r\n\r\nThis upgrade can be performed in multiple ways. When the network reaches the halt height, the state machine program of the Cosmos Hub will be halted. The classic method for upgrading requires all validators and node operators to manually substitute the existing state machine binary with the new binary. Alternatively node operators can use the Cosmovisor utility to swap the binaries automatically. Cosmovisor also includes the ability to download the binaries automatically *before* swapping them. Documentation on Cosmovisor can be found [here](https://github.com/cosmos/cosmos-sdk/tree/main/tools/cosmovisor). If you are interested in trying Cosmosvisor with a simulated local upgrade please see the [local testnet documentation](https://github.com/cosmos/testnets/tree/master/local). Because it is an onchain upgrade process, the blockchain will be continued with all the accumulated history with continuous block height.\r\n\r\n#### Potential Risk Factors\r\n\r\nAlthough very extensive testing and simulation has taken place there always still exists a risk that the Cosmos Hub might experience problems due to potential bugs or errors from the new features. In the case of serious problems, validators should stop operating the network immediately. Cosmos Core Contributors will coordinate with validators in the `#validators-verified channel` of the [Cosmos Developer Discord](https://discord.gg/cosmosnetwork) to create and execute a contingency plan. Likely this will be an emergency release with fixes or the recommendation to consider the upgrade aborted and revert back to the previous release of gaia (v7.1.0). ``` Copy the escaped format that converts new lines into `\r\n` and replace your placeholder text in `unsigned.json` with it. Updated `unsigned.json`: ```json { "body": { "messages": [ { "@type": "/cosmos.gov.v1beta1.MsgSubmitProposal", "content": { "@type": "/cosmos.upgrade.v1beta1.SoftwareUpgradeProposal", "title": "v8-Rho", "description": "# v8-Rho Software Upgrade\r\n\r\n## Summary\r\n\r\nThis on-chain upgrade governance proposal is to adopt Gaia `v8.0.0`. By voting YES to this proposal, you approve of adding these updates to the Cosmos Hub.\r\n\r\nThis upgrade does not include the Replicated Security feature; that will be part of the v9-Lambda upgrade.\r\n\r\nThe forum post discussing this upgrade can be found [here](https://forum.cosmos.network/t/upcoming-interchain-accounts-bugfix-release/8911/8).\r\n\r\n#### Background\r\nSince the last v7-Theta upgrade at height 9283650 there have been a number of updates, fixes and new modules added to Gaia.\r\n\r\n**Updates**\r\n- Bump [IBC](https://github.com/cosmos/ibc-go) to `v3.4.0` from `v3.0.0` which includes a fix for the interchain accounts vulnerability. See the full [Changelog](https://github.com/cosmos/ibc-go/blob/v3.4.0/CHANGELOG.md) for more information.\r\n- Bump [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) to `v0.45.12` from `v0.45.9`. See the full [Release Notes](https://github.com/cosmos/cosmos-sdk/releases/tag/v0.45.12) and [Commit History](https://github.com/cosmos/cosmos-sdk/compare/v0.45.9...v0.45.12) for details and updates between the last version of the SDK used in Theta. \r\n- Bump [Tendermint](https://github.com/informalsystems/tendermint) to `v0.34.24` and replace with the [Informal Systems fork](https://github.com/informalsystems/tendermint) to ensure software continuity.\r\n- Bump [Liquidity](https://github.com/Gravity-Devs/liquidity) to `v1.5.3` which notably includes updating Go to `1.18` and the Cosmos-SDK to `v45.11` to ensure compatiblity with the Cosmos Hub.\r\n- Bump [Packet Forward Middleware](https://github.com/strangelove-ventures/packet-forward-middleware) to `v3.1.1` from `v2.1.1`. Users should note that PFM was not configure properly in the previous version of Gaia. This module update includes necessary bug fixes to make it functional on the Cosmos Hub in v8.\r\n\r\n**Features**\r\n- Add the [Global Fee](https://github.com/cosmos/gaia/tree/main/x/globalfee) module to the Cosmos Hub, which enables setting transaction fees at the network level via `param-change` governance proposal. For more information, see the [module documentation](https://github.com/cosmos/gaia/blob/main/docs/modules/globalfee.md).\r\n- Add the `debug bech32-convert` [command](https://github.com/cosmos/gaia/pull/1845), enabling users to convert any bech32 string to the cosmos prefix. \r\n\r\n**Fixes**\r\n- Fix Bank Denom Metadata [issue](https://github.com/cosmos/gaia/pull/1892). In a previous upgrade, the `x/bank` metadata was incorrectly migrated, resulting in an incorrect bank metadata. See the fix in the [upgrade handler](https://github.com/cosmos/gaia/blob/release/v8.0.x/app/upgrades/v8/upgrades.go#L19) for more information. \r\n- Fix Quicksilver ICA exploit detailed in the [forum post](https://forum.cosmos.network/t/upcoming-interchain-accounts-bugfix-release/8911) on the incident. See the fix in the [upgrade handler](https://github.com/cosmos/gaia/blob/release/v8.0.x/app/upgrades/v8/upgrades.go#L58) for more information.\r\n\r\n**Tests**\r\n- Add a [suite of E2E tests](https://github.com/cosmos/gaia/tree/release/v8.0.x/tests/e2e) to ensure core features of the Cosmos Hub work as expected.\r\n\r\n\r\n#### Testnet\r\nV8 Rho went live on the persistent testnet after the successful simulated upgrade. For more information, see the testnet [upgrade proposal](https://explorer.theta-testnet.polypore.xyz/proposals/112) or [block explorer](https://explorer.theta-testnet.polypore.xyz/), and visit the [persistent testnet documentation](https://github.com/cosmos/testnets/tree/master/public).\r\n\r\n#### On-Chain Upgrade Process\r\n\r\nThis upgrade can be performed in multiple ways. When the network reaches the halt height, the state machine program of the Cosmos Hub will be halted. The classic method for upgrading requires all validators and node operators to manually substitute the existing state machine binary with the new binary. Alternatively node operators can use the Cosmovisor utility to swap the binaries automatically. Cosmovisor also includes the ability to download the binaries automatically *before* swapping them. Documentation on Cosmovisor can be found [here](https://github.com/cosmos/cosmos-sdk/tree/main/tools/cosmovisor). If you are interested in trying Cosmosvisor with a simulated local upgrade please see the [local testnet documentation](https://github.com/cosmos/testnets/tree/master/local). Because it is an onchain upgrade process, the blockchain will be continued with all the accumulated history with continuous block height.\r\n\r\n#### Potential Risk Factors\r\n\r\nAlthough very extensive testing and simulation has taken place there always still exists a risk that the Cosmos Hub might experience problems due to potential bugs or errors from the new features. In the case of serious problems, validators should stop operating the network immediately. Cosmos Core Contributors will coordinate with validators in the `#validators-verified channel` of the [Cosmos Developer Discord](https://discord.gg/cosmosnetwork) to create and execute a contingency plan. Likely this will be an emergency release with fixes or the recommendation to consider the upgrade aborted and revert back to the previous release of gaia (v7.1.0).", "plan": { "name": "v8-Rho", "time": "0001-01-01T00:00:00Z", "height": "14099412", "info": "{\"binaries\":{\"linux/amd64\":\"https://github.com/cosmos/gaia/releases/download/v8.0.0/gaiad-v8.0.0-linux-amd64?checksum=sha256:6d0c123e246a8b56ba534f70dd5dc72058b00fd5e5dde5ea40509ff51efc42e2\",\"linux/arm64\":\"https://github.com/cosmos/gaia/releases/download/v8.0.0/gaiad-v8.0.0-linux-arm64?checksum=sha256:a0afbbe35eda3d5e52a7907bcae296415e84b3ff6c7da97429d91f324004a5ab\",\"darwin/amd64\":\"https://github.com/cosmos/gaia/releases/download/v8.0.0/gaiad-v8.0.0-darwin-amd64?checksum=sha256:e66c0e62aa5b0ccf9fb174c50b598df6048c1d7952f5f99b807b9934c9629f2c\",\"darwin/arm64\":\"https://github.com/cosmos/gaia/releases/download/v8.0.0/gaiad-v8.0.0-darwin-arm64?checksum=sha256:95000b52f55f22e1b40b81263bc0ae0df1351e8b9b40264c54509ad1e4d6e9fb\",\"windows/amd64\":\"https://github.com/cosmos/gaia/releases/download/v8.0.0/gaiad-v8.0.0-windows-amd64.exe?checksum=sha256:fca2a4371eef6dc50b6b46a025bde3537fa96ec32c732499c8be8aa64683f147\"}}", "upgraded_client_state": null } }, "initial_deposit": [ { "denom": "uatom", "amount": "1000" } ], "proposer": "cosmos1e8thjs478fuuerp6v55sgatxgg4ytyyc02w4ag" } ], "memo": "", "timeout_height": "0", "extension_options": [], "non_critical_extension_options": [] }, "auth_info": { "signer_infos": [], "fee": { "amount": [ { "denom": "uatom", "amount": "5000" } ], "gas_limit": "1000000", "payer": "", "granter": "" } }, "signatures": [] } ``` 4. Sign the proposal to generate `signed.json`. ```bash gaiad tx sign unsigned.json \ --chain-id cosmoshub-4 \ --from cosmos1e8thjs478fuuerp6v55sgatxgg4ytyyc02w4ag \ --gas auto \ --fees 5000uatom --node https://rpc.cosmos.bh.rocks &> signed.json ``` 5. Submit the `signed.json` proposal. ```bash gaiad tx broadcast signed.json --node https://rpc.cosmos.bh.rocks ```