aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/utils/flags.go
diff options
context:
space:
mode:
authorBas van Kervel <basvankervel@ziggo.nl>2015-04-13 16:13:52 +0800
committerBas van Kervel <basvankervel@ziggo.nl>2015-04-13 16:13:52 +0800
commit49a513bdebd7c4402b3a7f2f169a31c34f2ca9df (patch)
tree2cb976e970a8aa757ce31ee867970cf3d53ad15c /cmd/utils/flags.go
parent4de1e1609abb2e5be7e5cc5b8f206d305af8ce27 (diff)
downloadgo-tangerine-49a513bdebd7c4402b3a7f2f169a31c34f2ca9df.tar.gz
go-tangerine-49a513bdebd7c4402b3a7f2f169a31c34f2ca9df.tar.zst
go-tangerine-49a513bdebd7c4402b3a7f2f169a31c34f2ca9df.zip
Added blockchain DB versioning support, closes #650
Diffstat (limited to 'cmd/utils/flags.go')
-rw-r--r--cmd/utils/flags.go60
1 files changed, 41 insertions, 19 deletions
diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go
index 3ad06653e..8141fae82 100644
--- a/cmd/utils/flags.go
+++ b/cmd/utils/flags.go
@@ -7,6 +7,7 @@ import (
"runtime"
"github.com/codegangsta/cli"
+ "github.com/ethereum/ethash"
"github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core"
@@ -83,6 +84,11 @@ var (
Usage: "Network Id",
Value: eth.NetworkId,
}
+ BlockchainVersionFlag = cli.IntFlag{
+ Name: "blockchainversion",
+ Usage: "Blockchain version",
+ Value: core.BlockChainVersion,
+ }
// miner settings
MinerThreadsFlag = cli.IntFlag{
@@ -237,29 +243,32 @@ func MakeEthConfig(clientID, version string, ctx *cli.Context) *eth.Config {
glog.SetLogDir(ctx.GlobalString(LogFileFlag.Name))
return &eth.Config{
- Name: common.MakeName(clientID, version),
- DataDir: ctx.GlobalString(DataDirFlag.Name),
- ProtocolVersion: ctx.GlobalInt(ProtocolVersionFlag.Name),
- NetworkId: ctx.GlobalInt(NetworkIdFlag.Name),
- LogFile: ctx.GlobalString(LogFileFlag.Name),
- LogLevel: ctx.GlobalInt(LogLevelFlag.Name),
- LogJSON: ctx.GlobalString(LogJSONFlag.Name),
- Etherbase: ctx.GlobalString(EtherbaseFlag.Name),
- MinerThreads: ctx.GlobalInt(MinerThreadsFlag.Name),
- AccountManager: GetAccountManager(ctx),
- VmDebug: ctx.GlobalBool(VMDebugFlag.Name),
- MaxPeers: ctx.GlobalInt(MaxPeersFlag.Name),
- Port: ctx.GlobalString(ListenPortFlag.Name),
- NAT: GetNAT(ctx),
- NodeKey: GetNodeKey(ctx),
- Shh: true,
- Dial: true,
- BootNodes: ctx.GlobalString(BootnodesFlag.Name),
+ Name: common.MakeName(clientID, version),
+ DataDir: ctx.GlobalString(DataDirFlag.Name),
+ ProtocolVersion: ctx.GlobalInt(ProtocolVersionFlag.Name),
+ BlockChainVersion: ctx.GlobalInt(BlockchainVersionFlag.Name),
+ SkipBcVersionCheck: false,
+ NetworkId: ctx.GlobalInt(NetworkIdFlag.Name),
+ LogFile: ctx.GlobalString(LogFileFlag.Name),
+ LogLevel: ctx.GlobalInt(LogLevelFlag.Name),
+ LogJSON: ctx.GlobalString(LogJSONFlag.Name),
+ Etherbase: ctx.GlobalString(EtherbaseFlag.Name),
+ MinerThreads: ctx.GlobalInt(MinerThreadsFlag.Name),
+ AccountManager: GetAccountManager(ctx),
+ VmDebug: ctx.GlobalBool(VMDebugFlag.Name),
+ MaxPeers: ctx.GlobalInt(MaxPeersFlag.Name),
+ Port: ctx.GlobalString(ListenPortFlag.Name),
+ NAT: GetNAT(ctx),
+ NodeKey: GetNodeKey(ctx),
+ Shh: true,
+ Dial: true,
+ BootNodes: ctx.GlobalString(BootnodesFlag.Name),
}
}
func GetChain(ctx *cli.Context) (*core.ChainManager, common.Database, common.Database) {
dataDir := ctx.GlobalString(DataDirFlag.Name)
+
blockDb, err := ethdb.NewLDBDatabase(path.Join(dataDir, "blockchain"))
if err != nil {
Fatalf("Could not open database: %v", err)
@@ -269,7 +278,20 @@ func GetChain(ctx *cli.Context) (*core.ChainManager, common.Database, common.Dat
if err != nil {
Fatalf("Could not open database: %v", err)
}
- return core.NewChainManager(blockDb, stateDb, new(event.TypeMux)), blockDb, stateDb
+
+ extraDb, err := ethdb.NewLDBDatabase(path.Join(dataDir, "extra"))
+ if err != nil {
+ Fatalf("Could not open database: %v", err)
+ }
+
+ eventMux := new(event.TypeMux)
+ chainManager := core.NewChainManager(blockDb, stateDb, eventMux)
+ pow := ethash.New(chainManager)
+ txPool := core.NewTxPool(eventMux, chainManager.State)
+ blockProcessor := core.NewBlockProcessor(stateDb, extraDb, pow, txPool, chainManager, eventMux)
+ chainManager.SetProcessor(blockProcessor)
+
+ return chainManager, blockDb, stateDb
}
func GetAccountManager(ctx *cli.Context) *accounts.Manager {