17 major breaking releases
|new 21.0.0||Mar 26, 2023|
|20.0.0||Mar 5, 2023|
|19.0.0||Feb 26, 2023|
|18.0.0||Feb 19, 2023|
#222 in Magic Beans
59 downloads per month
Auto-generated README.md for publishing to crates.io
Pallet State Trie Migration
Reads and writes all keys and values in the entire state in a systematic way. This is useful for
upgrading a chain to [
sp-core::StateVersion::V1], where all keys need to be touched.
This pallet provides 2 ways to do this, each of which is suited for a particular use-case, and can be enabled independently.
This system will try and migrate all keys by continuously using
on_initialize. It is only
sensible for a relay chain or a solo chain, where going slightly over weight is not a problem.
It can be configured so that the migration takes at most
n items and tries to not go over
bytes, but the latter is not guaranteed.
For example, if a chain contains keys of 1 byte size, the
on_initialize could read up to
x - 1 bytes from
n different keys, while the next key is suddenly
:code:, and there is no way
to bail out of this.
As a backup, the migration process can be set in motion via signed transactions that basically say in advance how many items and how many bytes they will consume, and pay for it as well. This can be a good safe alternative, if the former system is not desirable.
The (minor) caveat of this approach is that we cannot know in advance how many bytes reading a
certain number of keys will incur. To overcome this, the runtime needs to configure this pallet
SignedDepositPerItem. This is the per-item deposit that the origin of the signed
migration transactions need to have in their account (on top of the normal fee) and if the size
witness data that they claim is incorrect, this deposit is slashed.
Initially, this pallet does not contain any auto migration. They must be manually enabled by the