From cd856cb2133d390758bb24b88fa3b538bb7bc306 Mon Sep 17 00:00:00 2001 From: obscuren Date: Fri, 6 Mar 2015 18:26:16 +0100 Subject: Separated block db from state db. Partial fix for #416 --- cmd/ethereum/js.go | 2 +- cmd/ethereum/main.go | 6 +++--- cmd/mist/bindings.go | 2 +- cmd/utils/cmd.go | 2 +- cmd/utils/flags.go | 11 ++++++++--- 5 files changed, 14 insertions(+), 9 deletions(-) (limited to 'cmd') diff --git a/cmd/ethereum/js.go b/cmd/ethereum/js.go index 9125ccbba..d5cf62146 100644 --- a/cmd/ethereum/js.go +++ b/cmd/ethereum/js.go @@ -229,7 +229,7 @@ func (self *repl) dump(call otto.FunctionCall) otto.Value { block = self.ethereum.ChainManager().CurrentBlock() } - statedb := state.New(block.Root(), self.ethereum.Db()) + statedb := state.New(block.Root(), self.ethereum.StateDb()) v, _ := self.re.Vm.ToValue(statedb.RawDump()) diff --git a/cmd/ethereum/main.go b/cmd/ethereum/main.go index d9fbabdb7..d29ae3f78 100644 --- a/cmd/ethereum/main.go +++ b/cmd/ethereum/main.go @@ -171,7 +171,7 @@ func importchain(ctx *cli.Context) { if len(ctx.Args()) != 1 { utils.Fatalf("This command requires an argument.") } - chain, _ := utils.GetChain(ctx) + chain, _, _ := utils.GetChain(ctx) start := time.Now() err := utils.ImportChain(chain, ctx.Args().First()) if err != nil { @@ -182,7 +182,7 @@ func importchain(ctx *cli.Context) { } func dump(ctx *cli.Context) { - chain, db := utils.GetChain(ctx) + chain, _, stateDb := utils.GetChain(ctx) for _, arg := range ctx.Args() { var block *types.Block if hashish(arg) { @@ -195,7 +195,7 @@ func dump(ctx *cli.Context) { fmt.Println("{}") utils.Fatalf("block not found") } else { - statedb := state.New(block.Root(), db) + statedb := state.New(block.Root(), stateDb) fmt.Printf("%s\n", statedb.Dump()) // fmt.Println(block) } diff --git a/cmd/mist/bindings.go b/cmd/mist/bindings.go index f21aa3135..c63f11591 100644 --- a/cmd/mist/bindings.go +++ b/cmd/mist/bindings.go @@ -113,7 +113,7 @@ func (self *Gui) DumpState(hash, path string) { return } - stateDump = state.New(block.Root(), self.eth.Db()).Dump() + stateDump = state.New(block.Root(), self.eth.StateDb()).Dump() } file, err := os.OpenFile(path[7:], os.O_CREATE|os.O_RDWR, os.ModePerm) diff --git a/cmd/utils/cmd.go b/cmd/utils/cmd.go index 3c3d3955d..99e60ff9e 100644 --- a/cmd/utils/cmd.go +++ b/cmd/utils/cmd.go @@ -197,7 +197,7 @@ func BlockDo(ethereum *eth.Ethereum, hash []byte) error { parent := ethereum.ChainManager().GetBlock(block.ParentHash()) - statedb := state.New(parent.Root(), ethereum.Db()) + statedb := state.New(parent.Root(), ethereum.StateDb()) _, err := ethereum.BlockProcessor().TransitionState(statedb, parent, block, true) if err != nil { return err diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index d363ef280..88ff3558d 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -175,11 +175,16 @@ func GetEthereum(clientID, version string, ctx *cli.Context) *eth.Ethereum { return ethereum } -func GetChain(ctx *cli.Context) (*core.ChainManager, ethutil.Database) { +func GetChain(ctx *cli.Context) (*core.ChainManager, ethutil.Database, ethutil.Database) { dataDir := ctx.GlobalString(DataDirFlag.Name) - db, err := ethdb.NewLDBDatabase(path.Join(dataDir, "blockchain")) + blockDb, err := ethdb.NewLDBDatabase(path.Join(dataDir, "blockchain")) if err != nil { Fatalf("Could not open database: %v", err) } - return core.NewChainManager(db, new(event.TypeMux)), db + + stateDb, err := ethdb.NewLDBDatabase(path.Join(dataDir, "state")) + if err != nil { + Fatalf("Could not open database: %v", err) + } + return core.NewChainManager(blockDb, stateDb, new(event.TypeMux)), blockDb, stateDb } -- cgit