From 5e02d05155b6575d1acd9ecc0ed0df4f8acfe89a Mon Sep 17 00:00:00 2001 From: Guillaume Ballet <3272758+gballet@users.noreply.github.com> Date: Tue, 7 May 2024 13:29:05 +0200 Subject: [PATCH] Fix iterator from t8n (#434) * various verkle iterator fixes * remove unused nodeToDBKey --- trie/verkle.go | 5 ----- trie/verkle_iterator.go | 10 +++++----- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/trie/verkle.go b/trie/verkle.go index ee953c2323..f9a5f912f2 100644 --- a/trie/verkle.go +++ b/trie/verkle.go @@ -231,11 +231,6 @@ func (trie *VerkleTrie) Hash() common.Hash { return trie.root.Commit().Bytes() } -func nodeToDBKey(n verkle.VerkleNode) []byte { - ret := n.Commitment().Bytes() - return ret[:] -} - // Commit writes all nodes to the trie's memory database, tracking the internal // and external (for account tries) references. func (trie *VerkleTrie) Commit(_ bool) (common.Hash, *trienode.NodeSet, error) { diff --git a/trie/verkle_iterator.go b/trie/verkle_iterator.go index 5f5fc725ed..16de8746b6 100644 --- a/trie/verkle_iterator.go +++ b/trie/verkle_iterator.go @@ -24,7 +24,7 @@ import ( type verkleNodeIteratorState struct { Node verkle.VerkleNode - Index int + Index int // points to _next_ value } type verkleNodeIterator struct { @@ -97,9 +97,9 @@ func (it *verkleNodeIterator) Next(descend bool) bool { it.current = it.stack[len(it.stack)-1].Node it.stack[len(it.stack)-1].Index++ return it.Next(descend) - case *verkle.HashedNode: + case verkle.HashedNode: // resolve the node - data, err := it.trie.db.diskdb.Get(nodeToDBKey(node)) + data, err := it.trie.FlatdbNodeResolver(it.Path()) if err != nil { panic(err) } @@ -112,7 +112,7 @@ func (it *verkleNodeIterator) Next(descend bool) bool { it.stack[len(it.stack)-1].Node = it.current parent := &it.stack[len(it.stack)-2] parent.Node.(*verkle.InternalNode).SetChild(parent.Index, it.current) - return true + return it.Next(true) default: panic("invalid node type") } @@ -147,7 +147,7 @@ func (it *verkleNodeIterator) Path() []byte { var path []byte for i, state := range it.stack { // skip the last byte - if i <= len(it.stack)-1 { + if i >= len(it.stack)-1 { break } path = append(path, byte(state.Index))