# LedgerKV ## Overview LedgerKV is a key-value store implemented in Rust. The primary feature of this library is its ability to store data in an append-only fashion, effectively forming a ledger. Additionally, it supports data integrity checks using SHA-256 checksums for ledger entries. This library is designed for use in smart contract environments, capable of compiling for `wasm32` targets while also being usable and testable on `x86_64` architectures. > **Note**: This library is still in the development stage. Use it at your own risk. ## Installation Add LedgerKV to your `Cargo.toml`: ```toml [dependencies] ledger-kv = "0.1.0"+ ``` ## Usage Here is a basic example to get you started: ```rust use ledger_kv::LedgerKV; // Replace with your actual library name use ledger_kv::EntryLabel; use ledger_kv::Operation; let data_dir = PathBuf::from("data/"); let description = "example_ledger"; // Create a new LedgerKV instance let mut ledger = LedgerKV::new(data_dir, description); // Perform an upsert operation let key = vec![1, 2, 3]; let value = vec![4, 5, 6]; ledger.upsert(EntryLabel::NodeProvider, key, value).unwrap(); // Perform a delete operation let key = vec![1, 2, 3]; ledger.delete(EntryLabel::NodeProvider, key).unwrap(); ``` ## Features * Append-Only Storage: Data is stored in an append-only manner, forming a ledger. * Data Integrity: Uses SHA-256 checksums for verifying the integrity of ledger entries. * Platform Support: Designed to work on both wasm32 and x86_64 targets. ## Dependencies This library is implemented in pure Rust. ## Contributing We welcome contributions! Please submit a pull request if you would like to contribute. ## License Licensed under either of * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) at your option. ## Contribution Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.