aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/geth/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/geth/main.go')
-rw-r--r--cmd/geth/main.go26
1 files changed, 21 insertions, 5 deletions
diff --git a/cmd/geth/main.go b/cmd/geth/main.go
index aacb588fe..b54d85c22 100644
--- a/cmd/geth/main.go
+++ b/cmd/geth/main.go
@@ -58,6 +58,11 @@ var (
gitCommit string // set via linker flagg
nodeNameVersion string
app *cli.App
+
+ ExtraDataFlag = cli.StringFlag{
+ Name: "extradata",
+ Usage: "Extra data for the miner",
+ }
)
func init() {
@@ -308,6 +313,7 @@ JavaScript API. See https://github.com/ethereum/go-ethereum/wiki/Javascipt-Conso
utils.IPCPathFlag,
utils.ExecFlag,
utils.WhisperEnabledFlag,
+ utils.DevModeFlag,
utils.VMDebugFlag,
utils.VMForceJitFlag,
utils.VMJitCacheFlag,
@@ -330,6 +336,7 @@ JavaScript API. See https://github.com/ethereum/go-ethereum/wiki/Javascipt-Conso
utils.GpobaseStepDownFlag,
utils.GpobaseStepUpFlag,
utils.GpobaseCorrectionFactorFlag,
+ ExtraDataFlag,
}
app.Before = func(ctx *cli.Context) error {
utils.SetupLogger(ctx)
@@ -353,6 +360,14 @@ func main() {
}
}
+// makeExtra resolves extradata for the miner from a flag or returns a default.
+func makeExtra(ctx *cli.Context) []byte {
+ if ctx.GlobalIsSet(ExtraDataFlag.Name) {
+ return []byte(ctx.GlobalString(ExtraDataFlag.Name))
+ }
+ return makeDefaultExtra()
+}
+
func makeDefaultExtra() []byte {
var clientInfo = struct {
Version uint
@@ -381,7 +396,7 @@ func run(ctx *cli.Context) {
}
cfg := utils.MakeEthConfig(ClientIdentifier, nodeNameVersion, ctx)
- cfg.ExtraData = makeDefaultExtra()
+ cfg.ExtraData = makeExtra(ctx)
ethereum, err := eth.New(cfg)
if err != nil {
@@ -429,6 +444,8 @@ func console(ctx *cli.Context) {
utils.CheckLegalese(ctx.GlobalString(utils.DataDirFlag.Name))
cfg := utils.MakeEthConfig(ClientIdentifier, nodeNameVersion, ctx)
+ cfg.ExtraData = makeExtra(ctx)
+
ethereum, err := eth.New(cfg)
if err != nil {
utils.Fatalf("%v", err)
@@ -527,17 +544,16 @@ func blockRecovery(ctx *cli.Context) {
var block *types.Block
if arg[0] == '#' {
- block = core.GetBlockByNumber(blockDb, common.String2Big(arg[1:]).Uint64())
+ block = core.GetBlock(blockDb, core.GetCanonicalHash(blockDb, common.String2Big(arg[1:]).Uint64()))
} else {
- block = core.GetBlockByHash(blockDb, common.HexToHash(arg))
+ block = core.GetBlock(blockDb, common.HexToHash(arg))
}
if block == nil {
glog.Fatalln("block not found. Recovery failed")
}
- err = core.WriteHead(blockDb, block)
- if err != nil {
+ if err = core.WriteHeadBlockHash(blockDb, block.Hash()); err != nil {
glog.Fatalln("block write err", err)
}
glog.Infof("Recovery succesful. New HEAD %x\n", block.Hash())