We have a prototype of substrate-based blockchain running with few nodes.
After some time running and testing we came up with new version of code-base, which consists of the same runtime, pallets and storage items but with some naming changes for both pallet crates and their storage.
So there are few questions I am interested in:
- Is it possible to migrate from old code base to new one (which are basically two different repositories with different structure but with similar components) without loosing blocks history and storage data?
- Would forkless upgrade via uploading new WASM binary work considering it was built from different code-base?
I already checked substrate documentation 1, 2 and didn't find similar problem. There is a storage migration article but the problem discovered there is not exactly what I am looking for. It is just about adding new field to pallet storage.
I know it's possible to transfer all storage between blockchains by dumping all the storage from one and then transfering into another via genesis file configuration. But it would also be nice to store blocks history with all executed transactions.