Skip to content

Commit 20731b8

Browse files
committed
core/overlay: add unit test
1 parent c25d492 commit 20731b8

File tree

2 files changed

+50
-18
lines changed

2 files changed

+50
-18
lines changed

core/overlay/state_transition.go

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ import (
2727
// tracking which parts of the legacy MPT-based state have already been
2828
// migrated to the Verkle-based state.
2929
type TransitionState struct {
30-
// CurrentAccountHash is the address of the next account to be migrated
30+
// CurrentAccountHash is the hash of the next account to be migrated
3131
// from the MPT state to the Verkle state. Null means nothing has been
3232
// migrated yet.
33-
CurrentAccountAddress *common.Address
33+
CurrentAccountHash common.Hash
3434

3535
// CurrentSlotHash is the hash of the next storage slot (within the
3636
// current account) to be migrated from the MPT state to the Verkle state.
@@ -74,22 +74,6 @@ func (ts *TransitionState) Transitioned() bool {
7474
return ts != nil && ts.Ended
7575
}
7676

77-
// Copy returns a deep copy of the TransitionState object.
78-
func (ts *TransitionState) Copy() *TransitionState {
79-
ret := &TransitionState{
80-
Started: ts.Started,
81-
Ended: ts.Ended,
82-
CurrentSlotHash: ts.CurrentSlotHash,
83-
CurrentPreimageOffset: ts.CurrentPreimageOffset,
84-
StorageProcessed: ts.StorageProcessed,
85-
}
86-
if ts.CurrentAccountAddress != nil {
87-
ret.CurrentAccountAddress = &common.Address{}
88-
copy(ret.CurrentAccountAddress[:], ts.CurrentAccountAddress[:])
89-
}
90-
return ret
91-
}
92-
9377
// LoadTransitionState retrieves the Verkle transition state associated with
9478
// the given state root hash from the database.
9579
func LoadTransitionState(db ethdb.KeyValueReader, root common.Hash) (*TransitionState, error) {

core/overlay/state_transition_test.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
// Copyright 2025 The go-ethereum Authors
2+
// This file is part of the go-ethereum library.
3+
//
4+
// The go-ethereum library is free software: you can redistribute it and/or modify
5+
// it under the terms of the GNU Lesser General Public License as published by
6+
// the Free Software Foundation, either version 3 of the License, or
7+
// (at your option) any later version.
8+
//
9+
// The go-ethereum library is distributed in the hope that it will be useful,
10+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
// GNU Lesser General Public License for more details.
13+
//
14+
// You should have received a copy of the GNU Lesser General Public License
15+
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
16+
17+
package overlay
18+
19+
import (
20+
"reflect"
21+
"testing"
22+
23+
"github.com/davecgh/go-spew/spew"
24+
"github.com/ethereum/go-ethereum/common"
25+
"github.com/ethereum/go-ethereum/core/rawdb"
26+
"github.com/ethereum/go-ethereum/internal/testrand"
27+
)
28+
29+
func TestLoadStoreTransitionState(t *testing.T) {
30+
has := &TransitionState{
31+
CurrentAccountHash: testrand.Hash(),
32+
CurrentSlotHash: testrand.Hash(),
33+
BaseRoot: testrand.Hash(),
34+
}
35+
db := rawdb.NewMemoryDatabase()
36+
if err := StoreTransitionState(db, common.Hash{0x1}, has); err != nil {
37+
t.Fatal(err)
38+
}
39+
got, err := LoadTransitionState(db, common.Hash{0x1})
40+
if err != nil {
41+
t.Fatal(err)
42+
}
43+
if !reflect.DeepEqual(got, has) {
44+
spew.Dump(got)
45+
spew.Dump(has)
46+
t.Fatalf("Unexpected transition state")
47+
}
48+
}

0 commit comments

Comments
 (0)