This crate provides generic trait definitions to flexibly express storage and query behaviour for a wide-range of peer-to-peer systems. In the context of p2panda these include an address book for managing transport information related to nodes in a network, an operation store for maintaining append-only log entries, an orderer store to track operation dependencies, and much more. Concrete SQLite database implementations are provided for all store traits, along with a transaction provider for cases when atomicity and consistency are required for a set of database interactions.
🚧 This library is under active development and the APIs are not yet considered stable for production use. Core data types and user-facing APIs may still undergo breaking changes. Stability guarantees will improve with the release of v1.0.0.
Features
- Generic trait definitions required to implement p2panda stores
- SQLite implementations for all p2panda stores
- Address book for handling node information
- Cursors for tracking positions in logs
- Groups for maintaining auth group state
- Logs for efficient comparison of log-based data types
- Operations for storing entries in append-only logs
- Orderer for tracking dependencies in partially-ordered data sets
- Transaction provider to group related queries for consistency guarantees
- Database migrations on store creation or during application runtime
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in p2panda by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
This project has received funding from the European Union’s Horizon 2020 research and innovation programme within the framework of the NGI-POINTER Project funded under grant agreement No 871528, NGI-ASSURE No 957073, NGI0-ENTRUST No 101069594 and NGI0-COMMONS No 101135429.