Skip to content

Commit 1812181

Browse files
authored
Merge branch 'develop' into master
2 parents b86459a + 5cd647b commit 1812181

File tree

108 files changed

+2626
-914
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

108 files changed

+2626
-914
lines changed

cmd/evm/blockrunner.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"fmt"
2323
"os"
2424

25+
"github.com/ethereum/go-ethereum/core/rawdb"
2526
"github.com/ethereum/go-ethereum/core/vm"
2627
"github.com/ethereum/go-ethereum/eth/tracers/logger"
2728
"github.com/ethereum/go-ethereum/log"
@@ -64,7 +65,7 @@ func blockTestCmd(ctx *cli.Context) error {
6465
return err
6566
}
6667
for i, test := range tests {
67-
if err := test.Run(false, tracer); err != nil {
68+
if err := test.Run(false, rawdb.HashScheme, tracer); err != nil {
6869
return fmt.Errorf("test %v: %w", i, err)
6970
}
7071
}

cmd/evm/runner.go

+15-3
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import (
4242
"github.com/ethereum/go-ethereum/log"
4343
"github.com/ethereum/go-ethereum/params"
4444
"github.com/ethereum/go-ethereum/trie"
45+
"github.com/ethereum/go-ethereum/trie/triedb/hashdb"
4546
"github.com/urfave/cli/v2"
4647
)
4748

@@ -142,12 +143,23 @@ func runCmd(ctx *cli.Context) error {
142143
gen := readGenesis(ctx.String(GenesisFlag.Name))
143144
genesisConfig = gen
144145
db := rawdb.NewMemoryDatabase()
145-
genesis := gen.MustCommit(db)
146-
sdb := state.NewDatabaseWithConfig(db, &trie.Config{Preimages: preimages})
146+
triedb := trie.NewDatabase(db, &trie.Config{
147+
Preimages: preimages,
148+
HashDB: hashdb.Defaults,
149+
})
150+
defer triedb.Close()
151+
genesis := gen.MustCommit(db, triedb)
152+
sdb := state.NewDatabaseWithNodeDB(db, triedb)
147153
statedb, _ = state.New(genesis.Root(), sdb, nil)
148154
chainConfig = gen.Config
149155
} else {
150-
sdb := state.NewDatabaseWithConfig(rawdb.NewMemoryDatabase(), &trie.Config{Preimages: preimages})
156+
db := rawdb.NewMemoryDatabase()
157+
triedb := trie.NewDatabase(db, &trie.Config{
158+
Preimages: preimages,
159+
HashDB: hashdb.Defaults,
160+
})
161+
defer triedb.Close()
162+
sdb := state.NewDatabaseWithNodeDB(db, triedb)
151163
statedb, _ = state.New(types.EmptyRootHash, sdb, nil)
152164
genesisConfig = new(core.Genesis)
153165
}

cmd/evm/staterunner.go

+17-18
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ import (
2323
"os"
2424

2525
"github.com/ethereum/go-ethereum/common"
26+
"github.com/ethereum/go-ethereum/core/rawdb"
2627
"github.com/ethereum/go-ethereum/core/state"
28+
"github.com/ethereum/go-ethereum/core/state/snapshot"
2729
"github.com/ethereum/go-ethereum/core/vm"
2830
"github.com/ethereum/go-ethereum/eth/tracers/logger"
2931
"github.com/ethereum/go-ethereum/log"
@@ -104,25 +106,22 @@ func runStateTest(fname string, cfg vm.Config, jsonOut, dump bool) error {
104106
for _, st := range test.Subtests() {
105107
// Run the test and aggregate the result
106108
result := &StatetestResult{Name: key, Fork: st.Fork, Pass: true}
107-
_, s, err := test.Run(st, cfg, false)
108-
// print state root for evmlab tracing
109-
if s != nil {
110-
root := s.IntermediateRoot(false)
111-
result.Root = &root
112-
if jsonOut {
113-
fmt.Fprintf(os.Stderr, "{\"stateRoot\": \"%#x\"}\n", root)
109+
test.Run(st, cfg, false, rawdb.HashScheme, func(err error, snaps *snapshot.Tree, state *state.StateDB) {
110+
if err != nil {
111+
// Test failed, mark as so and dump any state to aid debugging
112+
result.Pass, result.Error = false, err.Error()
113+
if dump {
114+
dump := state.RawDump(nil)
115+
result.State = &dump
116+
}
117+
} else {
118+
root := state.IntermediateRoot(false)
119+
result.Root = &root
120+
if jsonOut {
121+
fmt.Fprintf(os.Stderr, "{\"stateRoot\": \"%#x\"}\n", root)
122+
}
114123
}
115-
}
116-
if err != nil {
117-
// Test failed, mark as so and dump any state to aid debugging
118-
result.Pass, result.Error = false, err.Error()
119-
if dump && s != nil {
120-
s, _ = state.New(*result.Root, s.Database(), nil)
121-
dump := s.RawDump(nil)
122-
result.State = &dump
123-
}
124-
}
125-
124+
})
126125
results = append(results, *result)
127126
}
128127
}

cmd/geth/chaincmd.go

+19-11
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ import (
4444
"github.com/ethereum/go-ethereum/metrics"
4545
"github.com/ethereum/go-ethereum/node"
4646
"github.com/ethereum/go-ethereum/p2p/enode"
47-
"github.com/ethereum/go-ethereum/trie"
4847
"github.com/urfave/cli/v2"
4948
)
5049

@@ -54,7 +53,10 @@ var (
5453
Name: "init",
5554
Usage: "Bootstrap and initialize a new genesis block",
5655
ArgsUsage: "<genesisPath>",
57-
Flags: flags.Merge([]cli.Flag{utils.CachePreimagesFlag}, utils.DatabasePathFlags),
56+
Flags: flags.Merge([]cli.Flag{
57+
utils.CachePreimagesFlag,
58+
utils.StateSchemeFlag,
59+
}, utils.DatabasePathFlags),
5860
Description: `
5961
The init command initializes a new genesis block and definition for the network.
6062
This is a destructive action and changes the network in which you will be
@@ -116,6 +118,9 @@ if one is set. Otherwise it prints the genesis from the datadir.`,
116118
utils.MetricsInfluxDBBucketFlag,
117119
utils.MetricsInfluxDBOrganizationFlag,
118120
utils.TxLookupLimitFlag,
121+
utils.TransactionHistoryFlag,
122+
utils.StateSchemeFlag,
123+
utils.StateHistoryFlag,
119124
}, utils.DatabasePathFlags),
120125
Description: `
121126
The import command imports blocks from an RLP-encoded form. The form can be one file
@@ -132,6 +137,7 @@ processing will proceed even if an individual RLP-file import failure occurs.`,
132137
Flags: flags.Merge([]cli.Flag{
133138
utils.CacheFlag,
134139
utils.SyncModeFlag,
140+
utils.StateSchemeFlag,
135141
}, utils.DatabasePathFlags),
136142
Description: `
137143
Requires a first argument of the file to write to.
@@ -181,6 +187,7 @@ It's deprecated, please use "geth db export" instead.
181187
utils.IncludeIncompletesFlag,
182188
utils.StartKeyFlag,
183189
utils.DumpLimitFlag,
190+
utils.StateSchemeFlag,
184191
}, utils.DatabasePathFlags),
185192
Description: `
186193
This command dumps out the state for a given block (or latest, if none provided).
@@ -217,14 +224,15 @@ func initGenesis(ctx *cli.Context) error {
217224
if err != nil {
218225
utils.Fatalf("Failed to open database: %v", err)
219226
}
220-
triedb := trie.NewDatabaseWithConfig(chaindb, &trie.Config{
221-
Preimages: ctx.Bool(utils.CachePreimagesFlag.Name),
222-
})
227+
defer chaindb.Close()
228+
229+
triedb := utils.MakeTrieDatabase(ctx, chaindb, ctx.Bool(utils.CachePreimagesFlag.Name), false)
230+
defer triedb.Close()
231+
223232
_, hash, err := core.SetupGenesisBlock(chaindb, triedb, genesis)
224233
if err != nil {
225234
utils.Fatalf("Failed to write genesis block: %v", err)
226235
}
227-
chaindb.Close()
228236
log.Info("Successfully wrote genesis state", "database", name, "hash", hash)
229237
}
230238
return nil
@@ -423,7 +431,7 @@ func dumpGenesis(ctx *cli.Context) error {
423431
if ctx.IsSet(utils.DataDirFlag.Name) {
424432
utils.Fatalf("no existing datadir at %s", stack.Config().DataDir)
425433
}
426-
utils.Fatalf("no network preset provided. no exisiting genesis in the default datadir")
434+
utils.Fatalf("no network preset provided, no existing genesis in the default datadir")
427435
return nil
428436
}
429437

@@ -647,10 +655,10 @@ func dump(ctx *cli.Context) error {
647655
if err != nil {
648656
return err
649657
}
650-
config := &trie.Config{
651-
Preimages: true, // always enable preimage lookup
652-
}
653-
state, err := state.New(root, state.NewDatabaseWithConfig(db, config), nil)
658+
triedb := utils.MakeTrieDatabase(ctx, db, true, false) // always enable preimage lookup
659+
defer triedb.Close()
660+
661+
state, err := state.New(root, state.NewDatabaseWithNodeDB(db, triedb), nil)
654662
if err != nil {
655663
return err
656664
}

0 commit comments

Comments
 (0)