mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-17 09:23:48 +00:00
Merge fede8847a3 into 9dbb8ef4aa
This commit is contained in:
commit
6c13089c2f
4 changed files with 40 additions and 28 deletions
|
|
@ -90,10 +90,6 @@ var (
|
||||||
Name: "nogasmetering",
|
Name: "nogasmetering",
|
||||||
Usage: "disable gas metering",
|
Usage: "disable gas metering",
|
||||||
}
|
}
|
||||||
GenesisFlag = cli.StringFlag{
|
|
||||||
Name: "prestate",
|
|
||||||
Usage: "JSON file with prestate (genesis) config",
|
|
||||||
}
|
|
||||||
MachineFlag = cli.BoolFlag{
|
MachineFlag = cli.BoolFlag{
|
||||||
Name: "json",
|
Name: "json",
|
||||||
Usage: "output trace logs in machine readable format (json)",
|
Usage: "output trace logs in machine readable format (json)",
|
||||||
|
|
|
||||||
|
|
@ -48,27 +48,6 @@ var runCommand = cli.Command{
|
||||||
Description: `The run command runs arbitrary EVM code.`,
|
Description: `The run command runs arbitrary EVM code.`,
|
||||||
}
|
}
|
||||||
|
|
||||||
// readGenesis will read the given JSON format genesis file and return
|
|
||||||
// the initialized Genesis structure
|
|
||||||
func readGenesis(genesisPath string) *core.Genesis {
|
|
||||||
// Make sure we have a valid genesis JSON
|
|
||||||
//genesisPath := ctx.Args().First()
|
|
||||||
if len(genesisPath) == 0 {
|
|
||||||
utils.Fatalf("Must supply path to genesis JSON file")
|
|
||||||
}
|
|
||||||
file, err := os.Open(genesisPath)
|
|
||||||
if err != nil {
|
|
||||||
utils.Fatalf("Failed to read genesis file: %v", err)
|
|
||||||
}
|
|
||||||
defer file.Close()
|
|
||||||
|
|
||||||
genesis := new(core.Genesis)
|
|
||||||
if err := json.NewDecoder(file).Decode(genesis); err != nil {
|
|
||||||
utils.Fatalf("invalid genesis file: %v", err)
|
|
||||||
}
|
|
||||||
return genesis
|
|
||||||
}
|
|
||||||
|
|
||||||
func runCmd(ctx *cli.Context) error {
|
func runCmd(ctx *cli.Context) error {
|
||||||
glogger := log.NewGlogHandler(log.StreamHandler(os.Stderr, log.TerminalFormat(false)))
|
glogger := log.NewGlogHandler(log.StreamHandler(os.Stderr, log.TerminalFormat(false)))
|
||||||
glogger.Verbosity(log.Lvl(ctx.GlobalInt(VerbosityFlag.Name)))
|
glogger.Verbosity(log.Lvl(ctx.GlobalInt(VerbosityFlag.Name)))
|
||||||
|
|
@ -95,7 +74,7 @@ func runCmd(ctx *cli.Context) error {
|
||||||
debugLogger = vm.NewStructLogger(logconfig)
|
debugLogger = vm.NewStructLogger(logconfig)
|
||||||
}
|
}
|
||||||
if ctx.GlobalString(GenesisFlag.Name) != "" {
|
if ctx.GlobalString(GenesisFlag.Name) != "" {
|
||||||
gen := readGenesis(ctx.GlobalString(GenesisFlag.Name))
|
gen := utils.ReadGenesis(ctx.GlobalString(GenesisFlag.Name))
|
||||||
_, statedb = gen.ToBlock()
|
_, statedb = gen.ToBlock()
|
||||||
chainConfig = gen.Config
|
chainConfig = gen.Config
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -118,6 +118,7 @@ var (
|
||||||
utils.GpoBlocksFlag,
|
utils.GpoBlocksFlag,
|
||||||
utils.GpoPercentileFlag,
|
utils.GpoPercentileFlag,
|
||||||
utils.ExtraDataFlag,
|
utils.ExtraDataFlag,
|
||||||
|
utils.GenesisFlag,
|
||||||
configFileFlag,
|
configFileFlag,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ package utils
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"math/big"
|
"math/big"
|
||||||
|
|
@ -146,6 +147,10 @@ var (
|
||||||
Name: "dev.period",
|
Name: "dev.period",
|
||||||
Usage: "Block period to use in developer mode (0 = mine only if transaction pending)",
|
Usage: "Block period to use in developer mode (0 = mine only if transaction pending)",
|
||||||
}
|
}
|
||||||
|
GenesisFlag = cli.StringFlag{
|
||||||
|
Name: "prestate",
|
||||||
|
Usage: "JSON file with prestate (genesis) config",
|
||||||
|
}
|
||||||
IdentityFlag = cli.StringFlag{
|
IdentityFlag = cli.StringFlag{
|
||||||
Name: "identity",
|
Name: "identity",
|
||||||
Usage: "Custom node name",
|
Usage: "Custom node name",
|
||||||
|
|
@ -519,6 +524,27 @@ var (
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// readGenesis will read the given JSON format genesis file and return
|
||||||
|
// the initialized Genesis structure
|
||||||
|
func ReadGenesis(genesisPath string) *core.Genesis {
|
||||||
|
// Make sure we have a valid genesis JSON
|
||||||
|
//genesisPath := ctx.Args().First()
|
||||||
|
if len(genesisPath) == 0 {
|
||||||
|
Fatalf("Must supply path to genesis JSON file")
|
||||||
|
}
|
||||||
|
file, err := os.Open(genesisPath)
|
||||||
|
if err != nil {
|
||||||
|
Fatalf("Failed to read genesis file: %v", err)
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
genesis := new(core.Genesis)
|
||||||
|
if err := json.NewDecoder(file).Decode(genesis); err != nil {
|
||||||
|
Fatalf("invalid genesis file: %v", err)
|
||||||
|
}
|
||||||
|
return genesis
|
||||||
|
}
|
||||||
|
|
||||||
// MakeDataDir retrieves the currently requested data directory, terminating
|
// MakeDataDir retrieves the currently requested data directory, terminating
|
||||||
// if none (or the empty string) is specified. If the node is starting a testnet,
|
// if none (or the empty string) is specified. If the node is starting a testnet,
|
||||||
// the a subdirectory of the specified datadir will be used.
|
// the a subdirectory of the specified datadir will be used.
|
||||||
|
|
@ -1036,12 +1062,20 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *eth.Config) {
|
||||||
if !ctx.GlobalIsSet(NetworkIdFlag.Name) {
|
if !ctx.GlobalIsSet(NetworkIdFlag.Name) {
|
||||||
cfg.NetworkId = 3
|
cfg.NetworkId = 3
|
||||||
}
|
}
|
||||||
cfg.Genesis = core.DefaultTestnetGenesisBlock()
|
if ctx.GlobalString(GenesisFlag.Name) != "" {
|
||||||
|
cfg.Genesis = ReadGenesis(ctx.GlobalString(GenesisFlag.Name))
|
||||||
|
} else {
|
||||||
|
cfg.Genesis = core.DefaultTestnetGenesisBlock()
|
||||||
|
}
|
||||||
case ctx.GlobalBool(RinkebyFlag.Name):
|
case ctx.GlobalBool(RinkebyFlag.Name):
|
||||||
if !ctx.GlobalIsSet(NetworkIdFlag.Name) {
|
if !ctx.GlobalIsSet(NetworkIdFlag.Name) {
|
||||||
cfg.NetworkId = 4
|
cfg.NetworkId = 4
|
||||||
}
|
}
|
||||||
cfg.Genesis = core.DefaultRinkebyGenesisBlock()
|
if ctx.GlobalString(GenesisFlag.Name) != "" {
|
||||||
|
cfg.Genesis = ReadGenesis(ctx.GlobalString(GenesisFlag.Name))
|
||||||
|
} else {
|
||||||
|
cfg.Genesis = core.DefaultRinkebyGenesisBlock()
|
||||||
|
}
|
||||||
case ctx.GlobalBool(DeveloperFlag.Name):
|
case ctx.GlobalBool(DeveloperFlag.Name):
|
||||||
// Create new developer account or reuse existing one
|
// Create new developer account or reuse existing one
|
||||||
var (
|
var (
|
||||||
|
|
@ -1161,6 +1195,8 @@ func MakeChainDatabase(ctx *cli.Context, stack *node.Node) ethdb.Database {
|
||||||
func MakeGenesis(ctx *cli.Context) *core.Genesis {
|
func MakeGenesis(ctx *cli.Context) *core.Genesis {
|
||||||
var genesis *core.Genesis
|
var genesis *core.Genesis
|
||||||
switch {
|
switch {
|
||||||
|
case ctx.GlobalBool(GenesisFlag.Name):
|
||||||
|
genesis = ReadGenesis(ctx.GlobalString(GenesisFlag.Name))
|
||||||
case ctx.GlobalBool(TestnetFlag.Name):
|
case ctx.GlobalBool(TestnetFlag.Name):
|
||||||
genesis = core.DefaultTestnetGenesisBlock()
|
genesis = core.DefaultTestnetGenesisBlock()
|
||||||
case ctx.GlobalBool(RinkebyFlag.Name):
|
case ctx.GlobalBool(RinkebyFlag.Name):
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue