From 99a040998f9381ac7a02b3a2ffee260763a1aab1 Mon Sep 17 00:00:00 2001 From: Jae Kwon Date: Mon, 20 Apr 2015 16:53:15 -0700 Subject: [PATCH] Added unsafe_reset_priv_validator --- cmd/tendermint/main.go | 2 ++ cmd/tendermint/reset_priv_validator.go | 29 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 cmd/tendermint/reset_priv_validator.go diff --git a/cmd/tendermint/main.go b/cmd/tendermint/main.go index 761a89757..946e21c4d 100644 --- a/cmd/tendermint/main.go +++ b/cmd/tendermint/main.go @@ -40,6 +40,8 @@ Commands: gen_tx() case "probe_upnp": probe_upnp() + case "unsafe_reset_priv_validator": + reset_priv_validator() default: fmt.Printf("Unknown command %v\n", args[0]) } diff --git a/cmd/tendermint/reset_priv_validator.go b/cmd/tendermint/reset_priv_validator.go new file mode 100644 index 000000000..82301b0b8 --- /dev/null +++ b/cmd/tendermint/reset_priv_validator.go @@ -0,0 +1,29 @@ +package main + +import ( + "os" + + "github.com/tendermint/tendermint/config" + sm "github.com/tendermint/tendermint/state" +) + +// NOTE: this is totally unsafe. +// it's only suitable for testnets. +func reset_priv_validator() { + // Get PrivValidator + var privValidator *sm.PrivValidator + privValidatorFile := config.App().GetString("PrivValidatorFile") + if _, err := os.Stat(privValidatorFile); err == nil { + privValidator = sm.LoadPrivValidator(privValidatorFile) + privValidator.LastHeight = 0 + privValidator.LastRound = 0 + privValidator.LastStep = 0 + privValidator.Save() + log.Info("Reset PrivValidator", "file", privValidatorFile) + } else { + privValidator = sm.GenPrivValidator() + privValidator.SetFile(privValidatorFile) + privValidator.Save() + log.Info("Generated PrivValidator", "file", privValidatorFile) + } +}