If I'm running a chain in production and I've upgraded some pallets in my runtime, what steps do I need to take to make sure my runtime will run without fail when it is included in my live chain?
1 Answer
Peeking at the release checklist of Polkadot (or any other professional substrate-based chain) is a good insight into what components you need to look out for. Here's an example from the 0.9.17 version. I would summarize the most important ones as:
- Update
spec_version
andimpl_version
accordingly. If you are not sure when to bump them, read here. - Update
transaction_version
accordingly. Read more about here. - If you added new calls, and you are using
pallet-proxy
, you probably need to check your proxyProxyType
, most notable, how it implements toInstanceCallFilter
. - Finally, if your pallets have altered their storage in any way that could cause storage to be un-decoable, you need to have some storage migrations, and you need to make sure they are executed, and you better test them since you only get one shot at doing it in production. There are lots of resources about this, and as mentioned earlier,
try-runtime
has a bunch of commands that help with this. There are also some tutorials about it in the substrate developer hub.