When we change some codes on BaseApp or some parameters in our app.go, we have to restart a new chain to see the changes to take effect. This is not practical in production as even if we start a new chain with the old app state, the transactions were all gone. This happens with the several gaia testnets as well. When the chain halts, new patches can’t be applied and all validators have to start a new chain with upgraded software to avoid those issues.
How can we assure that we can keep the old chain data and continue with a live chain when we upgrade our dapp software or compile with a new version of the SDK? Any guidelines on how starting a new chain can be prevented? And are there any ways to apply hotfixes when the chain is halted?