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.2 | 2023年7月27日 |
230 in 魔法豆
每月下载量 103
在 polkadot-sdk 中使用
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