29 major breaking releases

new 32.0.0 Mar 18, 2024
31.0.0 Feb 27, 2024
30.0.0 Feb 13, 2024
29.0.0 Jan 23, 2024
0.0.0 Nov 21, 2022

#758 in Magic Beans

Download history 574/week @ 2023-11-26 308/week @ 2023-12-03 540/week @ 2023-12-10 271/week @ 2023-12-17 63/week @ 2023-12-24 640/week @ 2023-12-31 639/week @ 2024-01-07 312/week @ 2024-01-14 367/week @ 2024-01-21 330/week @ 2024-01-28 367/week @ 2024-02-04 730/week @ 2024-02-11 1160/week @ 2024-02-18 1271/week @ 2024-02-25 415/week @ 2024-03-03 157/week @ 2024-03-10

3,053 downloads per month
Used in 13 crates (5 directly)

Apache-2.0 and maybe GPL-3.0-or-later…

2.5MB
45K SLoC

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.

Migration Types

This pallet provides 2 ways to do this, each of which is suited for a particular use-case, and can be enabled independently.

Auto migration

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 x 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.

Signed migration

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 with a 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 ControlOrigin.

Dependencies

~17–67MB
~1M SLoC