package trie import ( "github.com/ledgerwatch/turbo-geth/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 []common.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 { blockNr uint64 codeRequests []*LoadRequestForCode } func NewSubTrieLoader(blockNr uint64) *SubTrieLoader { tr := SubTrieLoader{ codeRequests: []*LoadRequestForCode{}, blockNr: blockNr, } return &tr } func (stl *SubTrieLoader) Reset(blockNr uint64) { stl.blockNr = blockNr 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 )