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 在 神奇豆
3,633 每月下载量
在 15 个crate中使用了(7个直接使用)
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