17 releases (11 major breaking)

14.0.0 Apr 8, 2024
13.0.0 Mar 18, 2024
12.0.0 Feb 26, 2024
11.0.0 Feb 13, 2024
0.1.0-dev.2 Jul 27, 2023

#6 in #removed

Download history 5/week @ 2024-01-19 19/week @ 2024-02-09 11/week @ 2024-02-16 121/week @ 2024-02-23 70/week @ 2024-03-01 177/week @ 2024-03-08 102/week @ 2024-03-15 15/week @ 2024-03-22 32/week @ 2024-03-29 91/week @ 2024-04-05 13/week @ 2024-04-12

156 downloads per month

GPL-3.0-or-later…

1MB
18K SLoC

Substrate statement store implementation.

License: GPL-3.0-or-later WITH Classpath-exception-2.0


lib.rs:

Disk-backed statement store.

This module contains an implementation of sp_statement_store::StatementStore which is backed by a database.

Constraint management.

Each time a new statement is inserted into the store, it is first validated with the runtime Validation function computes global_priority, 'max_count' and max_size for a statement. The following constraints are then checked:

  • For a given account id, there may be at most max_count statements with max_size total data size. To satisfy this, statements for this account ID are removed from the store starting with the lowest priority until a constraint is satisfied.
  • There may not be more than MAX_TOTAL_STATEMENTS total statements with MAX_TOTAL_SIZE size. To satisfy this, statements are removed from the store starting with the lowest global_priority until a constraint is satisfied.

When a new statement is inserted that would not satisfy constraints in the first place, no statements are deleted and Ignored result is returned. The order in which statements with the same priority are deleted is unspecified.

Statement expiration.

Each time a statement is removed from the store (Either evicted by higher priority statement or explicitly with the remove function) the statement is marked as expired. Expired statements can't be added to the store for Options::purge_after_sec seconds. This is to prevent old statements from being propagated on the network.

Dependencies

~64MB
~1M SLoC