Skip to content

Commit

Permalink
cmd: add genesis flag to solo, allow specifying a custom genesis file…
Browse files Browse the repository at this point in the history
… to solo
  • Loading branch information
libotony committed Mar 25, 2024
1 parent e42227b commit d8b0863
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 24 deletions.
4 changes: 4 additions & 0 deletions cmd/thor/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,4 +142,8 @@ var (
Value: 16,
Usage: "set tx limit per account in pool",
}
soloGenesisFlag = cli.StringFlag{
Name: "genesis",
Usage: "path to genesis file, if not set, the default devnet genesis will be used",
}
)
20 changes: 17 additions & 3 deletions cmd/thor/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ func main() {
Name: "solo",
Usage: "client runs in solo mode for test & dev",
Flags: []cli.Flag{
soloGenesisFlag,
dataDirFlag,
cacheFlag,
apiAddrFlag,
Expand Down Expand Up @@ -245,9 +246,22 @@ func soloAction(ctx *cli.Context) error {
defer func() { log.Info("exited") }()

initLogger(ctx)
gene := genesis.NewDevnet()
// Solo forks from the start
forkConfig := thor.ForkConfig{}

var (
gene *genesis.Genesis
forkConfig thor.ForkConfig
)

if ctx.String(soloGenesisFlag.Name) == "" {
gene = genesis.NewDevnet()
forkConfig = thor.ForkConfig{} // Devnet forks from the start
} else {
var err error
gene, forkConfig, err = parseGenesisFile(ctx.String(soloGenesisFlag.Name))
if err != nil {
return err
}
}

var mainDB *muxdb.MuxDB
var logDB *logdb.LogDB
Expand Down
52 changes: 31 additions & 21 deletions cmd/thor/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ import (
"gopkg.in/urfave/cli.v1"
)

var devNetGenesisID = genesis.NewDevnet().ID()

func initLogger(ctx *cli.Context) {
logLevel := ctx.Int(verbosityFlag.Name)
log15.Root().SetHandler(log15.LvlFilterHandler(log15.Lvl(logLevel), log15.StderrHandler))
Expand Down Expand Up @@ -202,30 +204,34 @@ func selectGenesis(ctx *cli.Context) (*genesis.Genesis, thor.ForkConfig, error)
gene := genesis.NewMainnet()
return gene, thor.GetForkConfig(gene.ID()), nil
default:
file, err := os.Open(network)
if err != nil {
return nil, thor.ForkConfig{}, errors.Wrap(err, "open genesis file")
}
defer file.Close()
return parseGenesisFile(network)
}
}

decoder := json.NewDecoder(file)
decoder.DisallowUnknownFields()
func parseGenesisFile(filePath string) (*genesis.Genesis, thor.ForkConfig, error) {
file, err := os.Open(filePath)
if err != nil {
return nil, thor.ForkConfig{}, errors.Wrap(err, "open genesis file")
}
defer file.Close()

var forkConfig = thor.NoFork
var gen genesis.CustomGenesis
gen.ForkConfig = &forkConfig
decoder := json.NewDecoder(file)
decoder.DisallowUnknownFields()

if err := decoder.Decode(&gen); err != nil {
return nil, thor.ForkConfig{}, errors.Wrap(err, "decode genesis file")
}
var forkConfig = thor.NoFork
var gen genesis.CustomGenesis
gen.ForkConfig = &forkConfig

customGen, err := genesis.NewCustomNet(&gen)
if err != nil {
return nil, thor.ForkConfig{}, errors.Wrap(err, "build genesis")
}
if err := decoder.Decode(&gen); err != nil {
return nil, thor.ForkConfig{}, errors.Wrap(err, "decode genesis file")
}

return customGen, forkConfig, nil
customGen, err := genesis.NewCustomNet(&gen)
if err != nil {
return nil, thor.ForkConfig{}, errors.Wrap(err, "build genesis")
}

return customGen, forkConfig, nil
}

func makeConfigDir(ctx *cli.Context) (string, error) {
Expand Down Expand Up @@ -597,9 +603,6 @@ func printSoloStartupMessage(
Forks [ %v ]
Data dir [ %v ]
API portal [ %v ]
┌──────────────────┬───────────────────────────────────────────────────────────────────────────────┐
│ Mnemonic Words │ denial kitchen pet squirrel other broom bar gas better priority spoil cross │
└──────────────────┴───────────────────────────────────────────────────────────────────────────────┘
`,
common.MakeName("Thor solo", fullVersion()),
gene.ID(), gene.Name(),
Expand All @@ -608,6 +611,13 @@ func printSoloStartupMessage(
dataDir,
apiURL)

if gene.ID() == devNetGenesisID {
info += `┌──────────────────┬───────────────────────────────────────────────────────────────────────────────┐
│ Mnemonic Words │ denial kitchen pet squirrel other broom bar gas better priority spoil cross │
└──────────────────┴───────────────────────────────────────────────────────────────────────────────┘
`
}

fmt.Print(info)
}

Expand Down

0 comments on commit d8b0863

Please sign in to comment.