core: stateDb has no trie and no snap return err (#2369)
This commit is contained in:
parent
e4688e4e7a
commit
48f58a50bb
@ -396,7 +396,20 @@ func (bc *BlockChain) State() (*state.StateDB, error) {
|
|||||||
|
|
||||||
// StateAt returns a new mutable state based on a particular point in time.
|
// StateAt returns a new mutable state based on a particular point in time.
|
||||||
func (bc *BlockChain) StateAt(root common.Hash) (*state.StateDB, error) {
|
func (bc *BlockChain) StateAt(root common.Hash) (*state.StateDB, error) {
|
||||||
return state.New(root, bc.stateCache, bc.snaps)
|
stateDb, err := state.New(root, bc.stateCache, bc.snaps)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// If there's no trie and the specified snapshot is not available, getting
|
||||||
|
// any state will by default return nil.
|
||||||
|
// Instead of that, it will be more useful to return an error to indicate
|
||||||
|
// the state is not available.
|
||||||
|
if stateDb.NoTrie() && stateDb.GetSnap() == nil {
|
||||||
|
return nil, errors.New("state is not available")
|
||||||
|
}
|
||||||
|
|
||||||
|
return stateDb, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Config retrieves the chain's fork configuration.
|
// Config retrieves the chain's fork configuration.
|
||||||
|
@ -1896,6 +1896,10 @@ func (s *StateDB) convertAccountSet(set map[common.Address]*types.StateAccount)
|
|||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *StateDB) GetSnap() snapshot.Snapshot {
|
||||||
|
return s.snap
|
||||||
|
}
|
||||||
|
|
||||||
// copySet returns a deep-copied set.
|
// copySet returns a deep-copied set.
|
||||||
func copySet[k comparable](set map[k][]byte) map[k][]byte {
|
func copySet[k comparable](set map[k][]byte) map[k][]byte {
|
||||||
copied := make(map[k][]byte, len(set))
|
copied := make(map[k][]byte, len(set))
|
||||||
|
Loading…
Reference in New Issue
Block a user