Documentation ¶
Index ¶
- type ChildResolver
- type Database
- func (db *Database) Cap(limit common.StorageSize) error
- func (db *Database) Close() error
- func (db *Database) Commit(node common.Hash, report bool) error
- func (db *Database) Dereference(root common.Hash)
- func (db *Database) Initialized(genesisRoot common.Hash) bool
- func (db *Database) Node(hash common.Hash) ([]byte, error)
- func (db *Database) Nodes() []common.Hash
- func (db *Database) Reader(root common.Hash) *reader
- func (db *Database) Reference(child common.Hash, parent common.Hash)
- func (db *Database) Scheme() string
- func (db *Database) Size() common.StorageSize
- func (db *Database) Update(root common.Hash, parent common.Hash, nodes *trienode.MergedNodeSet) error
- func (db *Database) UpdateAndReferenceRoot(root common.Hash, parent common.Hash, nodes *trienode.MergedNodeSet) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ChildResolver ¶
ChildResolver defines the required method to decode the provided trie node and iterate the children on top.
type Database ¶
type Database struct {
// contains filtered or unexported fields
}
Database is an intermediate write layer between the trie data structures and the disk database. The aim is to accumulate trie writes in-memory and only periodically flush a couple tries to disk, garbage collecting the remainder.
The trie Database is thread-safe in its mutations and is thread-safe in providing individual, independent node access.
func New ¶
func New(diskdb ethdb.Database, cleans cache, resolver ChildResolver) *Database
New initializes the hash-based node database.
func (*Database) Cap ¶
func (db *Database) Cap(limit common.StorageSize) error
Cap iteratively flushes old but still referenced trie nodes until the total memory usage goes below the given threshold.
func (*Database) Commit ¶
Commit iterates over all the children of a particular node, writes them out to disk, forcefully tearing down all references in both directions. As a side effect, all pre-images accumulated up to this point are also written.
func (*Database) Dereference ¶
Dereference removes an existing reference from a root node.
func (*Database) Initialized ¶
Initialized returns an indicator if state data is already initialized in hash-based scheme by checking the presence of genesis state.
func (*Database) Node ¶
Node retrieves an encoded cached trie node from memory. If it cannot be found cached, the method queries the persistent database for the content.
func (*Database) Nodes ¶
Nodes retrieves the hashes of all the nodes cached within the memory database. This method is extremely expensive and should only be used to validate internal states in test code.
func (*Database) Reference ¶
Reference adds a new reference from a parent node to a child node. This function is used to add reference between internal trie node and external node(e.g. storage trie root), all internal trie nodes are referenced together by database itself.
func (*Database) Size ¶
func (db *Database) Size() common.StorageSize
Size returns the current storage size of the memory cache in front of the persistent database layer.
func (*Database) Update ¶
func (db *Database) Update(root common.Hash, parent common.Hash, nodes *trienode.MergedNodeSet) error
Update inserts the dirty nodes in provided nodeset into database and link the account trie with multiple storage tries if necessary.
func (*Database) UpdateAndReferenceRoot ¶
func (db *Database) UpdateAndReferenceRoot(root common.Hash, parent common.Hash, nodes *trienode.MergedNodeSet) error
UpdateAndReferenceRoot inserts the dirty nodes in provided nodeset into database and links the account trie with multiple storage tries if necessary, then adds a reference [from] root to the metaroot while holding the db's lock.