aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/utils/flags.go
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2017-10-24 18:40:42 +0800
committerGitHub <noreply@github.com>2017-10-24 18:40:42 +0800
commit6d6a5a93370371a33fb815d7ae47b60c7021c86a (patch)
treeaa73dff1db3aa2566c2e74cf9ac37f13878fae80 /cmd/utils/flags.go
parentea5f2da39ad198e58107a79214419e31988c5e5a (diff)
downloaddexon-6d6a5a93370371a33fb815d7ae47b60c7021c86a.tar
dexon-6d6a5a93370371a33fb815d7ae47b60c7021c86a.tar.gz
dexon-6d6a5a93370371a33fb815d7ae47b60c7021c86a.tar.bz2
dexon-6d6a5a93370371a33fb815d7ae47b60c7021c86a.tar.lz
dexon-6d6a5a93370371a33fb815d7ae47b60c7021c86a.tar.xz
dexon-6d6a5a93370371a33fb815d7ae47b60c7021c86a.tar.zst
dexon-6d6a5a93370371a33fb815d7ae47b60c7021c86a.zip
cmd, consensus, core, miner: instatx clique for --dev (#15323)
* cmd, consensus, core, miner: instatx clique for --dev * cmd, consensus, clique: support configurable --dev block times * cmd, core: allow --dev to use persistent storage too
Diffstat (limited to 'cmd/utils/flags.go')
-rw-r--r--cmd/utils/flags.go46
1 files changed, 33 insertions, 13 deletions
diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go
index bfef619f6..a996b9d0a 100644
--- a/cmd/utils/flags.go
+++ b/cmd/utils/flags.go
@@ -137,9 +137,13 @@ var (
Name: "rinkeby",
Usage: "Rinkeby network: pre-configured proof-of-authority test network",
}
- DevModeFlag = cli.BoolFlag{
+ DeveloperFlag = cli.BoolFlag{
Name: "dev",
- Usage: "Developer mode: pre-configured private network with several debugging flags",
+ Usage: "Ephemeral proof-of-authority network with a pre-funded developer account, mining enabled",
+ }
+ DeveloperPeriodFlag = cli.IntFlag{
+ Name: "dev.period",
+ Usage: "Block period to use in developer mode (0 = mine only if transaction pending)",
}
IdentityFlag = cli.StringFlag{
Name: "identity",
@@ -796,7 +800,7 @@ func SetP2PConfig(ctx *cli.Context, cfg *p2p.Config) {
cfg.NetRestrict = list
}
- if ctx.GlobalBool(DevModeFlag.Name) {
+ if ctx.GlobalBool(DeveloperFlag.Name) {
// --dev mode can't use p2p networking.
cfg.MaxPeers = 0
cfg.ListenAddr = ":0"
@@ -817,8 +821,8 @@ func SetNodeConfig(ctx *cli.Context, cfg *node.Config) {
switch {
case ctx.GlobalIsSet(DataDirFlag.Name):
cfg.DataDir = ctx.GlobalString(DataDirFlag.Name)
- case ctx.GlobalBool(DevModeFlag.Name):
- cfg.DataDir = filepath.Join(os.TempDir(), "ethereum_dev_mode")
+ case ctx.GlobalBool(DeveloperFlag.Name):
+ cfg.DataDir = "" // unless explicitly requested, use memory databases
case ctx.GlobalBool(TestnetFlag.Name):
cfg.DataDir = filepath.Join(node.DefaultDataDir(), "testnet")
case ctx.GlobalBool(RinkebyFlag.Name):
@@ -924,7 +928,7 @@ func SetShhConfig(ctx *cli.Context, stack *node.Node, cfg *whisper.Config) {
// SetEthConfig applies eth-related command line flags to the config.
func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *eth.Config) {
// Avoid conflicting network flags
- checkExclusive(ctx, DevModeFlag, TestnetFlag, RinkebyFlag)
+ checkExclusive(ctx, DeveloperFlag, TestnetFlag, RinkebyFlag)
checkExclusive(ctx, FastSyncFlag, LightModeFlag, SyncModeFlag)
ks := stack.AccountManager().Backends(keystore.KeyStoreType)[0].(*keystore.KeyStore)
@@ -985,14 +989,30 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *eth.Config) {
cfg.NetworkId = 4
}
cfg.Genesis = core.DefaultRinkebyGenesisBlock()
- case ctx.GlobalBool(DevModeFlag.Name):
- cfg.Genesis = core.DevGenesisBlock()
+ case ctx.GlobalBool(DeveloperFlag.Name):
+ // Create new developer account or reuse existing one
+ var (
+ developer accounts.Account
+ err error
+ )
+ if accs := ks.Accounts(); len(accs) > 0 {
+ developer = ks.Accounts()[0]
+ } else {
+ developer, err = ks.NewAccount("")
+ if err != nil {
+ Fatalf("Failed to create developer account: %v", err)
+ }
+ }
+ if err := ks.Unlock(developer, ""); err != nil {
+ Fatalf("Failed to unlock developer account: %v", err)
+ }
+ log.Info("Using developer account", "address", developer.Address)
+
+ cfg.Genesis = core.DeveloperGenesisBlock(uint64(ctx.GlobalInt(DeveloperPeriodFlag.Name)), developer.Address)
if !ctx.GlobalIsSet(GasPriceFlag.Name) {
- cfg.GasPrice = new(big.Int)
+ cfg.GasPrice = big.NewInt(1)
}
- cfg.PowTest = true
}
-
// TODO(fjl): move trie cache generations into config
if gen := ctx.GlobalInt(TrieCacheGenFlag.Name); gen > 0 {
state.MaxTrieCacheGen = uint16(gen)
@@ -1077,8 +1097,8 @@ func MakeGenesis(ctx *cli.Context) *core.Genesis {
genesis = core.DefaultTestnetGenesisBlock()
case ctx.GlobalBool(RinkebyFlag.Name):
genesis = core.DefaultRinkebyGenesisBlock()
- case ctx.GlobalBool(DevModeFlag.Name):
- genesis = core.DevGenesisBlock()
+ case ctx.GlobalBool(DeveloperFlag.Name):
+ Fatalf("Developer chains are ephemeral")
}
return genesis
}