3 releases (breaking)

0.3.0 Oct 20, 2023
0.2.0 Sep 14, 2023
0.1.0 May 31, 2023

#31 in #sovereign

Download history 22/week @ 2023-12-17 23/week @ 2023-12-24 14/week @ 2024-01-07 19/week @ 2024-01-14 12/week @ 2024-01-21 12/week @ 2024-01-28 13/week @ 2024-02-04 23/week @ 2024-02-11 37/week @ 2024-02-18 55/week @ 2024-02-25 34/week @ 2024-03-03 45/week @ 2024-03-10 57/week @ 2024-03-17 153/week @ 2024-03-24 94/week @ 2024-03-31

359 downloads per month
Used in 13 crates (3 directly)

Apache-2.0

185KB
3.5K SLoC

Sovereign DB

This package provides a high-level interface to a Schema DB designed specifically for use with the Sovereign SDK. It exposes two db types: LedgerDB, and StateDB.

LedgerDB

As the name implies, the LedgerDB is designed to store ledger history. It has tables for slots, batches, transactions, and events. The LedgerDB also implements the LedgerRpcProvider trait, allowing it to easily serve chain history over RPC.

StateDB

The StateDB is intended to be used with the Jellyfish Merkle Tree provided by the Module System. If you aren't using the Module System, chances are that you'll want to implement your own State Database.

StateDB is designed to store Jellyfish Merkle Tree data efficiently. It maintains a flat store mapping (Key, Version) tuples to values, as well as a mapping from JMT NodeKeys to JMT Nodes.

In the Module System, StateDB is abstracted behind the Storage interface, so you won't interact with it directly.

Dependencies

~31–45MB
~781K SLoC