mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-22 12:46:44 +00:00
review feedback + fix CI
This commit is contained in:
parent
b657f736b5
commit
8e08bf3902
6 changed files with 13 additions and 100 deletions
|
|
@ -44,9 +44,9 @@ import (
|
|||
)
|
||||
|
||||
type Prestate struct {
|
||||
Env stEnv `json:"env"`
|
||||
Pre types.GenesisAlloc `json:"pre"`
|
||||
BT map[common.Hash]hexutil.Bytes `json:"vkt,omitempty"`
|
||||
Env stEnv `json:"env"`
|
||||
Pre types.GenesisAlloc `json:"pre"`
|
||||
TreeLeaves map[common.Hash]hexutil.Bytes `json:"vkt,omitempty"`
|
||||
}
|
||||
|
||||
//go:generate go run github.com/fjl/gencodec -type ExecutionResult -field-override executionResultMarshaling -out gen_execresult.go
|
||||
|
|
@ -398,7 +398,7 @@ func MakePreState(db ethdb.Database, accounts types.GenesisAlloc, isBintrie bool
|
|||
}
|
||||
}
|
||||
// Commit and re-open to start with a clean state.
|
||||
mptRoot, err := statedb.Commit(0, false, false)
|
||||
root, err = statedb.Commit(0, false, false)
|
||||
if err != nil {
|
||||
panic(fmt.Errorf("failed to commit initial state: %v", err))
|
||||
}
|
||||
|
|
@ -407,7 +407,7 @@ func MakePreState(db ethdb.Database, accounts types.GenesisAlloc, isBintrie bool
|
|||
return statedb
|
||||
}
|
||||
// For MPT mode, reopen the state with the committed root
|
||||
statedb, err = state.New(mptRoot, sdb)
|
||||
statedb, err = state.New(root, sdb)
|
||||
if err != nil {
|
||||
panic(fmt.Errorf("failed to reopen state after commit: %v", err))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ func Transition(ctx *cli.Context) error {
|
|||
return err
|
||||
}
|
||||
}
|
||||
prestate.BT = inputData.BT
|
||||
prestate.TreeLeaves = inputData.BT
|
||||
|
||||
// Set the block environment
|
||||
if envStr != stdinSelector {
|
||||
|
|
|
|||
|
|
@ -190,7 +190,7 @@ func flushAlloc(ga *types.GenesisAlloc, triedb *triedb.Database) (common.Hash, e
|
|||
return common.Hash{}, err
|
||||
}
|
||||
// Commit newly generated states into disk if it's not empty.
|
||||
if root != types.EmptyRootHash && root != types.EmptyVerkleHash {
|
||||
if root != emptyRoot {
|
||||
if err := triedb.Commit(root, true); err != nil {
|
||||
return common.Hash{}, err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,83 +0,0 @@
|
|||
// Copyright 2025 The go-ethereum Authors
|
||||
// This file is part of the go-ethereum library.
|
||||
//
|
||||
// The go-ethereum library is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Lesser General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// The go-ethereum library is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Lesser General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Lesser General Public License
|
||||
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
package bintrie
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/core/rawdb"
|
||||
"github.com/ethereum/go-ethereum/core/types"
|
||||
"github.com/ethereum/go-ethereum/ethdb"
|
||||
"github.com/ethereum/go-ethereum/triedb"
|
||||
"github.com/ethereum/go-ethereum/triedb/hashdb"
|
||||
"github.com/ethereum/go-ethereum/triedb/pathdb"
|
||||
"github.com/holiman/uint256"
|
||||
)
|
||||
|
||||
func newTestDatabase(diskdb ethdb.Database, scheme string) *triedb.Database {
|
||||
config := &triedb.Config{Preimages: true}
|
||||
if scheme == rawdb.HashScheme {
|
||||
config.HashDB = &hashdb.Config{CleanCacheSize: 0}
|
||||
} else {
|
||||
config.PathDB = &pathdb.Config{TrieCleanSize: 0, StateCleanSize: 0}
|
||||
}
|
||||
return triedb.NewDatabase(diskdb, config)
|
||||
}
|
||||
|
||||
func TestBinaryIterator(t *testing.T) {
|
||||
trie, err := NewBinaryTrie(types.EmptyVerkleHash, newTestDatabase(rawdb.NewMemoryDatabase(), rawdb.PathScheme))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
account0 := &types.StateAccount{
|
||||
Nonce: 1,
|
||||
Balance: uint256.NewInt(2),
|
||||
Root: types.EmptyRootHash,
|
||||
CodeHash: nil,
|
||||
}
|
||||
// NOTE: the code size isn't written to the trie via TryUpdateAccount
|
||||
// so it will be missing from the test nodes.
|
||||
trie.UpdateAccount(common.Address{}, account0, 0)
|
||||
account1 := &types.StateAccount{
|
||||
Nonce: 1337,
|
||||
Balance: uint256.NewInt(2000),
|
||||
Root: types.EmptyRootHash,
|
||||
CodeHash: nil,
|
||||
}
|
||||
// This address is meant to hash to a value that has the same first byte as 0xbf
|
||||
var clash = common.HexToAddress("69fd8034cdb20934dedffa7dccb4fb3b8062a8be")
|
||||
trie.UpdateAccount(clash, account1, 0)
|
||||
|
||||
// Manually go over every node to check that we get all
|
||||
// the correct nodes.
|
||||
it, err := trie.NodeIterator(nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var leafcount int
|
||||
for it.Next(true) {
|
||||
t.Logf("Node: %x", it.Path())
|
||||
if it.Leaf() {
|
||||
leafcount++
|
||||
t.Logf("\tLeaf: %x", it.LeafKey())
|
||||
}
|
||||
}
|
||||
if leafcount != 2 {
|
||||
t.Fatalf("invalid leaf count: %d != 6", leafcount)
|
||||
}
|
||||
}
|
||||
|
|
@ -251,27 +251,23 @@ func TestStemNodeGetValuesAtStem(t *testing.T) {
|
|||
}
|
||||
|
||||
// Check that all values match
|
||||
for i := 0; i < 256; i++ {
|
||||
for i := range 256 {
|
||||
if !bytes.Equal(retrievedValues[i], values[i]) {
|
||||
t.Errorf("Value mismatch at index %d", i)
|
||||
}
|
||||
}
|
||||
|
||||
// GetValuesAtStem with different stem also returns the same values
|
||||
// (implementation ignores the stem parameter)
|
||||
// GetValuesAtStem with different stem should return nil
|
||||
differentStem := make([]byte, 31)
|
||||
differentStem[0] = 0xFF
|
||||
|
||||
retrievedValues2, err := node.GetValuesAtStem(differentStem, nil)
|
||||
shouldBeNil, err := node.GetValuesAtStem(differentStem, nil)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to get values with different stem: %v", err)
|
||||
}
|
||||
|
||||
// Should still return the same values (stem is ignored)
|
||||
for i := 0; i < 256; i++ {
|
||||
if !bytes.Equal(retrievedValues2[i], values[i]) {
|
||||
t.Errorf("Value mismatch at index %d with different stem", i)
|
||||
}
|
||||
if shouldBeNil != nil {
|
||||
t.Error("Expected nil for different stem, got non-nil")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ func NewDatabase(diskdb ethdb.Database, config *Config) *Database {
|
|||
if config.HashDB != nil && config.PathDB != nil {
|
||||
log.Crit("Both 'hash' and 'path' mode are configured")
|
||||
}
|
||||
if config.PathDB != nil || config.IsVerkle {
|
||||
if config.PathDB != nil {
|
||||
db.backend = pathdb.New(diskdb, config.PathDB, config.IsVerkle)
|
||||
} else {
|
||||
db.backend = hashdb.New(diskdb, config.HashDB)
|
||||
|
|
|
|||
Loading…
Reference in a new issue