Struct cfx_storage::state::State
source · pub struct State { /* private fields */ }
Expand description
A block defines a list of transactions that it sees and the sequence of the transactions (ledger). At the view of a block, after all transactions being executed, the data associated with all addresses is a State after the epoch defined by the block.
A writable state is copy-on-write reference to the base state in the state manager. State is supposed to be owned by single user.
Implementations§
source§impl State
impl State
pub fn new( manager: Arc<StateManager>, state_trees: StateTrees, construct_pivot_state: bool ) -> Self
pub fn get_from_snapshot<WithProof: StaticBool>( &self, access_key: &[u8] ) -> Result<(Option<Box<[u8]>>, Option<TrieProof>)>
source§impl State
impl State
pub fn dump<DUMPER: KVInserter<MptKeyValue>>( &self, dumper: &mut DUMPER ) -> Result<()>
Trait Implementations§
source§impl StateDbGetOriginalMethods for State
impl StateDbGetOriginalMethods for State
fn get_original_raw_with_proof( &self, key: StorageKeyWithSpace<'_> ) -> Result<(Option<Box<[u8]>>, StateProof)>
fn get_original_storage_root( &self, address: &AddressWithSpace ) -> Result<StorageRoot>
fn get_original_storage_root_with_proof( &self, address: &AddressWithSpace ) -> Result<(StorageRoot, StorageRootProof)>
source§impl StateTrait for State
impl StateTrait for State
source§fn delete_all(
&mut self,
access_key_prefix: StorageKeyWithSpace<'_>
) -> Result<Option<Vec<MptKeyValue>>>
fn delete_all( &mut self, access_key_prefix: StorageKeyWithSpace<'_> ) -> Result<Option<Vec<MptKeyValue>>>
Delete all key/value pairs with access_key_prefix as prefix. These key/value pairs exist in three places: Delta Trie, Intermediate Trie and Snapshot DB.
For key/value pairs in Delta Trie, we can simply delete them. For key/value pairs in Intermediate Trie and Snapshot DB, we try to enumerate all key/value pairs and set tombstone in Delta Trie only when necessary.
fn get(&self, access_key: StorageKeyWithSpace<'_>) -> Result<Option<Box<[u8]>>>
fn set( &mut self, access_key: StorageKeyWithSpace<'_>, value: Box<[u8]> ) -> Result<()>
fn delete(&mut self, access_key: StorageKeyWithSpace<'_>) -> Result<()>
fn delete_test_only( &mut self, access_key: StorageKeyWithSpace<'_> ) -> Result<Option<Box<[u8]>>>
fn read_all( &mut self, access_key_prefix: StorageKeyWithSpace<'_> ) -> Result<Option<Vec<MptKeyValue>>>
source§fn compute_state_root(&mut self) -> Result<StateRootWithAuxInfo>
fn compute_state_root(&mut self) -> Result<StateRootWithAuxInfo>
It’s costly to compute state root however it’s only necessary to compute
state root once before committing.
fn get_state_root(&self) -> Result<StateRootWithAuxInfo>
fn commit(&mut self, epoch_id: EpochId) -> Result<StateRootWithAuxInfo>
source§impl StateTraitExt for State
impl StateTraitExt for State
fn get_with_proof( &self, access_key: StorageKeyWithSpace<'_> ) -> Result<(Option<Box<[u8]>>, StateProof)>
source§fn get_node_merkle_all_versions<WithProof: StaticBool>(
&self,
access_key: StorageKeyWithSpace<'_>
) -> Result<(NodeMerkleTriplet, NodeMerkleProof)>
fn get_node_merkle_all_versions<WithProof: StaticBool>( &self, access_key: StorageKeyWithSpace<'_> ) -> Result<(NodeMerkleTriplet, NodeMerkleProof)>
Compute the merkle of the node under
access_key
in all tries.
Node merkle is computed on the value and children hashes, ignoring the
compressed path.Auto Trait Implementations§
impl !RefUnwindSafe for State
impl Send for State
impl Sync for State
impl Unpin for State
impl !UnwindSafe for State
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more