From edba5e9854dcef9b4dcb6d75c06d5b5c7e5b8856 Mon Sep 17 00:00:00 2001 From: Péter Szilágyi Date: Wed, 4 Oct 2017 12:15:58 +0300 Subject: cmd/puppeth: support managing fork block in the chain config --- cmd/puppeth/wizard_genesis.go | 52 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) (limited to 'cmd/puppeth/wizard_genesis.go') diff --git a/cmd/puppeth/wizard_genesis.go b/cmd/puppeth/wizard_genesis.go index 43dae9c20..222fc2a7c 100644 --- a/cmd/puppeth/wizard_genesis.go +++ b/cmd/puppeth/wizard_genesis.go @@ -18,7 +18,9 @@ package main import ( "bytes" + "encoding/json" "fmt" + "io/ioutil" "math/big" "math/rand" "time" @@ -135,3 +137,53 @@ func (w *wizard) makeGenesis() { // All done, store the genesis and flush to disk w.conf.genesis = genesis } + +// manageGenesis permits the modification of chain configuration parameters in +// a genesis config and the export of the entire genesis spec. +func (w *wizard) manageGenesis() { + // Figure out whether to modify or export the genesis + fmt.Println() + fmt.Println(" 1. Modify existing fork rules") + fmt.Println(" 2. Export genesis configuration") + + choice := w.read() + switch { + case choice == "1": + // Fork rule updating requested, iterate over each fork + fmt.Println() + fmt.Printf("Which block should Homestead come into effect? (default = %v)\n", w.conf.genesis.Config.HomesteadBlock) + w.conf.genesis.Config.HomesteadBlock = w.readDefaultBigInt(w.conf.genesis.Config.HomesteadBlock) + + fmt.Println() + fmt.Printf("Which block should EIP150 come into effect? (default = %v)\n", w.conf.genesis.Config.EIP150Block) + w.conf.genesis.Config.EIP150Block = w.readDefaultBigInt(w.conf.genesis.Config.EIP150Block) + + fmt.Println() + fmt.Printf("Which block should EIP155 come into effect? (default = %v)\n", w.conf.genesis.Config.EIP155Block) + w.conf.genesis.Config.EIP155Block = w.readDefaultBigInt(w.conf.genesis.Config.EIP155Block) + + fmt.Println() + fmt.Printf("Which block should EIP158 come into effect? (default = %v)\n", w.conf.genesis.Config.EIP158Block) + w.conf.genesis.Config.EIP158Block = w.readDefaultBigInt(w.conf.genesis.Config.EIP158Block) + + fmt.Println() + fmt.Printf("Which block should Byzantium come into effect? (default = %v)\n", w.conf.genesis.Config.ByzantiumBlock) + w.conf.genesis.Config.ByzantiumBlock = w.readDefaultBigInt(w.conf.genesis.Config.ByzantiumBlock) + + out, _ := json.MarshalIndent(w.conf.genesis.Config, "", " ") + fmt.Printf("Chain configuration updated:\n\n%s\n", out) + + case choice == "2": + // Save whatever genesis configuration we currently have + fmt.Println() + fmt.Printf("Which file to save the genesis into? (default = %s.json)\n", w.network) + out, _ := json.MarshalIndent(w.conf.genesis, "", " ") + if err := ioutil.WriteFile(w.readDefaultString(fmt.Sprintf("%s.json", w.network)), out, 0644); err != nil { + log.Error("Failed to save genesis file", "err", err) + } + log.Info("Exported existing genesis block") + + default: + log.Error("That's not something I can do") + } +} -- cgit