Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
22c3ad1d
Unverified
Commit
22c3ad1d
authored
Feb 09, 2023
by
Martin Holst Swende
Committed by
GitHub
Feb 09, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
core/state, trie: remove unused error-return from trie Commit operation (#26641)
parent
3086c256
Changes
18
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
72 additions
and
131 deletions
+72
-131
database.go
core/state/database.go
+1
-1
generate.go
core/state/snapshot/generate.go
+2
-2
generate_test.go
core/state/snapshot/generate_test.go
+2
-2
state_object.go
core/state/state_object.go
+2
-4
statedb.go
core/state/statedb.go
+1
-4
sync_test.go
eth/protocols/snap/sync_test.go
+6
-6
postprocess.go
light/postprocess.go
+4
-8
trie.go
light/trie.go
+2
-2
trie_fuzzer.go
tests/fuzzers/stacktrie/trie_fuzzer.go
+2
-7
trie-fuzzer.go
tests/fuzzers/trie/trie-fuzzer.go
+1
-4
committer.go
trie/committer.go
+16
-27
iterator_test.go
trie/iterator_test.go
+9
-12
secure_trie.go
trie/secure_trie.go
+1
-1
secure_trie_test.go
trie/secure_trie_test.go
+1
-4
sync_test.go
trie/sync_test.go
+1
-4
trie.go
trie/trie.go
+5
-8
trie_test.go
trie/trie_test.go
+12
-25
util_test.go
trie/util_test.go
+4
-10
No files found.
core/state/database.go
View file @
22c3ad1d
...
@@ -109,7 +109,7 @@ type Trie interface {
...
@@ -109,7 +109,7 @@ type Trie interface {
// The returned nodeset can be nil if the trie is clean(nothing to commit).
// The returned nodeset can be nil if the trie is clean(nothing to commit).
// Once the trie is committed, it's not usable anymore. A new trie must
// Once the trie is committed, it's not usable anymore. A new trie must
// be created with new root and updated trie database for following usage
// be created with new root and updated trie database for following usage
Commit
(
collectLeaf
bool
)
(
common
.
Hash
,
*
trie
.
NodeSet
,
error
)
Commit
(
collectLeaf
bool
)
(
common
.
Hash
,
*
trie
.
NodeSet
)
// NodeIterator returns an iterator that returns nodes of the trie. Iteration
// NodeIterator returns an iterator that returns nodes of the trie. Iteration
// starts at the key after the given start key.
// starts at the key after the given start key.
...
...
core/state/snapshot/generate.go
View file @
22c3ad1d
...
@@ -367,8 +367,8 @@ func (dl *diskLayer) generateRange(ctx *generatorContext, trieId *trie.ID, prefi
...
@@ -367,8 +367,8 @@ func (dl *diskLayer) generateRange(ctx *generatorContext, trieId *trie.ID, prefi
for
i
,
key
:=
range
result
.
keys
{
for
i
,
key
:=
range
result
.
keys
{
snapTrie
.
Update
(
key
,
result
.
vals
[
i
])
snapTrie
.
Update
(
key
,
result
.
vals
[
i
])
}
}
root
,
nodes
,
err
:=
snapTrie
.
Commit
(
false
)
root
,
nodes
:=
snapTrie
.
Commit
(
false
)
if
err
==
nil
&&
nodes
!=
nil
{
if
nodes
!=
nil
{
tdb
.
Update
(
trie
.
NewWithNodeSet
(
nodes
))
tdb
.
Update
(
trie
.
NewWithNodeSet
(
nodes
))
tdb
.
Commit
(
root
,
false
)
tdb
.
Commit
(
root
,
false
)
}
}
...
...
core/state/snapshot/generate_test.go
View file @
22c3ad1d
...
@@ -190,7 +190,7 @@ func (t *testHelper) makeStorageTrie(stateRoot, owner common.Hash, keys []string
...
@@ -190,7 +190,7 @@ func (t *testHelper) makeStorageTrie(stateRoot, owner common.Hash, keys []string
if
!
commit
{
if
!
commit
{
return
stTrie
.
Hash
()
.
Bytes
()
return
stTrie
.
Hash
()
.
Bytes
()
}
}
root
,
nodes
,
_
:=
stTrie
.
Commit
(
false
)
root
,
nodes
:=
stTrie
.
Commit
(
false
)
if
nodes
!=
nil
{
if
nodes
!=
nil
{
t
.
nodes
.
Merge
(
nodes
)
t
.
nodes
.
Merge
(
nodes
)
}
}
...
@@ -198,7 +198,7 @@ func (t *testHelper) makeStorageTrie(stateRoot, owner common.Hash, keys []string
...
@@ -198,7 +198,7 @@ func (t *testHelper) makeStorageTrie(stateRoot, owner common.Hash, keys []string
}
}
func
(
t
*
testHelper
)
Commit
()
common
.
Hash
{
func
(
t
*
testHelper
)
Commit
()
common
.
Hash
{
root
,
nodes
,
_
:=
t
.
accTrie
.
Commit
(
true
)
root
,
nodes
:=
t
.
accTrie
.
Commit
(
true
)
if
nodes
!=
nil
{
if
nodes
!=
nil
{
t
.
nodes
.
Merge
(
nodes
)
t
.
nodes
.
Merge
(
nodes
)
}
}
...
...
core/state/state_object.go
View file @
22c3ad1d
...
@@ -385,10 +385,8 @@ func (s *stateObject) commitTrie(db Database) (*trie.NodeSet, error) {
...
@@ -385,10 +385,8 @@ func (s *stateObject) commitTrie(db Database) (*trie.NodeSet, error) {
if
metrics
.
EnabledExpensive
{
if
metrics
.
EnabledExpensive
{
defer
func
(
start
time
.
Time
)
{
s
.
db
.
StorageCommits
+=
time
.
Since
(
start
)
}(
time
.
Now
())
defer
func
(
start
time
.
Time
)
{
s
.
db
.
StorageCommits
+=
time
.
Since
(
start
)
}(
time
.
Now
())
}
}
root
,
nodes
,
err
:=
tr
.
Commit
(
false
)
root
,
nodes
:=
tr
.
Commit
(
false
)
if
err
==
nil
{
s
.
data
.
Root
=
root
s
.
data
.
Root
=
root
}
return
nodes
,
err
return
nodes
,
err
}
}
...
...
core/state/statedb.go
View file @
22c3ad1d
...
@@ -1019,10 +1019,7 @@ func (s *StateDB) Commit(deleteEmptyObjects bool) (common.Hash, error) {
...
@@ -1019,10 +1019,7 @@ func (s *StateDB) Commit(deleteEmptyObjects bool) (common.Hash, error) {
if
metrics
.
EnabledExpensive
{
if
metrics
.
EnabledExpensive
{
start
=
time
.
Now
()
start
=
time
.
Now
()
}
}
root
,
set
,
err
:=
s
.
trie
.
Commit
(
true
)
root
,
set
:=
s
.
trie
.
Commit
(
true
)
if
err
!=
nil
{
return
common
.
Hash
{},
err
}
// Merge the dirty nodes of account trie into global set
// Merge the dirty nodes of account trie into global set
if
set
!=
nil
{
if
set
!=
nil
{
if
err
:=
nodes
.
Merge
(
set
);
err
!=
nil
{
if
err
:=
nodes
.
Merge
(
set
);
err
!=
nil
{
...
...
eth/protocols/snap/sync_test.go
View file @
22c3ad1d
...
@@ -1388,7 +1388,7 @@ func makeAccountTrieNoStorage(n int) (string, *trie.Trie, entrySlice) {
...
@@ -1388,7 +1388,7 @@ func makeAccountTrieNoStorage(n int) (string, *trie.Trie, entrySlice) {
// Commit the state changes into db and re-create the trie
// Commit the state changes into db and re-create the trie
// for accessing later.
// for accessing later.
root
,
nodes
,
_
:=
accTrie
.
Commit
(
false
)
root
,
nodes
:=
accTrie
.
Commit
(
false
)
db
.
Update
(
trie
.
NewWithNodeSet
(
nodes
))
db
.
Update
(
trie
.
NewWithNodeSet
(
nodes
))
accTrie
,
_
=
trie
.
New
(
trie
.
StateTrieID
(
root
),
db
)
accTrie
,
_
=
trie
.
New
(
trie
.
StateTrieID
(
root
),
db
)
...
@@ -1450,7 +1450,7 @@ func makeBoundaryAccountTrie(n int) (string, *trie.Trie, entrySlice) {
...
@@ -1450,7 +1450,7 @@ func makeBoundaryAccountTrie(n int) (string, *trie.Trie, entrySlice) {
// Commit the state changes into db and re-create the trie
// Commit the state changes into db and re-create the trie
// for accessing later.
// for accessing later.
root
,
nodes
,
_
:=
accTrie
.
Commit
(
false
)
root
,
nodes
:=
accTrie
.
Commit
(
false
)
db
.
Update
(
trie
.
NewWithNodeSet
(
nodes
))
db
.
Update
(
trie
.
NewWithNodeSet
(
nodes
))
accTrie
,
_
=
trie
.
New
(
trie
.
StateTrieID
(
root
),
db
)
accTrie
,
_
=
trie
.
New
(
trie
.
StateTrieID
(
root
),
db
)
...
@@ -1496,7 +1496,7 @@ func makeAccountTrieWithStorageWithUniqueStorage(accounts, slots int, code bool)
...
@@ -1496,7 +1496,7 @@ func makeAccountTrieWithStorageWithUniqueStorage(accounts, slots int, code bool)
sort
.
Sort
(
entries
)
sort
.
Sort
(
entries
)
// Commit account trie
// Commit account trie
root
,
set
,
_
:=
accTrie
.
Commit
(
true
)
root
,
set
:=
accTrie
.
Commit
(
true
)
nodes
.
Merge
(
set
)
nodes
.
Merge
(
set
)
// Commit gathered dirty nodes into database
// Commit gathered dirty nodes into database
...
@@ -1561,7 +1561,7 @@ func makeAccountTrieWithStorage(accounts, slots int, code, boundary bool) (strin
...
@@ -1561,7 +1561,7 @@ func makeAccountTrieWithStorage(accounts, slots int, code, boundary bool) (strin
sort
.
Sort
(
entries
)
sort
.
Sort
(
entries
)
// Commit account trie
// Commit account trie
root
,
set
,
_
:=
accTrie
.
Commit
(
true
)
root
,
set
:=
accTrie
.
Commit
(
true
)
nodes
.
Merge
(
set
)
nodes
.
Merge
(
set
)
// Commit gathered dirty nodes into database
// Commit gathered dirty nodes into database
...
@@ -1603,7 +1603,7 @@ func makeStorageTrieWithSeed(owner common.Hash, n, seed uint64, db *trie.Databas
...
@@ -1603,7 +1603,7 @@ func makeStorageTrieWithSeed(owner common.Hash, n, seed uint64, db *trie.Databas
entries
=
append
(
entries
,
elem
)
entries
=
append
(
entries
,
elem
)
}
}
sort
.
Sort
(
entries
)
sort
.
Sort
(
entries
)
root
,
nodes
,
_
:=
trie
.
Commit
(
false
)
root
,
nodes
:=
trie
.
Commit
(
false
)
return
root
,
nodes
,
entries
return
root
,
nodes
,
entries
}
}
...
@@ -1654,7 +1654,7 @@ func makeBoundaryStorageTrie(owner common.Hash, n int, db *trie.Database) (commo
...
@@ -1654,7 +1654,7 @@ func makeBoundaryStorageTrie(owner common.Hash, n int, db *trie.Database) (commo
entries
=
append
(
entries
,
elem
)
entries
=
append
(
entries
,
elem
)
}
}
sort
.
Sort
(
entries
)
sort
.
Sort
(
entries
)
root
,
nodes
,
_
:=
trie
.
Commit
(
false
)
root
,
nodes
:=
trie
.
Commit
(
false
)
return
root
,
nodes
,
entries
return
root
,
nodes
,
entries
}
}
...
...
light/postprocess.go
View file @
22c3ad1d
...
@@ -212,10 +212,7 @@ func (c *ChtIndexerBackend) Process(ctx context.Context, header *types.Header) e
...
@@ -212,10 +212,7 @@ func (c *ChtIndexerBackend) Process(ctx context.Context, header *types.Header) e
// Commit implements core.ChainIndexerBackend
// Commit implements core.ChainIndexerBackend
func
(
c
*
ChtIndexerBackend
)
Commit
()
error
{
func
(
c
*
ChtIndexerBackend
)
Commit
()
error
{
root
,
nodes
,
err
:=
c
.
trie
.
Commit
(
false
)
root
,
nodes
:=
c
.
trie
.
Commit
(
false
)
if
err
!=
nil
{
return
err
}
// Commit trie changes into trie database in case it's not nil.
// Commit trie changes into trie database in case it's not nil.
if
nodes
!=
nil
{
if
nodes
!=
nil
{
if
err
:=
c
.
triedb
.
Update
(
trie
.
NewWithNodeSet
(
nodes
));
err
!=
nil
{
if
err
:=
c
.
triedb
.
Update
(
trie
.
NewWithNodeSet
(
nodes
));
err
!=
nil
{
...
@@ -226,6 +223,7 @@ func (c *ChtIndexerBackend) Commit() error {
...
@@ -226,6 +223,7 @@ func (c *ChtIndexerBackend) Commit() error {
}
}
}
}
// Re-create trie with newly generated root and updated database.
// Re-create trie with newly generated root and updated database.
var
err
error
c
.
trie
,
err
=
trie
.
New
(
trie
.
TrieID
(
root
),
c
.
triedb
)
c
.
trie
,
err
=
trie
.
New
(
trie
.
TrieID
(
root
),
c
.
triedb
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
...
@@ -458,10 +456,7 @@ func (b *BloomTrieIndexerBackend) Commit() error {
...
@@ -458,10 +456,7 @@ func (b *BloomTrieIndexerBackend) Commit() error {
b
.
trie
.
Delete
(
encKey
[
:
])
b
.
trie
.
Delete
(
encKey
[
:
])
}
}
}
}
root
,
nodes
,
err
:=
b
.
trie
.
Commit
(
false
)
root
,
nodes
:=
b
.
trie
.
Commit
(
false
)
if
err
!=
nil
{
return
err
}
// Commit trie changes into trie database in case it's not nil.
// Commit trie changes into trie database in case it's not nil.
if
nodes
!=
nil
{
if
nodes
!=
nil
{
if
err
:=
b
.
triedb
.
Update
(
trie
.
NewWithNodeSet
(
nodes
));
err
!=
nil
{
if
err
:=
b
.
triedb
.
Update
(
trie
.
NewWithNodeSet
(
nodes
));
err
!=
nil
{
...
@@ -472,6 +467,7 @@ func (b *BloomTrieIndexerBackend) Commit() error {
...
@@ -472,6 +467,7 @@ func (b *BloomTrieIndexerBackend) Commit() error {
}
}
}
}
// Re-create trie with newly generated root and updated database.
// Re-create trie with newly generated root and updated database.
var
err
error
b
.
trie
,
err
=
trie
.
New
(
trie
.
TrieID
(
root
),
b
.
triedb
)
b
.
trie
,
err
=
trie
.
New
(
trie
.
TrieID
(
root
),
b
.
triedb
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
...
...
light/trie.go
View file @
22c3ad1d
...
@@ -164,9 +164,9 @@ func (t *odrTrie) TryDeleteAccount(address common.Address) error {
...
@@ -164,9 +164,9 @@ func (t *odrTrie) TryDeleteAccount(address common.Address) error {
})
})
}
}
func
(
t
*
odrTrie
)
Commit
(
collectLeaf
bool
)
(
common
.
Hash
,
*
trie
.
NodeSet
,
error
)
{
func
(
t
*
odrTrie
)
Commit
(
collectLeaf
bool
)
(
common
.
Hash
,
*
trie
.
NodeSet
)
{
if
t
.
trie
==
nil
{
if
t
.
trie
==
nil
{
return
t
.
id
.
Root
,
nil
,
nil
return
t
.
id
.
Root
,
nil
}
}
return
t
.
trie
.
Commit
(
collectLeaf
)
return
t
.
trie
.
Commit
(
collectLeaf
)
}
}
...
...
tests/fuzzers/stacktrie/trie_fuzzer.go
View file @
22c3ad1d
...
@@ -182,10 +182,7 @@ func (f *fuzzer) fuzz() int {
...
@@ -182,10 +182,7 @@ func (f *fuzzer) fuzz() int {
return
0
return
0
}
}
// Flush trie -> database
// Flush trie -> database
rootA
,
nodes
,
err
:=
trieA
.
Commit
(
false
)
rootA
,
nodes
:=
trieA
.
Commit
(
false
)
if
err
!=
nil
{
panic
(
err
)
}
if
nodes
!=
nil
{
if
nodes
!=
nil
{
dbA
.
Update
(
trie
.
NewWithNodeSet
(
nodes
))
dbA
.
Update
(
trie
.
NewWithNodeSet
(
nodes
))
}
}
...
@@ -201,9 +198,7 @@ func (f *fuzzer) fuzz() int {
...
@@ -201,9 +198,7 @@ func (f *fuzzer) fuzz() int {
trieB
.
Update
(
kv
.
k
,
kv
.
v
)
trieB
.
Update
(
kv
.
k
,
kv
.
v
)
}
}
rootB
:=
trieB
.
Hash
()
rootB
:=
trieB
.
Hash
()
if
_
,
err
:=
trieB
.
Commit
();
err
!=
nil
{
trieB
.
Commit
()
panic
(
err
)
}
if
rootA
!=
rootB
{
if
rootA
!=
rootB
{
panic
(
fmt
.
Sprintf
(
"roots differ: (trie) %x != %x (stacktrie)"
,
rootA
,
rootB
))
panic
(
fmt
.
Sprintf
(
"roots differ: (trie) %x != %x (stacktrie)"
,
rootA
,
rootB
))
}
}
...
...
tests/fuzzers/trie/trie-fuzzer.go
View file @
22c3ad1d
...
@@ -161,10 +161,7 @@ func runRandTest(rt randTest) error {
...
@@ -161,10 +161,7 @@ func runRandTest(rt randTest) error {
case
opHash
:
case
opHash
:
tr
.
Hash
()
tr
.
Hash
()
case
opCommit
:
case
opCommit
:
hash
,
nodes
,
err
:=
tr
.
Commit
(
false
)
hash
,
nodes
:=
tr
.
Commit
(
false
)
if
err
!=
nil
{
return
err
}
if
nodes
!=
nil
{
if
nodes
!=
nil
{
if
err
:=
triedb
.
Update
(
trie
.
NewWithNodeSet
(
nodes
));
err
!=
nil
{
if
err
:=
triedb
.
Update
(
trie
.
NewWithNodeSet
(
nodes
));
err
!=
nil
{
return
err
return
err
...
...
trie/committer.go
View file @
22c3ad1d
...
@@ -48,25 +48,22 @@ func newCommitter(owner common.Hash, tracer *tracer, collectLeaf bool) *committe
...
@@ -48,25 +48,22 @@ func newCommitter(owner common.Hash, tracer *tracer, collectLeaf bool) *committe
// Commit collapses a node down into a hash node and returns it along with
// Commit collapses a node down into a hash node and returns it along with
// the modified nodeset.
// the modified nodeset.
func
(
c
*
committer
)
Commit
(
n
node
)
(
hashNode
,
*
NodeSet
,
error
)
{
func
(
c
*
committer
)
Commit
(
n
node
)
(
hashNode
,
*
NodeSet
)
{
h
,
err
:=
c
.
commit
(
nil
,
n
)
h
:=
c
.
commit
(
nil
,
n
)
if
err
!=
nil
{
return
nil
,
nil
,
err
}
// Some nodes can be deleted from trie which can't be captured
// Some nodes can be deleted from trie which can't be captured
// by committer itself. Iterate all deleted nodes tracked by
// by committer itself. Iterate all deleted nodes tracked by
// tracer and marked them as deleted only if they are present
// tracer and marked them as deleted only if they are present
// in database previously.
// in database previously.
c
.
tracer
.
markDeletions
(
c
.
nodes
)
c
.
tracer
.
markDeletions
(
c
.
nodes
)
return
h
.
(
hashNode
),
c
.
nodes
,
nil
return
h
.
(
hashNode
),
c
.
nodes
}
}
// commit collapses a node down into a hash node and returns it.
// commit collapses a node down into a hash node and returns it.
func
(
c
*
committer
)
commit
(
path
[]
byte
,
n
node
)
(
node
,
error
)
{
func
(
c
*
committer
)
commit
(
path
[]
byte
,
n
node
)
node
{
// if this path is clean, use available cached data
// if this path is clean, use available cached data
hash
,
dirty
:=
n
.
cache
()
hash
,
dirty
:=
n
.
cache
()
if
hash
!=
nil
&&
!
dirty
{
if
hash
!=
nil
&&
!
dirty
{
return
hash
,
nil
return
hash
}
}
// Commit children, then parent, and remove the dirty flag.
// Commit children, then parent, and remove the dirty flag.
switch
cn
:=
n
.
(
type
)
{
switch
cn
:=
n
.
(
type
)
{
...
@@ -77,10 +74,8 @@ func (c *committer) commit(path []byte, n node) (node, error) {
...
@@ -77,10 +74,8 @@ func (c *committer) commit(path []byte, n node) (node, error) {
// If the child is fullNode, recursively commit,
// If the child is fullNode, recursively commit,
// otherwise it can only be hashNode or valueNode.
// otherwise it can only be hashNode or valueNode.
if
_
,
ok
:=
cn
.
Val
.
(
*
fullNode
);
ok
{
if
_
,
ok
:=
cn
.
Val
.
(
*
fullNode
);
ok
{
childV
,
err
:=
c
.
commit
(
append
(
path
,
cn
.
Key
...
),
cn
.
Val
)
childV
:=
c
.
commit
(
append
(
path
,
cn
.
Key
...
),
cn
.
Val
)
if
err
!=
nil
{
return
nil
,
err
}
collapsed
.
Val
=
childV
collapsed
.
Val
=
childV
}
}
// The key needs to be copied, since we're adding it to the
// The key needs to be copied, since we're adding it to the
...
@@ -88,7 +83,7 @@ func (c *committer) commit(path []byte, n node) (node, error) {
...
@@ -88,7 +83,7 @@ func (c *committer) commit(path []byte, n node) (node, error) {
collapsed
.
Key
=
hexToCompact
(
cn
.
Key
)
collapsed
.
Key
=
hexToCompact
(
cn
.
Key
)
hashedNode
:=
c
.
store
(
path
,
collapsed
)
hashedNode
:=
c
.
store
(
path
,
collapsed
)
if
hn
,
ok
:=
hashedNode
.
(
hashNode
);
ok
{
if
hn
,
ok
:=
hashedNode
.
(
hashNode
);
ok
{
return
hn
,
nil
return
hn
}
}
// The short node now is embedded in its parent. Mark the node as
// The short node now is embedded in its parent. Mark the node as
// deleted if it's present in database previously. It's equivalent
// deleted if it's present in database previously. It's equivalent
...
@@ -96,18 +91,15 @@ func (c *committer) commit(path []byte, n node) (node, error) {
...
@@ -96,18 +91,15 @@ func (c *committer) commit(path []byte, n node) (node, error) {
if
prev
:=
c
.
tracer
.
getPrev
(
path
);
len
(
prev
)
!=
0
{
if
prev
:=
c
.
tracer
.
getPrev
(
path
);
len
(
prev
)
!=
0
{
c
.
nodes
.
markDeleted
(
path
,
prev
)
c
.
nodes
.
markDeleted
(
path
,
prev
)
}
}
return
collapsed
,
nil
return
collapsed
case
*
fullNode
:
case
*
fullNode
:
hashedKids
,
err
:=
c
.
commitChildren
(
path
,
cn
)
hashedKids
:=
c
.
commitChildren
(
path
,
cn
)
if
err
!=
nil
{
return
nil
,
err
}
collapsed
:=
cn
.
copy
()
collapsed
:=
cn
.
copy
()
collapsed
.
Children
=
hashedKids
collapsed
.
Children
=
hashedKids
hashedNode
:=
c
.
store
(
path
,
collapsed
)
hashedNode
:=
c
.
store
(
path
,
collapsed
)
if
hn
,
ok
:=
hashedNode
.
(
hashNode
);
ok
{
if
hn
,
ok
:=
hashedNode
.
(
hashNode
);
ok
{
return
hn
,
nil
return
hn
}
}
// The full node now is embedded in its parent. Mark the node as
// The full node now is embedded in its parent. Mark the node as
// deleted if it's present in database previously. It's equivalent
// deleted if it's present in database previously. It's equivalent
...
@@ -115,9 +107,9 @@ func (c *committer) commit(path []byte, n node) (node, error) {
...
@@ -115,9 +107,9 @@ func (c *committer) commit(path []byte, n node) (node, error) {
if
prev
:=
c
.
tracer
.
getPrev
(
path
);
len
(
prev
)
!=
0
{
if
prev
:=
c
.
tracer
.
getPrev
(
path
);
len
(
prev
)
!=
0
{
c
.
nodes
.
markDeleted
(
path
,
prev
)
c
.
nodes
.
markDeleted
(
path
,
prev
)
}
}
return
collapsed
,
nil
return
collapsed
case
hashNode
:
case
hashNode
:
return
cn
,
nil
return
cn
default
:
default
:
// nil, valuenode shouldn't be committed
// nil, valuenode shouldn't be committed
panic
(
fmt
.
Sprintf
(
"%T: invalid node: %v"
,
n
,
n
))
panic
(
fmt
.
Sprintf
(
"%T: invalid node: %v"
,
n
,
n
))
...
@@ -125,7 +117,7 @@ func (c *committer) commit(path []byte, n node) (node, error) {
...
@@ -125,7 +117,7 @@ func (c *committer) commit(path []byte, n node) (node, error) {
}
}
// commitChildren commits the children of the given fullnode
// commitChildren commits the children of the given fullnode
func
(
c
*
committer
)
commitChildren
(
path
[]
byte
,
n
*
fullNode
)
([
17
]
node
,
error
)
{
func
(
c
*
committer
)
commitChildren
(
path
[]
byte
,
n
*
fullNode
)
[
17
]
node
{
var
children
[
17
]
node
var
children
[
17
]
node
for
i
:=
0
;
i
<
16
;
i
++
{
for
i
:=
0
;
i
<
16
;
i
++
{
child
:=
n
.
Children
[
i
]
child
:=
n
.
Children
[
i
]
...
@@ -142,17 +134,14 @@ func (c *committer) commitChildren(path []byte, n *fullNode) ([17]node, error) {
...
@@ -142,17 +134,14 @@ func (c *committer) commitChildren(path []byte, n *fullNode) ([17]node, error) {
// Commit the child recursively and store the "hashed" value.
// Commit the child recursively and store the "hashed" value.
// Note the returned node can be some embedded nodes, so it's
// Note the returned node can be some embedded nodes, so it's
// possible the type is not hashNode.
// possible the type is not hashNode.
hashed
,
err
:=
c
.
commit
(
append
(
path
,
byte
(
i
)),
child
)
hashed
:=
c
.
commit
(
append
(
path
,
byte
(
i
)),
child
)
if
err
!=
nil
{
return
children
,
err
}
children
[
i
]
=
hashed
children
[
i
]
=
hashed
}
}
// For the 17th child, it's possible the type is valuenode.
// For the 17th child, it's possible the type is valuenode.
if
n
.
Children
[
16
]
!=
nil
{
if
n
.
Children
[
16
]
!=
nil
{
children
[
16
]
=
n
.
Children
[
16
]
children
[
16
]
=
n
.
Children
[
16
]
}
}
return
children
,
nil
return
children
}
}
// store hashes the node n and adds it to the modified nodeset. If leaf collection
// store hashes the node n and adds it to the modified nodeset. If leaf collection
...
...
trie/iterator_test.go
View file @
22c3ad1d
...
@@ -60,10 +60,7 @@ func TestIterator(t *testing.T) {
...
@@ -60,10 +60,7 @@ func TestIterator(t *testing.T) {
all
[
val
.
k
]
=
val
.
v
all
[
val
.
k
]
=
val
.
v
trie
.
Update
([]
byte
(
val
.
k
),
[]
byte
(
val
.
v
))
trie
.
Update
([]
byte
(
val
.
k
),
[]
byte
(
val
.
v
))
}
}
root
,
nodes
,
err
:=
trie
.
Commit
(
false
)
root
,
nodes
:=
trie
.
Commit
(
false
)
if
err
!=
nil
{
t
.
Fatalf
(
"Failed to commit trie %v"
,
err
)
}
db
.
Update
(
NewWithNodeSet
(
nodes
))
db
.
Update
(
NewWithNodeSet
(
nodes
))
trie
,
_
=
New
(
TrieID
(
root
),
db
)
trie
,
_
=
New
(
TrieID
(
root
),
db
)
...
@@ -225,7 +222,7 @@ func TestDifferenceIterator(t *testing.T) {
...
@@ -225,7 +222,7 @@ func TestDifferenceIterator(t *testing.T) {
for
_
,
val
:=
range
testdata1
{
for
_
,
val
:=
range
testdata1
{
triea
.
Update
([]
byte
(
val
.
k
),
[]
byte
(
val
.
v
))
triea
.
Update
([]
byte
(
val
.
k
),
[]
byte
(
val
.
v
))
}
}
rootA
,
nodesA
,
_
:=
triea
.
Commit
(
false
)
rootA
,
nodesA
:=
triea
.
Commit
(
false
)
dba
.
Update
(
NewWithNodeSet
(
nodesA
))
dba
.
Update
(
NewWithNodeSet
(
nodesA
))
triea
,
_
=
New
(
TrieID
(
rootA
),
dba
)
triea
,
_
=
New
(
TrieID
(
rootA
),
dba
)
...
@@ -234,7 +231,7 @@ func TestDifferenceIterator(t *testing.T) {
...
@@ -234,7 +231,7 @@ func TestDifferenceIterator(t *testing.T) {
for
_
,
val
:=
range
testdata2
{
for
_
,
val
:=
range
testdata2
{
trieb
.
Update
([]
byte
(
val
.
k
),
[]
byte
(
val
.
v
))
trieb
.
Update
([]
byte
(
val
.
k
),
[]
byte
(
val
.
v
))
}
}
rootB
,
nodesB
,
_
:=
trieb
.
Commit
(
false
)
rootB
,
nodesB
:=
trieb
.
Commit
(
false
)
dbb
.
Update
(
NewWithNodeSet
(
nodesB
))
dbb
.
Update
(
NewWithNodeSet
(
nodesB
))
trieb
,
_
=
New
(
TrieID
(
rootB
),
dbb
)
trieb
,
_
=
New
(
TrieID
(
rootB
),
dbb
)
...
@@ -267,7 +264,7 @@ func TestUnionIterator(t *testing.T) {
...
@@ -267,7 +264,7 @@ func TestUnionIterator(t *testing.T) {
for
_
,
val
:=
range
testdata1
{
for
_
,
val
:=
range
testdata1
{
triea
.
Update
([]
byte
(
val
.
k
),
[]
byte
(
val
.
v
))
triea
.
Update
([]
byte
(
val
.
k
),
[]
byte
(
val
.
v
))
}
}
rootA
,
nodesA
,
_
:=
triea
.
Commit
(
false
)
rootA
,
nodesA
:=
triea
.
Commit
(
false
)
dba
.
Update
(
NewWithNodeSet
(
nodesA
))
dba
.
Update
(
NewWithNodeSet
(
nodesA
))
triea
,
_
=
New
(
TrieID
(
rootA
),
dba
)
triea
,
_
=
New
(
TrieID
(
rootA
),
dba
)
...
@@ -276,7 +273,7 @@ func TestUnionIterator(t *testing.T) {
...
@@ -276,7 +273,7 @@ func TestUnionIterator(t *testing.T) {
for
_
,
val
:=
range
testdata2
{
for
_
,
val
:=
range
testdata2
{
trieb
.
Update
([]
byte
(
val
.
k
),
[]
byte
(
val
.
v
))
trieb
.
Update
([]
byte
(
val
.
k
),
[]
byte
(
val
.
v
))
}
}
rootB
,
nodesB
,
_
:=
trieb
.
Commit
(
false
)
rootB
,
nodesB
:=
trieb
.
Commit
(
false
)
dbb
.
Update
(
NewWithNodeSet
(
nodesB
))
dbb
.
Update
(
NewWithNodeSet
(
nodesB
))
trieb
,
_
=
New
(
TrieID
(
rootB
),
dbb
)
trieb
,
_
=
New
(
TrieID
(
rootB
),
dbb
)
...
@@ -334,7 +331,7 @@ func testIteratorContinueAfterError(t *testing.T, memonly bool) {
...
@@ -334,7 +331,7 @@ func testIteratorContinueAfterError(t *testing.T, memonly bool) {
for
_
,
val
:=
range
testdata1
{
for
_
,
val
:=
range
testdata1
{
tr
.
Update
([]
byte
(
val
.
k
),
[]
byte
(
val
.
v
))
tr
.
Update
([]
byte
(
val
.
k
),
[]
byte
(
val
.
v
))
}
}
_
,
nodes
,
_
:=
tr
.
Commit
(
false
)
_
,
nodes
:=
tr
.
Commit
(
false
)
triedb
.
Update
(
NewWithNodeSet
(
nodes
))
triedb
.
Update
(
NewWithNodeSet
(
nodes
))
if
!
memonly
{
if
!
memonly
{
triedb
.
Commit
(
tr
.
Hash
(),
false
)
triedb
.
Commit
(
tr
.
Hash
(),
false
)
...
@@ -426,7 +423,7 @@ func testIteratorContinueAfterSeekError(t *testing.T, memonly bool) {
...
@@ -426,7 +423,7 @@ func testIteratorContinueAfterSeekError(t *testing.T, memonly bool) {
for
_
,
val
:=
range
testdata1
{
for
_
,
val
:=
range
testdata1
{
ctr
.
Update
([]
byte
(
val
.
k
),
[]
byte
(
val
.
v
))
ctr
.
Update
([]
byte
(
val
.
k
),
[]
byte
(
val
.
v
))
}
}
root
,
nodes
,
_
:=
ctr
.
Commit
(
false
)
root
,
nodes
:=
ctr
.
Commit
(
false
)
triedb
.
Update
(
NewWithNodeSet
(
nodes
))
triedb
.
Update
(
NewWithNodeSet
(
nodes
))
if
!
memonly
{
if
!
memonly
{
triedb
.
Commit
(
root
,
false
)
triedb
.
Commit
(
root
,
false
)
...
@@ -545,7 +542,7 @@ func makeLargeTestTrie() (*Database, *StateTrie, *loggingDb) {
...
@@ -545,7 +542,7 @@ func makeLargeTestTrie() (*Database, *StateTrie, *loggingDb) {
val
=
crypto
.
Keccak256
(
val
)
val
=
crypto
.
Keccak256
(
val
)
trie
.
Update
(
key
,
val
)
trie
.
Update
(
key
,
val
)
}
}
_
,
nodes
,
_
:=
trie
.
Commit
(
false
)
_
,
nodes
:=
trie
.
Commit
(
false
)
triedb
.
Update
(
NewWithNodeSet
(
nodes
))
triedb
.
Update
(
NewWithNodeSet
(
nodes
))
// Return the generated trie
// Return the generated trie
return
triedb
,
trie
,
logDb
return
triedb
,
trie
,
logDb
...
@@ -585,7 +582,7 @@ func TestIteratorNodeBlob(t *testing.T) {
...
@@ -585,7 +582,7 @@ func TestIteratorNodeBlob(t *testing.T) {
all
[
val
.
k
]
=
val
.
v
all
[
val
.
k
]
=
val
.
v
trie
.
Update
([]
byte
(
val
.
k
),
[]
byte
(
val
.
v
))
trie
.
Update
([]
byte
(
val
.
k
),
[]
byte
(
val
.
v
))
}
}
_
,
nodes
,
_
:=
trie
.
Commit
(
false
)
_
,
nodes
:=
trie
.
Commit
(
false
)
triedb
.
Update
(
NewWithNodeSet
(
nodes
))
triedb
.
Update
(
NewWithNodeSet
(
nodes
))
triedb
.
Cap
(
0
)
triedb
.
Cap
(
0
)
...
...
trie/secure_trie.go
View file @
22c3ad1d
...
@@ -211,7 +211,7 @@ func (t *StateTrie) GetKey(shaKey []byte) []byte {
...
@@ -211,7 +211,7 @@ func (t *StateTrie) GetKey(shaKey []byte) []byte {
// All cached preimages will be also flushed if preimages recording is enabled.
// All cached preimages will be also flushed if preimages recording is enabled.
// Once the trie is committed, it's not usable anymore. A new trie must
// Once the trie is committed, it's not usable anymore. A new trie must
// be created with new root and updated trie database for following usage
// be created with new root and updated trie database for following usage
func
(
t
*
StateTrie
)
Commit
(
collectLeaf
bool
)
(
common
.
Hash
,
*
NodeSet
,
error
)
{
func
(
t
*
StateTrie
)
Commit
(
collectLeaf
bool
)
(
common
.
Hash
,
*
NodeSet
)
{
// Write all the pre-images to the actual disk database
// Write all the pre-images to the actual disk database
if
len
(
t
.
getSecKeyCache
())
>
0
{
if
len
(
t
.
getSecKeyCache
())
>
0
{
if
t
.
preimages
!=
nil
{
if
t
.
preimages
!=
nil
{
...
...
trie/secure_trie_test.go
View file @
22c3ad1d
...
@@ -58,10 +58,7 @@ func makeTestStateTrie() (*Database, *StateTrie, map[string][]byte) {
...
@@ -58,10 +58,7 @@ func makeTestStateTrie() (*Database, *StateTrie, map[string][]byte) {
trie
.
Update
(
key
,
val
)
trie
.
Update
(
key
,
val
)
}
}
}
}
root
,
nodes
,
err
:=
trie
.
Commit
(
false
)
root
,
nodes
:=
trie
.
Commit
(
false
)
if
err
!=
nil
{
panic
(
fmt
.
Errorf
(
"failed to commit trie %v"
,
err
))
}
if
err
:=
triedb
.
Update
(
NewWithNodeSet
(
nodes
));
err
!=
nil
{
if
err
:=
triedb
.
Update
(
NewWithNodeSet
(
nodes
));
err
!=
nil
{
panic
(
fmt
.
Errorf
(
"failed to commit db %v"
,
err
))
panic
(
fmt
.
Errorf
(
"failed to commit db %v"
,
err
))
}
}
...
...
trie/sync_test.go
View file @
22c3ad1d
...
@@ -52,10 +52,7 @@ func makeTestTrie() (*Database, *StateTrie, map[string][]byte) {
...
@@ -52,10 +52,7 @@ func makeTestTrie() (*Database, *StateTrie, map[string][]byte) {
trie
.
Update
(
key
,
val
)
trie
.
Update
(
key
,
val
)
}
}
}
}
root
,
nodes
,
err
:=
trie
.
Commit
(
false
)
root
,
nodes
:=
trie
.
Commit
(
false
)
if
err
!=
nil
{
panic
(
fmt
.
Errorf
(
"failed to commit trie %v"
,
err
))
}
if
err
:=
triedb
.
Update
(
NewWithNodeSet
(
nodes
));
err
!=
nil
{
if
err
:=
triedb
.
Update
(
NewWithNodeSet
(
nodes
));
err
!=
nil
{
panic
(
fmt
.
Errorf
(
"failed to commit db %v"
,
err
))
panic
(
fmt
.
Errorf
(
"failed to commit db %v"
,
err
))
}
}
...
...
trie/trie.go
View file @
22c3ad1d
...
@@ -566,7 +566,7 @@ func (t *Trie) Hash() common.Hash {
...
@@ -566,7 +566,7 @@ func (t *Trie) Hash() common.Hash {
// The returned nodeset can be nil if the trie is clean (nothing to commit).
// The returned nodeset can be nil if the trie is clean (nothing to commit).
// Once the trie is committed, it's not usable anymore. A new trie must
// Once the trie is committed, it's not usable anymore. A new trie must
// be created with new root and updated trie database for following usage
// be created with new root and updated trie database for following usage
func
(
t
*
Trie
)
Commit
(
collectLeaf
bool
)
(
common
.
Hash
,
*
NodeSet
,
error
)
{
func
(
t
*
Trie
)
Commit
(
collectLeaf
bool
)
(
common
.
Hash
,
*
NodeSet
)
{
defer
t
.
tracer
.
reset
()
defer
t
.
tracer
.
reset
()
// Trie is empty and can be classified into two types of situations:
// Trie is empty and can be classified into two types of situations:
...
@@ -576,7 +576,7 @@ func (t *Trie) Commit(collectLeaf bool) (common.Hash, *NodeSet, error) {
...
@@ -576,7 +576,7 @@ func (t *Trie) Commit(collectLeaf bool) (common.Hash, *NodeSet, error) {
// Wrap tracked deletions as the return
// Wrap tracked deletions as the return
set
:=
NewNodeSet
(
t
.
owner
)
set
:=
NewNodeSet
(
t
.
owner
)
t
.
tracer
.
markDeletions
(
set
)
t
.
tracer
.
markDeletions
(
set
)
return
emptyRoot
,
set
,
nil
return
emptyRoot
,
set
}
}
// Derive the hash for all dirty nodes first. We hold the assumption
// Derive the hash for all dirty nodes first. We hold the assumption
// in the following procedure that all nodes are hashed.
// in the following procedure that all nodes are hashed.
...
@@ -588,15 +588,12 @@ func (t *Trie) Commit(collectLeaf bool) (common.Hash, *NodeSet, error) {
...
@@ -588,15 +588,12 @@ func (t *Trie) Commit(collectLeaf bool) (common.Hash, *NodeSet, error) {
// Replace the root node with the origin hash in order to
// Replace the root node with the origin hash in order to
// ensure all resolved nodes are dropped after the commit.
// ensure all resolved nodes are dropped after the commit.
t
.
root
=
hashedNode
t
.
root
=
hashedNode
return
rootHash
,
nil
,
nil
return
rootHash
,
nil
}
}
h
:=
newCommitter
(
t
.
owner
,
t
.
tracer
,
collectLeaf
)
h
:=
newCommitter
(
t
.
owner
,
t
.
tracer
,
collectLeaf
)
newRoot
,
nodes
,
err
:=
h
.
Commit
(
t
.
root
)
newRoot
,
nodes
:=
h
.
Commit
(
t
.
root
)
if
err
!=
nil
{
return
common
.
Hash
{},
nil
,
err
}
t
.
root
=
newRoot
t
.
root
=
newRoot
return
rootHash
,
nodes
,
nil
return
rootHash
,
nodes
}
}
// hashRoot calculates the root hash of the given trie
// hashRoot calculates the root hash of the given trie
...
...
trie/trie_test.go
View file @
22c3ad1d
...
@@ -83,7 +83,7 @@ func testMissingNode(t *testing.T, memonly bool) {
...
@@ -83,7 +83,7 @@ func testMissingNode(t *testing.T, memonly bool) {
trie
:=
NewEmpty
(
triedb
)
trie
:=
NewEmpty
(
triedb
)
updateString
(
trie
,
"120000"
,
"qwerqwerqwerqwerqwerqwerqwerqwer"
)
updateString
(
trie
,
"120000"
,
"qwerqwerqwerqwerqwerqwerqwerqwer"
)
updateString
(
trie
,
"123456"
,
"asdfasdfasdfasdfasdfasdfasdfasdf"
)
updateString
(
trie
,
"123456"
,
"asdfasdfasdfasdfasdfasdfasdfasdf"
)
root
,
nodes
,
_
:=
trie
.
Commit
(
false
)
root
,
nodes
:=
trie
.
Commit
(
false
)
triedb
.
Update
(
NewWithNodeSet
(
nodes
))
triedb
.
Update
(
NewWithNodeSet
(
nodes
))
if
!
memonly
{
if
!
memonly
{
triedb
.
Commit
(
root
,
false
)
triedb
.
Commit
(
root
,
false
)
...
@@ -166,10 +166,7 @@ func TestInsert(t *testing.T) {
...
@@ -166,10 +166,7 @@ func TestInsert(t *testing.T) {
updateString
(
trie
,
"A"
,
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
)
updateString
(
trie
,
"A"
,
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
)
exp
=
common
.
HexToHash
(
"d23786fb4a010da3ce639d66d5e904a11dbc02746d1ce25029e53290cabf28ab"
)
exp
=
common
.
HexToHash
(
"d23786fb4a010da3ce639d66d5e904a11dbc02746d1ce25029e53290cabf28ab"
)
root
,
_
,
err
:=
trie
.
Commit
(
false
)
root
,
_
=
trie
.
Commit
(
false
)
if
err
!=
nil
{
t
.
Fatalf
(
"commit error: %v"
,
err
)
}
if
root
!=
exp
{
if
root
!=
exp
{
t
.
Errorf
(
"case 2: exp %x got %x"
,
exp
,
root
)
t
.
Errorf
(
"case 2: exp %x got %x"
,
exp
,
root
)
}
}
...
@@ -194,7 +191,7 @@ func TestGet(t *testing.T) {
...
@@ -194,7 +191,7 @@ func TestGet(t *testing.T) {
if
i
==
1
{
if
i
==
1
{
return
return
}
}
root
,
nodes
,
_
:=
trie
.
Commit
(
false
)
root
,
nodes
:=
trie
.
Commit
(
false
)
db
.
Update
(
NewWithNodeSet
(
nodes
))
db
.
Update
(
NewWithNodeSet
(
nodes
))
trie
,
_
=
New
(
TrieID
(
root
),
db
)
trie
,
_
=
New
(
TrieID
(
root
),
db
)
}
}
...
@@ -266,10 +263,7 @@ func TestReplication(t *testing.T) {
...
@@ -266,10 +263,7 @@ func TestReplication(t *testing.T) {
for
_
,
val
:=
range
vals
{
for
_
,
val
:=
range
vals
{
updateString
(
trie
,
val
.
k
,
val
.
v
)
updateString
(
trie
,
val
.
k
,
val
.
v
)
}
}
exp
,
nodes
,
err
:=
trie
.
Commit
(
false
)
exp
,
nodes
:=
trie
.
Commit
(
false
)
if
err
!=
nil
{
t
.
Fatalf
(
"commit error: %v"
,
err
)
}
triedb
.
Update
(
NewWithNodeSet
(
nodes
))
triedb
.
Update
(
NewWithNodeSet
(
nodes
))
// create a new trie on top of the database and check that lookups work.
// create a new trie on top of the database and check that lookups work.
...
@@ -282,10 +276,7 @@ func TestReplication(t *testing.T) {
...
@@ -282,10 +276,7 @@ func TestReplication(t *testing.T) {
t
.
Errorf
(
"trie2 doesn't have %q => %q"
,
kv
.
k
,
kv
.
v
)
t
.
Errorf
(
"trie2 doesn't have %q => %q"
,
kv
.
k
,
kv
.
v
)
}
}
}
}
hash
,
nodes
,
err
:=
trie2
.
Commit
(
false
)
hash
,
nodes
:=
trie2
.
Commit
(
false
)
if
err
!=
nil
{
t
.
Fatalf
(
"commit error: %v"
,
err
)
}
if
hash
!=
exp
{
if
hash
!=
exp
{
t
.
Errorf
(
"root failure. expected %x got %x"
,
exp
,
hash
)
t
.
Errorf
(
"root failure. expected %x got %x"
,
exp
,
hash
)
}
}
...
@@ -454,11 +445,7 @@ func runRandTest(rt randTest) bool {
...
@@ -454,11 +445,7 @@ func runRandTest(rt randTest) bool {
case
opHash
:
case
opHash
:
tr
.
Hash
()
tr
.
Hash
()
case
opCommit
:
case
opCommit
:
root
,
nodes
,
err
:=
tr
.
Commit
(
true
)
root
,
nodes
:=
tr
.
Commit
(
true
)
if
err
!=
nil
{
rt
[
i
]
.
err
=
err
return
false
}
// Validity the returned nodeset
// Validity the returned nodeset
if
nodes
!=
nil
{
if
nodes
!=
nil
{
for
path
,
node
:=
range
nodes
.
updates
.
nodes
{
for
path
,
node
:=
range
nodes
.
updates
.
nodes
{
...
@@ -710,7 +697,7 @@ func TestCommitAfterHash(t *testing.T) {
...
@@ -710,7 +697,7 @@ func TestCommitAfterHash(t *testing.T) {
if
exp
!=
root
{
if
exp
!=
root
{
t
.
Errorf
(
"got %x, exp %x"
,
root
,
exp
)
t
.
Errorf
(
"got %x, exp %x"
,
root
,
exp
)
}
}
root
,
_
,
_
=
trie
.
Commit
(
false
)
root
,
_
=
trie
.
Commit
(
false
)
if
exp
!=
root
{
if
exp
!=
root
{
t
.
Errorf
(
"got %x, exp %x"
,
root
,
exp
)
t
.
Errorf
(
"got %x, exp %x"
,
root
,
exp
)
}
}
...
@@ -813,7 +800,7 @@ func TestCommitSequence(t *testing.T) {
...
@@ -813,7 +800,7 @@ func TestCommitSequence(t *testing.T) {
trie
.
Update
(
crypto
.
Keccak256
(
addresses
[
i
][
:
]),
accounts
[
i
])
trie
.
Update
(
crypto
.
Keccak256
(
addresses
[
i
][
:
]),
accounts
[
i
])
}
}
// Flush trie -> database
// Flush trie -> database
root
,
nodes
,
_
:=
trie
.
Commit
(
false
)
root
,
nodes
:=
trie
.
Commit
(
false
)
db
.
Update
(
NewWithNodeSet
(
nodes
))
db
.
Update
(
NewWithNodeSet
(
nodes
))
// Flush memdb -> disk (sponge)
// Flush memdb -> disk (sponge)
db
.
Commit
(
root
,
false
)
db
.
Commit
(
root
,
false
)
...
@@ -854,7 +841,7 @@ func TestCommitSequenceRandomBlobs(t *testing.T) {
...
@@ -854,7 +841,7 @@ func TestCommitSequenceRandomBlobs(t *testing.T) {
trie
.
Update
(
key
,
val
)
trie
.
Update
(
key
,
val
)
}
}
// Flush trie -> database
// Flush trie -> database
root
,
nodes
,
_
:=
trie
.
Commit
(
false
)
root
,
nodes
:=
trie
.
Commit
(
false
)
db
.
Update
(
NewWithNodeSet
(
nodes
))
db
.
Update
(
NewWithNodeSet
(
nodes
))
// Flush memdb -> disk (sponge)
// Flush memdb -> disk (sponge)
db
.
Commit
(
root
,
false
)
db
.
Commit
(
root
,
false
)
...
@@ -893,7 +880,7 @@ func TestCommitSequenceStackTrie(t *testing.T) {
...
@@ -893,7 +880,7 @@ func TestCommitSequenceStackTrie(t *testing.T) {
stTrie
.
TryUpdate
(
key
,
val
)
stTrie
.
TryUpdate
(
key
,
val
)
}
}
// Flush trie -> database
// Flush trie -> database
root
,
nodes
,
_
:=
trie
.
Commit
(
false
)
root
,
nodes
:=
trie
.
Commit
(
false
)
// Flush memdb -> disk (sponge)
// Flush memdb -> disk (sponge)
db
.
Update
(
NewWithNodeSet
(
nodes
))
db
.
Update
(
NewWithNodeSet
(
nodes
))
db
.
Commit
(
root
,
false
)
db
.
Commit
(
root
,
false
)
...
@@ -941,7 +928,7 @@ func TestCommitSequenceSmallRoot(t *testing.T) {
...
@@ -941,7 +928,7 @@ func TestCommitSequenceSmallRoot(t *testing.T) {
trie
.
TryUpdate
(
key
,
[]
byte
{
0x1
})
trie
.
TryUpdate
(
key
,
[]
byte
{
0x1
})
stTrie
.
TryUpdate
(
key
,
[]
byte
{
0x1
})
stTrie
.
TryUpdate
(
key
,
[]
byte
{
0x1
})
// Flush trie -> database
// Flush trie -> database
root
,
nodes
,
_
:=
trie
.
Commit
(
false
)
root
,
nodes
:=
trie
.
Commit
(
false
)
// Flush memdb -> disk (sponge)
// Flush memdb -> disk (sponge)
db
.
Update
(
NewWithNodeSet
(
nodes
))
db
.
Update
(
NewWithNodeSet
(
nodes
))
db
.
Commit
(
root
,
false
)
db
.
Commit
(
root
,
false
)
...
@@ -1114,7 +1101,7 @@ func benchmarkDerefRootFixedSize(b *testing.B, addresses [][20]byte, accounts []
...
@@ -1114,7 +1101,7 @@ func benchmarkDerefRootFixedSize(b *testing.B, addresses [][20]byte, accounts []
trie
.
Update
(
crypto
.
Keccak256
(
addresses
[
i
][
:
]),
accounts
[
i
])
trie
.
Update
(
crypto
.
Keccak256
(
addresses
[
i
][
:
]),
accounts
[
i
])
}
}
h
:=
trie
.
Hash
()
h
:=
trie
.
Hash
()
_
,
nodes
,
_
:=
trie
.
Commit
(
false
)
_
,
nodes
:=
trie
.
Commit
(
false
)
triedb
.
Update
(
NewWithNodeSet
(
nodes
))
triedb
.
Update
(
NewWithNodeSet
(
nodes
))
b
.
StartTimer
()
b
.
StartTimer
()
triedb
.
Dereference
(
h
)
triedb
.
Dereference
(
h
)
...
...
trie/util_test.go
View file @
22c3ad1d
...
@@ -69,7 +69,7 @@ func TestTrieTracer(t *testing.T) {
...
@@ -69,7 +69,7 @@ func TestTrieTracer(t *testing.T) {
}
}
// Commit the changes and re-create with new root
// Commit the changes and re-create with new root
root
,
nodes
,
_
:=
trie
.
Commit
(
false
)
root
,
nodes
:=
trie
.
Commit
(
false
)
if
err
:=
db
.
Update
(
NewWithNodeSet
(
nodes
));
err
!=
nil
{
if
err
:=
db
.
Update
(
NewWithNodeSet
(
nodes
));
err
!=
nil
{
t
.
Fatal
(
err
)
t
.
Fatal
(
err
)
}
}
...
@@ -154,7 +154,7 @@ func TestTrieTracePrevValue(t *testing.T) {
...
@@ -154,7 +154,7 @@ func TestTrieTracePrevValue(t *testing.T) {
}
}
// Commit the changes and re-create with new root
// Commit the changes and re-create with new root
root
,
nodes
,
_
:=
trie
.
Commit
(
false
)
root
,
nodes
:=
trie
.
Commit
(
false
)
if
err
:=
db
.
Update
(
NewWithNodeSet
(
nodes
));
err
!=
nil
{
if
err
:=
db
.
Update
(
NewWithNodeSet
(
nodes
));
err
!=
nil
{
t
.
Fatal
(
err
)
t
.
Fatal
(
err
)
}
}
...
@@ -261,10 +261,7 @@ func TestDeleteAll(t *testing.T) {
...
@@ -261,10 +261,7 @@ func TestDeleteAll(t *testing.T) {
for
_
,
val
:=
range
vals
{
for
_
,
val
:=
range
vals
{
trie
.
Update
([]
byte
(
val
.
k
),
[]
byte
(
val
.
v
))
trie
.
Update
([]
byte
(
val
.
k
),
[]
byte
(
val
.
v
))
}
}
root
,
set
,
err
:=
trie
.
Commit
(
false
)
root
,
set
:=
trie
.
Commit
(
false
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
if
err
:=
db
.
Update
(
NewWithNodeSet
(
set
));
err
!=
nil
{
if
err
:=
db
.
Update
(
NewWithNodeSet
(
set
));
err
!=
nil
{
t
.
Fatal
(
err
)
t
.
Fatal
(
err
)
}
}
...
@@ -288,10 +285,7 @@ func TestDeleteAll(t *testing.T) {
...
@@ -288,10 +285,7 @@ func TestDeleteAll(t *testing.T) {
for
_
,
val
:=
range
vals
{
for
_
,
val
:=
range
vals
{
trie
.
Delete
([]
byte
(
val
.
k
))
trie
.
Delete
([]
byte
(
val
.
k
))
}
}
root
,
set
,
err
=
trie
.
Commit
(
false
)
root
,
set
=
trie
.
Commit
(
false
)
if
err
!=
nil
{
t
.
Fatalf
(
"Failed to delete trie %v"
,
err
)
}
if
root
!=
emptyRoot
{
if
root
!=
emptyRoot
{
t
.
Fatalf
(
"Invalid trie root %v"
,
root
)
t
.
Fatalf
(
"Invalid trie root %v"
,
root
)
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment