@ethereumjs/statemanager / MerkleStateManager
Defined in: merkleStateManager.ts:64
Default @ethereumjs/common!StateManagerInterface implementation for the VM.
The state manager abstracts from the underlying data store by providing higher level access to accounts, contract code and storage slots.
The default state manager implementation uses a
@ethereumjs/mpt trie as a data backend.
Note that there is a SimpleStateManager dependency-free state
manager implementation available shipped with the @ethereumjs/statemanager
package which might be an alternative to this implementation
for many basic use cases.
new MerkleStateManager(
opts?):MerkleStateManager
Defined in: merkleStateManager.ts:95
Instantiate a Merkle-backed state manager.
MerkleStateManager
readonlycommon:Common
Defined in: merkleStateManager.ts:76
originalStorageCache:
OriginalStorageCache
Defined in: merkleStateManager.ts:68
StateManagerInterface.originalStorageCache
checkpoint():
Promise<void>
Defined in: merkleStateManager.ts:444
Checkpoints the current state of this @ethereumjs/common!StateManagerInterface instance.
State changes that follow can then be committed by calling
commit or reverted by calling rollback.
Promise<void>
StateManagerInterface.checkpoint
clearCaches():
void
Defined in: merkleStateManager.ts:722
Clears all underlying caches
void
StateManagerInterface.clearCaches
clearStorage(
address):Promise<void>
Defined in: merkleStateManager.ts:427
Clears all storage entries for the account corresponding to address.
Address to clear the storage of
Promise<void>
StateManagerInterface.clearStorage
commit():
Promise<void>
Defined in: merkleStateManager.ts:454
Commits the current change-set to the instance since the last call to checkpoint.
Promise<void>
StateManagerInterface.commit
consumeBAL(
bal,expectedStateRoot?):Promise<void>
Defined in: merkleStateManager.ts:741
Apply an EIP-7928 BAL onto this state. See consumeBAL.
BALJSONBlockAccessList
Uint8Array<ArrayBufferLike>
Promise<void>
Experimental (Amsterdam): may change on patch releases.
StateManagerInterface.consumeBAL
deleteAccount(
address):Promise<void>
Defined in: merkleStateManager.ts:183
Deletes an account from state under the provided address.
Address of the account which should be deleted
Promise<void>
StateManagerInterface.deleteAccount
dumpStorage(
address):Promise<StorageDump>
Defined in: merkleStateManager.ts:582
Dumps the RLP-encoded storage values for an account specified by address.
Account whose storage should be dumped
Promise<StorageDump>
Hex-keyed map of storage slots (values as unprefixed hex strings)
StateManagerInterface.dumpStorage
dumpStorageRange(
address,startKey,limit):Promise<StorageRange>
Defined in: merkleStateManager.ts:603
Dumps a limited number of RLP-encoded storage values for an account specified by address,
starting from startKey or greater.
The address of the account to return storage for.
bigint
The bigint representation of the smallest storage key that will be returned. *
number
Maximum number of storage entries to return *
Promise<StorageRange>
@ethereumjs/common!StorageRange with at most limit entries and optional nextKey
StateManagerInterface.dumpStorageRange
flush():
Promise<void>
Defined in: merkleStateManager.ts:492
Writes all cache items to the trie
Promise<void>
generateCanonicalGenesis(
initState):Promise<void>
Defined in: merkleStateManager.ts:639
Initializes the provided genesis state into the state trie. Will error if there are uncommitted checkpoints on the instance.
any
| address -> balance | [balance, code, storage] |
Promise<void>
StateManagerInterface.generateCanonicalGenesis
getAccount(
address):Promise<Account|undefined>
Defined in: merkleStateManager.ts:122
Gets the account associated with address or undefined if account does not exist
Address of the account to get
Promise<Account | undefined>
StateManagerInterface.getAccount
getAppliedKey(
address):Uint8Array
Defined in: merkleStateManager.ts:732
Returns the applied key for a given address Used for saving preimages
Uint8Array
Address bytes used for preimage recording
Uint8Array
Key after trie key hashing (e.g. keccak of the address)
StateManagerInterface.getAppliedKey
getCode(
address):Promise<Uint8Array<ArrayBufferLike>>
Defined in: merkleStateManager.ts:226
Gets the code corresponding to the provided address.
Address to get the code for
Promise<Uint8Array<ArrayBufferLike>>
Contract bytecode, or an empty array when no code is stored
StateManagerInterface.getCode
getCodeSize(
address):Promise<number>
Defined in: merkleStateManager.ts:247
Promise<number>
StateManagerInterface.getCodeSize
getStateRoot():
Promise<Uint8Array<ArrayBufferLike>>
Defined in: merkleStateManager.ts:548
Gets the state-root of the Merkle-Patricia trie representation of the state of this manager. Will error if there are uncommitted checkpoints on the instance.
Promise<Uint8Array<ArrayBufferLike>>
Account trie root hash
StateManagerInterface.getStateRoot
getStorage(
address,key):Promise<Uint8Array<ArrayBufferLike>>
Defined in: merkleStateManager.ts:320
Gets the storage value associated with the provided address and key. This method returns
the shortest representation of the stored value.
Address of the account to get the storage for
Uint8Array
Key in the account’s storage to get the value for. Must be 32 bytes long.
Promise<Uint8Array<ArrayBufferLike>>
Uint8Array is returned.StateManagerInterface.getStorage
hasStateRoot(
root):Promise<boolean>
Defined in: merkleStateManager.ts:675
Checks whether there is a state corresponding to a stateRoot
Uint8Array
Promise<boolean>
StateManagerInterface.hasStateRoot
modifyAccountFields(
address,accountFields):Promise<void>
Defined in: merkleStateManager.ts:175
Gets the account associated with address, modifies the given account
fields, then saves the account into state. Account fields can include
nonce, balance, storageRoot, and codeHash.
Address of the account to modify
AccountFields
Object containing account fields and values to modify
Promise<void>
StateManagerInterface.modifyAccountFields
putAccount(
address,account):Promise<void>
Defined in: merkleStateManager.ts:142
Saves an account into state under the provided address.
Address under which to store account
Account | undefined
The account to store or undefined if to be deleted
Promise<void>
StateManagerInterface.putAccount
putCode(
address,value):Promise<void>
Defined in: merkleStateManager.ts:201
Adds value to the state trie as code, and sets codeHash on the account
corresponding to address to reference this.
Address of the account to add the code for
Uint8Array
The value of the code
Promise<void>
StateManagerInterface.putCode
putStorage(
address,key,value):Promise<void>
Defined in: merkleStateManager.ts:404
Adds value to the state trie for the account
corresponding to address at the provided key.
Address to set a storage value for
Uint8Array
Key to set the value at. Must be 32 bytes long.
Uint8Array
Value to set at key for account corresponding to address.
Cannot be more than 32 bytes. Leading zeros are stripped.
If it is a empty or filled with zeros, deletes the value.
Promise<void>
StateManagerInterface.putStorage
revert():
Promise<void>
Defined in: merkleStateManager.ts:474
Reverts the current change-set to the instance since the last call to checkpoint.
Promise<void>
StateManagerInterface.revert
setStateRoot(
stateRoot,clearCache?):Promise<void>
Defined in: merkleStateManager.ts:560
Sets the state of the instance to that represented
by the provided stateRoot. Will error if there are uncommitted
checkpoints on the instance or if the state root does not exist in
the state trie.
Uint8Array
The state-root to reset the instance to
boolean = true
Promise<void>
StateManagerInterface.setStateRoot
shallowCopy(
downlevelCaches?):MerkleStateManager
Defined in: merkleStateManager.ts:701
Copies the current MerkleStateManager at the last fully committed point. at the last fully committed point, i.e. as if all current checkpoints were reverted.
Caches are downleveled (so: adopted for short-term usage) by default.
This means in particular:
Both adoptions can be deactivated by setting downlevelCaches to
false.
Cache values are generally not copied along regardless of the
downlevelCaches setting.
boolean = true
MerkleStateManager
StateManagerInterface.shallowCopy