@ethereumjs/mpt / MerklePatriciaTrie
Defined in: packages/mpt/src/mpt.ts:73
Merkle Patricia Trie - a space-optimized trie where each node with only one child is merged with its parent. Used for Ethereum state and storage.
Node types:
new MerklePatriciaTrie(
opts?):MerklePatriciaTrie
Defined in: packages/mpt/src/mpt.ts:105
Creates a new trie.
Options for instantiating the trie
Note: in most cases, createMPT constructor should be used. It uses the same API but provides sensible defaults
MerklePatriciaTrie
EMPTY_TRIE_ROOT:
Uint8Array
Defined in: packages/mpt/src/mpt.ts:86
The root for an empty trie
walkTrieIterable: (…
args) =>AsyncIterable
Defined in: packages/mpt/src/mpt.ts:436
…[Uint8Array<ArrayBufferLike>, number[], OnFound, NodeFilter, Set<string>]
AsyncIterable
_formatNode(
node,topLevel,opStack,remove):NodeReferenceOrRawMPTNode|BranchMPTNodeBranchValue[] |Uint8Array<ArrayBufferLike>
Defined in: packages/mpt/src/mpt.ts:790
Serializes a node and either stores it (put) or schedules removal (del). Nodes ≥32 bytes (or top-level) are hashed and stored; smaller nodes are inlined as raw.
the node to persist
boolean
if true, always store (root must be in DB)
BatchDBOp[]
accumulates put/del operations for batch commit
boolean = false
if true, schedule del (used when pruning)
NodeReferenceOrRawMPTNode | BranchMPTNodeBranchValue[] | Uint8Array<ArrayBufferLike>
hash (for references) or raw encoding (for inline)
batch(
ops,skipKeyTransform?):Promise<void>
Defined in: packages/mpt/src/mpt.ts:829
The given hash of operations (key additions or deletions) are executed on the trie
(delete operations are only executed on DB with deleteFromDB set to true)
BatchDBOp[]
boolean
Promise<void>
const ops = [
{ type: 'del', key: Uint8Array.from('father') }
, { type: 'put', key: Uint8Array.from('name'), value: Uint8Array.from('Yuri Irsenovich Kim') } // cspell:disable-line
, { type: 'put', key: Uint8Array.from('dob'), value: Uint8Array.from('16 February 1941') }
, { type: 'put', key: Uint8Array.from('spouse'), value: Uint8Array.from('Kim Young-sook') } // cspell:disable-line
, { type: 'put', key: Uint8Array.from('occupation'), value: Uint8Array.from('Clown') }
]
await trie.batch(ops)
checkpoint():
void
Defined in: packages/mpt/src/mpt.ts:1003
Creates a checkpoint that can later be reverted to or committed.
After this is called, all changes can be reverted until commit is called.
void
checkRoot(
root):Promise<boolean>
Defined in: packages/mpt/src/mpt.ts:182
Checks if a given root exists.
Uint8Array
Promise<boolean>
commit():
Promise<void>
Defined in: packages/mpt/src/mpt.ts:1013
Commits a checkpoint to disk, if current checkpoint is not nested. If nested, only sets the parent checkpoint as current checkpoint.
Promise<void>
If not during a checkpoint phase
database(
db?,valueEncoding?):CheckpointDB
Defined in: packages/mpt/src/mpt.ts:147
DB<string, string | Uint8Array<ArrayBufferLike>>
ValueEncoding
del(
key,skipKeyTransform):Promise<void>
Defined in: packages/mpt/src/mpt.ts:269
Deletes a value given a key from the trie
(delete operations are only executed on DB with deleteFromDB set to true)
Uint8Array
boolean = false
Promise<void>
A Promise that resolves once value is deleted.
findPath(
key,throwIfMissing,partialPath):Promise<Path>
Defined in: packages/mpt/src/mpt.ts:302
Finds the path from root to the node for the given key. Walks the trie, matching nibbles at each level. Returns the target node (if found) and the stack of nodes along the path (needed for updates/deletes).
Uint8Array
the search key (bytes)
boolean = false
if true, throws when nodes are missing (e.g. proof verification)
optional pre-loaded stack for resuming from a mid-path node
MPTNode[]
Promise<Path>
flushCheckpoints():
void
Defined in: packages/mpt/src/mpt.ts:1045
Flushes all checkpoints, restoring the initial checkpoint state.
void
get(
key,throwIfMissing):Promise<Uint8Array<ArrayBufferLike> |null>
Defined in: packages/mpt/src/mpt.ts:201
Gets a value given a key
Uint8Array
the key to search for
boolean = false
if true, throws if any nodes are missing. Used for verifying proofs. (default: false)
Promise<Uint8Array<ArrayBufferLike> | null>
A Promise that resolves to Uint8Array if a value was found or null if no value was found.
getValueMap(
startKey,limit?):Promise<{nextKey:string|null;values: {[key:string]:string; }; }>
Defined in: packages/mpt/src/mpt.ts:1057
Returns a list of values stored in the trie
bigint = BIGINT_0
first unhashed key in the range to be returned (defaults to 0). Note, all keys must be of the same length or undefined behavior will result
number
the number of keys to be returned (undefined means all keys)
Promise<{ nextKey: string | null; values: {[key: string]: string; }; }>
an object with two properties (a map of all key/value pairs in the trie - or in the specified range) and then a nextKey reference if a range is specified
hasCheckpoints():
boolean
Defined in: packages/mpt/src/mpt.ts:995
Is the trie during a checkpoint phase?
boolean
lookupNode(
node):Promise<MPTNode>
Defined in: packages/mpt/src/mpt.ts:487
Retrieves a node from db by hash.
Uint8Array<ArrayBufferLike> |
Uint8Array<ArrayBufferLike>[] |
Promise<MPTNode>
persistRoot():
Promise<void>
Defined in: packages/mpt/src/mpt.ts:929
Persists the root hash in the underlying database
Promise<void>
put(
key,value,skipKeyTransform):Promise<void>
Defined in: packages/mpt/src/mpt.ts:219
Stores a given value at the given key or do a delete if value is empty
(delete operations are only executed on DB with deleteFromDB set to true)
Uint8Array
Uint8Array<ArrayBufferLike> |
null |
boolean = false
Promise<void>
A Promise that resolves once value is stored.
revert():
Promise<void>
Defined in: packages/mpt/src/mpt.ts:1029
Reverts the trie to the state it was at when checkpoint was first called.
If during a nested checkpoint, sets root to most recent checkpoint, and sets
parent checkpoint as current.
Promise<void>
root(
value?):Uint8Array
Defined in: packages/mpt/src/mpt.ts:162
Gets and/or Sets the current root of the trie
Uint8Array<ArrayBufferLike> |
null |
Uint8Array
saveStack(
pathNibbles,stack,opStack):Promise<void>
Defined in: packages/mpt/src/mpt.ts:752
Persists the modified node stack to the DB. Processes nodes from leaf toward root, wiring each node’s references (extension value, branch slot) to its child’s hash.
MPTNode[]
nodes from findPath/update, bottom (leaf) to top (root)
BatchDBOp[]
put/del operations accumulated by _formatNode
Promise<void>
shallowCopy(
includeCheckpoints,opts?):MerklePatriciaTrie
Defined in: packages/mpt/src/mpt.ts:912
Returns a copy of the underlying trie.
Note on db: the copy will create a reference to the same underlying database.
Note on cache: for memory reasons a copy will by default
not recreate a new LRU cache but initialize with cache
being deactivated. This behavior can be overwritten by
explicitly setting cacheSize as an option on the method.
boolean = true
If true and during a checkpoint, the copy will contain the checkpointing metadata and will use the same scratch as underlying db.
MerklePatriciaTrie
verifyPrunedIntegrity():
Promise<boolean>
Defined in: packages/mpt/src/mpt.ts:847
Verifies that every key in the DB is reachable from the root. Used to ensure pruning is correct – unreachable keys indicate a bug or corrupt state.
Promise<boolean>
walkAllNodes(
onFound):Promise<void>
Defined in: packages/mpt/src/mpt.ts:443
Executes a callback for each node in the trie.
OnFound
callback to call when a node is found.
Promise<void>
Resolves when finished walking trie.
walkAllValueNodes(
onFound):Promise<void>
Defined in: packages/mpt/src/mpt.ts:454
Executes a callback for each value node in the trie.
OnFound
callback to call when a node is found.
Promise<void>
Resolves when finished walking trie.
walkTrie(
root,onFound):Promise<void>
Defined in: packages/mpt/src/mpt.ts:432
Walks a trie until finished.
Uint8Array
callback to call when a node is found. This schedules new tasks. If no tasks are available, the Promise resolves.
Promise<void>
Resolves when finished walking trie.