35次重大版本更新

39.0.0 2024年7月19日
37.0.0 2024年7月13日
36.0.0 2024年6月24日
35.0.0 2024年5月24日
0.0.0 2022年11月21日

951神奇豆

Download history 356/week @ 2024-04-21 499/week @ 2024-04-28 334/week @ 2024-05-05 506/week @ 2024-05-12 855/week @ 2024-05-19 801/week @ 2024-05-26 1098/week @ 2024-06-02 880/week @ 2024-06-09 652/week @ 2024-06-16 1229/week @ 2024-06-23 685/week @ 2024-06-30 700/week @ 2024-07-07 1101/week @ 2024-07-14 795/week @ 2024-07-21 932/week @ 2024-07-28 653/week @ 2024-08-04

3,633 每月下载量
15 个crate中使用了(7个直接使用)

Apache-2.0 和可能 GPL-3.0-or-later…

3MB
45K SLoC

托盘状态Trie迁移

以系统化的方式读取和写入整个状态中的所有键和值。这对于升级到sp-core::StateVersion::V1非常有用,其中所有键都需要被接触。

迁移类型

此托盘提供了两种方式来完成此操作,每种方式都适合特定的用例,并且可以独立启用。

自动迁移

该系统将通过不断使用 on_initialize 来尝试迁移所有密钥。这对于中继链或独立链来说是有意义的,因为稍微超过权重并不是问题。它可以配置为迁移最多 n 项,并尝试不超出 x 字节,但后者不能保证。

例如,如果一条链包含1字节大小的密钥,on_initialize 可以从 n 个不同的密钥中读取最多 x - 1 字节,而下一个密钥突然变成了 :code:,并且没有退出这个状态的方法。

签名迁移

作为备份,迁移过程可以通过签名事务启动,这些事务基本上提前说明了将消耗多少项目和多少字节,并支付相应的费用。如果前面的系统不可取,这可以是一个好的安全替代方案。

这种方法的(轻微)缺点是我们无法事先知道读取一定数量的密钥将消耗多少字节。为了克服这一点,运行时需要配置此模块的 SignedDepositPerItem。这是签名迁移事务的原始发起方在其账户(除正常费用外)中需要有的每项存款,如果他们声明的见证数据大小不正确,这笔存款将被没收。


最初,此模块不包含任何自动迁移。必须通过 ControlOrigin 手动启用它们。

依赖关系

~18–64MB
~1M SLoC