trie: avoid loading the root node twice

New checks whether the root node is present by loading it from the
database. Keep the node around instead of discarding it.
This commit is contained in:
Felix Lange 2016-10-17 21:31:27 +02:00
parent b19b7c39ac
commit 187d6a66a5
1 changed files with 4 additions and 6 deletions

View File

@ -93,13 +93,11 @@ func New(root common.Hash, db Database) (*Trie, error) {
if db == nil { if db == nil {
panic("trie.New: cannot use existing root without a database") panic("trie.New: cannot use existing root without a database")
} }
if v, _ := trie.db.Get(root[:]); len(v) == 0 { rootnode, err := trie.resolveHash(root[:], nil, nil)
return nil, &MissingNodeError{ if err != nil {
RootHash: root, return nil, err
NodeHash: root,
}
} }
trie.root = hashNode(root.Bytes()) trie.root = rootnode
} }
return trie, nil return trie, nil
} }