21 个版本 (主要破坏性)

19.0.0 2024年7月18日
17.0.0 2024年6月21日
16.0.0 2024年5月23日
15.0.0 2024年4月30日
0.1.0-dev.22023年7月27日

230 in 魔法豆

Download history 48/week @ 2024-04-09 146/week @ 2024-04-30 153/week @ 2024-05-21 1/week @ 2024-05-28 5/week @ 2024-06-04 108/week @ 2024-06-18 6/week @ 2024-06-25 97/week @ 2024-07-16 6/week @ 2024-07-23

每月下载量 103
polkadot-sdk 中使用

GPL-3.0-or-later…

1MB
19K SLoC

Substrate 状态存储实现。

许可:GPL-3.0-or-later WITH Classpath-exception-2.0


lib.rs:

基于磁盘的状态存储。

本模块包含了一个基于数据库的 sp_statement_store::StatementStore 实现。

约束管理。

每次将新状态插入存储时,都会先使用运行时验证函数进行验证,计算状态的全局优先级、'max_count' 和 max_size。然后检查以下约束

  • 对于给定的账户 ID,最多可以有 max_count 个状态,总数据大小为 max_size。为了满足这一约束,将从优先级最低的状态开始移除该账户 ID 的状态,直到满足约束为止。
  • 总语句数可能不超过MAX_TOTAL_STATEMENTS,且每个语句的大小不超过MAX_TOTAL_SIZE。为了满足这个条件,将从存储中移除具有最低global_priority的语句,直到满足约束条件。

如果插入的新语句本身就无法满足约束条件,则不会删除任何语句,并返回Ignored结果。具有相同优先级的语句被删除的顺序是不确定的。

语句过期。

每次从存储中移除语句(无论是被更高优先级的语句驱逐还是通过remove函数显式删除)时,该语句都会被标记为已过期。已过期的语句在Options::purge_after_sec秒内无法添加到存储中。这是为了防止旧语句在网络中传播。

依赖关系

~64MB
~1M SLoC