From 4250c2cb1a11695202edb3d985fafef16e5c95ab Mon Sep 17 00:00:00 2001 From: devopsbo3 <69951731+devopsbo3@users.noreply.github.com> Date: Fri, 10 Nov 2023 12:27:53 -0600 Subject: [PATCH] Revert "trie: use explicit errors in stacktrie (instead of panic) (#28361)" This reverts commit 5cbd9502cad3cea488e49a00cdb331bba44e9d4f. --- core/state/snapshot/generate.go | 4 +--- trie/stacktrie.go | 11 ++++------- trie/stacktrie_test.go | 22 ---------------------- 3 files changed, 5 insertions(+), 32 deletions(-) diff --git a/core/state/snapshot/generate.go b/core/state/snapshot/generate.go index adeaa1daa0..204584c956 100644 --- a/core/state/snapshot/generate.go +++ b/core/state/snapshot/generate.go @@ -230,9 +230,7 @@ func (dl *diskLayer) proveRange(ctx *generatorContext, trieId *trie.ID, prefix [ if origin == nil && !diskMore { stackTr := trie.NewStackTrie(nil) for i, key := range keys { - if err := stackTr.Update(key, vals[i]); err != nil { - return nil, err - } + stackTr.Update(key, vals[i]) } if gotRoot := stackTr.Hash(); gotRoot != root { return &proofResult{ diff --git a/trie/stacktrie.go b/trie/stacktrie.go index f2f5355c49..423afdec88 100644 --- a/trie/stacktrie.go +++ b/trie/stacktrie.go @@ -18,7 +18,6 @@ package trie import ( "bytes" - "errors" "sync" "github.com/ethereum/go-ethereum/common" @@ -93,14 +92,12 @@ func NewStackTrie(options *StackTrieOptions) *StackTrie { // Update inserts a (key, value) pair into the stack trie. func (t *StackTrie) Update(key, value []byte) error { - if len(value) == 0 { - return errors.New("trying to insert empty (deletion)") - } k := keybytesToHex(key) - k = k[:len(k)-1] // chop the termination flag - if bytes.Compare(t.last, k) >= 0 { - return errors.New("non-ascending key order") + if len(value) == 0 { + panic("deletion not supported") } + k = k[:len(k)-1] // chop the termination flag + // track the first and last inserted entries. if t.first == nil { t.first = append([]byte{}, k...) diff --git a/trie/stacktrie_test.go b/trie/stacktrie_test.go index 909a77062a..629586e2b1 100644 --- a/trie/stacktrie_test.go +++ b/trie/stacktrie_test.go @@ -26,7 +26,6 @@ import ( "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/trie/testutil" - "github.com/stretchr/testify/assert" "golang.org/x/exp/slices" ) @@ -464,24 +463,3 @@ func TestPartialStackTrie(t *testing.T) { } } } - -func TestStackTrieErrors(t *testing.T) { - s := NewStackTrie(nil) - // Deletion - if err := s.Update(nil, nil); err == nil { - t.Fatal("expected error") - } - if err := s.Update(nil, []byte{}); err == nil { - t.Fatal("expected error") - } - if err := s.Update([]byte{0xa}, []byte{}); err == nil { - t.Fatal("expected error") - } - // Non-ascending keys (going backwards or repeating) - assert.Nil(t, s.Update([]byte{0xaa}, []byte{0xa})) - assert.NotNil(t, s.Update([]byte{0xaa}, []byte{0xa}), "repeat insert same key") - assert.NotNil(t, s.Update([]byte{0xaa}, []byte{0xb}), "repeat insert same key") - assert.Nil(t, s.Update([]byte{0xab}, []byte{0xa})) - assert.NotNil(t, s.Update([]byte{0x10}, []byte{0xb}), "out of order insert") - assert.NotNil(t, s.Update([]byte{0xaa}, []byte{0xb}), "repeat insert same key") -}