mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2024-12-22 03:30:37 +00:00
52 lines
1.4 KiB
Go
52 lines
1.4 KiB
Go
package trie
|
|
|
|
import (
|
|
libcommon "github.com/ledgerwatch/erigon-lib/common"
|
|
)
|
|
|
|
var emptyHash [32]byte
|
|
|
|
// SubTrie is a result of loading sub-trie from either flat db
|
|
// or witness db. It encapsulates sub-trie root (which is of the un-exported type `node`)
|
|
// If the loading is done for verification and testing purposes, then usually only
|
|
// sub-tree root hash would be queried
|
|
type SubTries struct {
|
|
Hashes []libcommon.Hash // Root hashes of the sub-tries
|
|
roots []node // Sub-tries
|
|
}
|
|
|
|
type LoadFunc func(*SubTrieLoader, *RetainList, [][]byte, []int) (SubTries, error)
|
|
|
|
// Resolver looks up (resolves) some keys and corresponding values from a database.
|
|
// One resolver per trie (prefix).
|
|
// See also ResolveRequest in trie.go
|
|
type SubTrieLoader struct {
|
|
codeRequests []*LoadRequestForCode
|
|
}
|
|
|
|
func NewSubTrieLoader() *SubTrieLoader {
|
|
tr := SubTrieLoader{
|
|
codeRequests: []*LoadRequestForCode{},
|
|
}
|
|
return &tr
|
|
}
|
|
|
|
func (stl *SubTrieLoader) Reset() {
|
|
stl.codeRequests = stl.codeRequests[:0]
|
|
}
|
|
|
|
// AddCodeRequest add a request for code loading
|
|
func (stl *SubTrieLoader) AddCodeRequest(req *LoadRequestForCode) {
|
|
stl.codeRequests = append(stl.codeRequests, req)
|
|
}
|
|
|
|
// Various values of the account field set
|
|
const (
|
|
AccountFieldNonceOnly uint32 = 0x01
|
|
AccountFieldBalanceOnly uint32 = 0x02
|
|
AccountFieldStorageOnly uint32 = 0x04
|
|
AccountFieldCodeOnly uint32 = 0x08
|
|
AccountFieldSSizeOnly uint32 = 0x10
|
|
AccountFieldSetNotAccount uint32 = 0x00
|
|
)
|