aboutsummaryrefslogtreecommitdiffstats
path: root/trie/trie.go
diff options
context:
space:
mode:
authorFelix Lange <fjl@twurst.com>2016-10-18 03:31:27 +0800
committerFelix Lange <fjl@twurst.com>2016-10-18 10:57:47 +0800
commit187d6a66a5176a1dc3e75d5ad4baad623762acb9 (patch)
tree3b16d6afdec475c4cd24c3742b59d723f298fdf8 /trie/trie.go
parentb19b7c39ac1074592c0aea1dc2b282d08d9a42b0 (diff)
downloadgo-tangerine-187d6a66a5176a1dc3e75d5ad4baad623762acb9.tar
go-tangerine-187d6a66a5176a1dc3e75d5ad4baad623762acb9.tar.gz
go-tangerine-187d6a66a5176a1dc3e75d5ad4baad623762acb9.tar.bz2
go-tangerine-187d6a66a5176a1dc3e75d5ad4baad623762acb9.tar.lz
go-tangerine-187d6a66a5176a1dc3e75d5ad4baad623762acb9.tar.xz
go-tangerine-187d6a66a5176a1dc3e75d5ad4baad623762acb9.tar.zst
go-tangerine-187d6a66a5176a1dc3e75d5ad4baad623762acb9.zip
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.
Diffstat (limited to 'trie/trie.go')
-rw-r--r--trie/trie.go10
1 files changed, 4 insertions, 6 deletions
diff --git a/trie/trie.go b/trie/trie.go
index 65005bae8..cce4cfeb6 100644
--- a/trie/trie.go
+++ b/trie/trie.go
@@ -93,13 +93,11 @@ func New(root common.Hash, db Database) (*Trie, error) {
if db == nil {
panic("trie.New: cannot use existing root without a database")
}
- if v, _ := trie.db.Get(root[:]); len(v) == 0 {
- return nil, &MissingNodeError{
- RootHash: root,
- NodeHash: root,
- }
+ rootnode, err := trie.resolveHash(root[:], nil, nil)
+ if err != nil {
+ return nil, err
}
- trie.root = hashNode(root.Bytes())
+ trie.root = rootnode
}
return trie, nil
}