48个版本 (28个重大更改)

0.36.0 2024年6月21日
0.34.0 2024年4月8日
0.33.0 2024年3月18日
0.29.0 2023年12月12日
0.8.0-alpha.52020年3月24日

#4 in #修剪

Download history 2219/week @ 2024-05-04 2271/week @ 2024-05-11 2373/week @ 2024-05-18 3150/week @ 2024-05-25 3140/week @ 2024-06-01 2009/week @ 2024-06-08 2340/week @ 2024-06-15 3066/week @ 2024-06-22 1367/week @ 2024-06-29 1042/week @ 2024-07-06 2774/week @ 2024-07-13 2186/week @ 2024-07-20 2062/week @ 2024-07-27 2204/week @ 2024-08-03 3174/week @ 2024-08-10 2947/week @ 2024-08-17

10,759 每月下载量
79 个crate中使用 (2个直接使用)

GPL-3.0-or-later…

405KB
9K SLoC

状态数据库维护。处理数据库中的规范化修剪。该模块的输入是一个ChangeSet,它基本上是块执行期间添加或删除的关键值对(trie节点)列表。

规范化

规范化窗口跟踪由头部哈希标识的区块树。内存覆盖允许获取窗口内任何块中插入的任何节点。该树被记录到后端数据库中,并在启动时重建。规范化函数从树顶选择一个根,并丢弃所有其他根及其子树。

修剪

有关修剪算法的详细信息,请参阅RefWindowStateDb在满足修剪约束之前在每个规范化过程中进行修剪。

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


lib.rs:

状态数据库维护。处理数据库中的规范化修剪。

规范化。

规范化窗口跟踪由头部哈希标识的区块树。内存覆盖允许获取窗口内任何块中插入的任何trie节点。该覆盖被记录到后端数据库中,并在启动时重建。规范化窗口中可能具有相同区块号的区块限制为32个。

规范函数从树的顶部选择一个根,并丢弃所有其他根及其子树。规范化后,所有在块中插入的 trie 节点都被添加到后端数据库中,并且块跟踪被移动到修剪窗口,在该窗口中不允许分叉。

规范与最终性

数据库引擎使用规范性的概念,而不是最终性。一个规范块可能从共识引擎的角度来看还没有最终确定,但它仍然不能在数据库中回滚。在正常操作的大部分时间里,最后一个规范块与最后一个最终块相同。然而,如果由于某些原因最终性停滞了很长时间,那么在非规范覆盖中可以容纳的块数量有限,因此可能被迫对未最终确定的块进行规范化。

修剪。

有关修剪算法的详细信息,请参阅RefWindowStateDb在满足修剪约束之前在每个规范化过程中进行修剪。

依赖关系

~13–21MB
~333K SLoC