aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/puppeth/wizard_node.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/puppeth/wizard_node.go')
-rw-r--r--cmd/puppeth/wizard_node.go34
1 files changed, 26 insertions, 8 deletions
diff --git a/cmd/puppeth/wizard_node.go b/cmd/puppeth/wizard_node.go
index 05232486b..097e2e41a 100644
--- a/cmd/puppeth/wizard_node.go
+++ b/cmd/puppeth/wizard_node.go
@@ -29,7 +29,7 @@ import (
// deployNode creates a new node configuration based on some user input.
func (w *wizard) deployNode(boot bool) {
// Do some sanity check before the user wastes time on input
- if w.conf.genesis == nil {
+ if w.conf.Genesis == nil {
log.Error("No genesis block configured")
return
}
@@ -44,7 +44,7 @@ func (w *wizard) deployNode(boot bool) {
}
client := w.servers[server]
- // Retrieve any active ethstats configurations from the server
+ // Retrieve any active node configurations from the server
infos, err := checkNode(client, w.network, boot)
if err != nil {
if boot {
@@ -53,8 +53,10 @@ func (w *wizard) deployNode(boot bool) {
infos = &nodeInfos{portFull: 30303, peersTotal: 50, peersLight: 0, gasTarget: 4.7, gasPrice: 18}
}
}
- infos.genesis, _ = json.MarshalIndent(w.conf.genesis, "", " ")
- infos.network = w.conf.genesis.Config.ChainId.Int64()
+ existed := err == nil
+
+ infos.genesis, _ = json.MarshalIndent(w.conf.Genesis, "", " ")
+ infos.network = w.conf.Genesis.Config.ChainId.Int64()
// Figure out where the user wants to store the persistent data
fmt.Println()
@@ -65,6 +67,16 @@ func (w *wizard) deployNode(boot bool) {
fmt.Printf("Where should data be stored on the remote machine? (default = %s)\n", infos.datadir)
infos.datadir = w.readDefaultString(infos.datadir)
}
+ if w.conf.Genesis.Config.Ethash != nil && !boot {
+ fmt.Println()
+ if infos.ethashdir == "" {
+ fmt.Printf("Where should the ethash mining DAGs be stored on the remote machine?\n")
+ infos.ethashdir = w.readString()
+ } else {
+ fmt.Printf("Where should the ethash mining DAGs be stored on the remote machine? (default = %s)\n", infos.ethashdir)
+ infos.ethashdir = w.readDefaultString(infos.ethashdir)
+ }
+ }
// Figure out which port to listen on
fmt.Println()
fmt.Printf("Which TCP/UDP port to listen on? (default = %d)\n", infos.portFull)
@@ -91,7 +103,7 @@ func (w *wizard) deployNode(boot bool) {
}
// If the node is a miner/signer, load up needed credentials
if !boot {
- if w.conf.genesis.Config.Ethash != nil {
+ if w.conf.Genesis.Config.Ethash != nil {
// Ethash based miners only need an etherbase to mine against
fmt.Println()
if infos.etherbase == "" {
@@ -106,7 +118,7 @@ func (w *wizard) deployNode(boot bool) {
fmt.Printf("What address should the miner user? (default = %s)\n", infos.etherbase)
infos.etherbase = w.readDefaultAddress(common.HexToAddress(infos.etherbase)).Hex()
}
- } else if w.conf.genesis.Config.Clique != nil {
+ } else if w.conf.Genesis.Config.Clique != nil {
// If a previous signer was already set, offer to reuse it
if infos.keyJSON != "" {
if key, err := keystore.DecryptKey([]byte(infos.keyJSON), infos.keyPass); err != nil {
@@ -145,7 +157,13 @@ func (w *wizard) deployNode(boot bool) {
infos.gasPrice = w.readDefaultFloat(infos.gasPrice)
}
// Try to deploy the full node on the host
- if out, err := deployNode(client, w.network, w.conf.bootFull, w.conf.bootLight, infos); err != nil {
+ nocache := false
+ if existed {
+ fmt.Println()
+ fmt.Printf("Should the node be built from scratch (y/n)? (default = no)\n")
+ nocache = w.readDefaultString("n") != "n"
+ }
+ if out, err := deployNode(client, w.network, w.conf.bootFull, w.conf.bootLight, infos, nocache); err != nil {
log.Error("Failed to deploy Ethereum node container", "err", err)
if len(out) > 0 {
fmt.Printf("%s\n", out)
@@ -156,5 +174,5 @@ func (w *wizard) deployNode(boot bool) {
log.Info("Waiting for node to finish booting")
time.Sleep(3 * time.Second)
- w.networkStats(false)
+ w.networkStats()
}