In the cargo contract v3 release, breaking changes were made for how contracts are built (
bin) and specifying
I've found that cargo contract v2 produces contracts compatible with
substrate-contracts-node version 0.24 and below but incompatible with version 0.25 and above.
Conversely I've found that cargo contract v3 produces contracts that are not compatible with
substrate-contracts-node version 0.24 and below but compatible with v0.25 upwards.
So my question is this: how do chains deal with this breaking change? If my chain is currently running version 0.24 of
substrate-contracts-node and all contracts are built using cargo contract version 2, the new contracts from
cargo-contract v3 are incompatible and are rejected on code upload (we're experiencing this with rococo contracts node at the moment!).
I assume the chain has to upgrade, but what happens to the existing contracts which are in the old format (
cargo-contract v2 format)? Do they get purged? Do they run in some legacy mode? are they rebuilt in the correct (v3) format?
Context: I don't run my own chain, I build smart contracts and am curious :)