From 0109aa0394acb9368eb797e1d4e39dca098648e0 Mon Sep 17 00:00:00 2001 From: parazyd Date: Sun, 3 Apr 2022 14:44:40 +0200 Subject: [PATCH] Add skeleton for sled blockchain store. --- Cargo.toml | 4 ++++ src/blockchain2/blockstore.rs | 12 ++++++++++++ src/blockchain2/mod.rs | 4 ++++ src/blockchain2/nfstore.rs | 12 ++++++++++++ src/blockchain2/rootstore.rs | 12 ++++++++++++ src/blockchain2/txstore.rs | 12 ++++++++++++ src/error.rs | 4 ++++ src/lib.rs | 3 +++ 8 files changed, 63 insertions(+) create mode 100644 src/blockchain2/blockstore.rs create mode 100644 src/blockchain2/mod.rs create mode 100644 src/blockchain2/nfstore.rs create mode 100644 src/blockchain2/rootstore.rs create mode 100644 src/blockchain2/txstore.rs diff --git a/Cargo.toml b/Cargo.toml index a921527d3..72064bab4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -200,6 +200,10 @@ blockchain = [ "net", ] +blockchain2 = [ + "sled", +] + system = [ "fxhash", "rand", diff --git a/src/blockchain2/blockstore.rs b/src/blockchain2/blockstore.rs new file mode 100644 index 000000000..16cde628d --- /dev/null +++ b/src/blockchain2/blockstore.rs @@ -0,0 +1,12 @@ +use crate::Result; + +const SLED_BLOCK_TREE: &[u8] = b"_blocks"; + +pub struct BlockStore(sled::Tree); + +impl BlockStore { + pub fn new(db: &sled::Db) -> Result { + let tree = db.open_tree(SLED_BLOCK_TREE)?; + Ok(Self(tree)) + } +} diff --git a/src/blockchain2/mod.rs b/src/blockchain2/mod.rs new file mode 100644 index 000000000..8900a0620 --- /dev/null +++ b/src/blockchain2/mod.rs @@ -0,0 +1,4 @@ +pub mod blockstore; +pub mod nfstore; +pub mod rootstore; +pub mod txstore; diff --git a/src/blockchain2/nfstore.rs b/src/blockchain2/nfstore.rs new file mode 100644 index 000000000..8dd73cc7c --- /dev/null +++ b/src/blockchain2/nfstore.rs @@ -0,0 +1,12 @@ +use crate::Result; + +const SLED_NULLIFIER_TREE: &[u8] = b"_nullifiers"; + +pub struct NullifierStore(sled::Tree); + +impl NullifierStore { + pub fn new(db: &sled::Db) -> Result { + let tree = db.open_tree(SLED_NULLIFIER_TREE)?; + Ok(Self(tree)) + } +} diff --git a/src/blockchain2/rootstore.rs b/src/blockchain2/rootstore.rs new file mode 100644 index 000000000..9441c0ccc --- /dev/null +++ b/src/blockchain2/rootstore.rs @@ -0,0 +1,12 @@ +use crate::Result; + +const SLED_ROOTS_TREE: &[u8] = b"_merkleroots"; + +pub struct RootStore(sled::Tree); + +impl RootStore { + pub fn new(db: &sled::Db) -> Result { + let tree = db.open_tree(SLED_ROOTS_TREE)?; + Ok(Self(tree)) + } +} diff --git a/src/blockchain2/txstore.rs b/src/blockchain2/txstore.rs new file mode 100644 index 000000000..fdc6532e2 --- /dev/null +++ b/src/blockchain2/txstore.rs @@ -0,0 +1,12 @@ +use crate::Result; + +const SLED_TX_TREE: &[u8] = b"_transactions"; + +pub struct TxStore(sled::Tree); + +impl TxStore { + pub fn new(db: &sled::Db) -> Result { + let tree = db.open_tree(SLED_TX_TREE)?; + Ok(Self(tree)) + } +} diff --git a/src/error.rs b/src/error.rs index c253b3c21..42ea02865 100644 --- a/src/error.rs +++ b/src/error.rs @@ -218,6 +218,10 @@ pub enum Error { #[cfg(feature = "wasm-runtime")] #[error("wasm runtime out of memory")] WasmerOomError, + + #[cfg(feature = "blockchain2")] + #[error(transparent)] + SledError(#[from] sled::Error), } #[cfg(feature = "node")] diff --git a/src/lib.rs b/src/lib.rs index a8b541de3..a9b4285d1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,6 +4,9 @@ pub use error::{Error, Result}; #[cfg(feature = "blockchain")] pub mod blockchain; +#[cfg(feature = "blockchain2")] +pub mod blockchain2; + #[cfg(feature = "blockchain")] pub mod consensus;