Struct StateDB

Source
pub struct StateDB { /* private fields */ }
Expand description

A typed wrapper around the db for storing rollup state. Internally, this is roughly just an Arc<SchemaDB>.

StateDB implements several convenience functions for state storage - notably the TreeReader and TreeWriter traits.

Implementations§

Source§

impl StateDB

Source

pub fn with_path(path: impl AsRef<Path>) -> Result<Self, Error>

Open a StateDB (backed by RocksDB) at the specified path. The returned instance will be at the path {path}/state-db.

Source

pub fn put_preimage( &self, key_hash: KeyHash, key: &Vec<u8>, ) -> Result<(), Error>

Put the preimage of a hashed key into the database. Note that the preimage is not checked for correctness, since the DB is unaware of the hash function used by the JMT.

Source

pub fn get_value_option_by_key( &self, version: Version, key: &Vec<u8>, ) -> Result<Option<OwnedValue>>

Get an optional value from the database, given a version and a key hash.

Source

pub fn inc_next_version(&self)

Increment the next_version counter by 1.

Source

pub fn get_next_version(&self) -> Version

Get the current value of the next_version counter

Trait Implementations§

Source§

impl Clone for StateDB

Source§

fn clone(&self) -> StateDB

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for StateDB

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl TreeReader for StateDB

Source§

fn get_node_option(&self, node_key: &NodeKey) -> Result<Option<Node>>

Gets node given a node key. Returns None if the node does not exist.
Source§

fn get_value_option( &self, version: Version, key_hash: KeyHash, ) -> Result<Option<OwnedValue>>

Gets a value by identifier, returning the newest value whose version is less than or equal to the specified version. Returns None if the value does not exist.
Source§

fn get_rightmost_leaf(&self) -> Result<Option<(NodeKey, LeafNode)>>

Gets the rightmost leaf. Note that this assumes we are in the process of restoring the tree and all nodes are at the same version.
Source§

fn get_node(&self, node_key: &NodeKey) -> Result<Node, Error>

Gets node given a node key. Returns error if the node does not exist.
Source§

fn get_value( &self, max_version: u64, key_hash: KeyHash, ) -> Result<Vec<u8>, Error>

Gets a value by identifier, returning the newest value whose version is less than or equal to the specified version. Returns an error if the value does not exist.
Source§

impl TreeWriter for StateDB

Source§

fn write_node_batch(&self, node_batch: &NodeBatch) -> Result<()>

Writes a node batch into storage.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more