init genesis from source if flag --apothem

This commit is contained in:
Daniel Liu 2023-04-20 16:52:35 +08:00
parent e00e34c79b
commit 87455baf2e
2 changed files with 168 additions and 12 deletions

143
cmd/XDC/apothem.go Normal file

File diff suppressed because one or more lines are too long

View file

@ -19,7 +19,6 @@ package main
import (
"encoding/json"
"fmt"
"github.com/XinFinOrg/XDPoSChain/core/rawdb"
"os"
"runtime"
"strconv"
@ -30,6 +29,7 @@ import (
"github.com/XinFinOrg/XDPoSChain/common"
"github.com/XinFinOrg/XDPoSChain/console"
"github.com/XinFinOrg/XDPoSChain/core"
"github.com/XinFinOrg/XDPoSChain/core/rawdb"
"github.com/XinFinOrg/XDPoSChain/core/state"
"github.com/XinFinOrg/XDPoSChain/core/types"
"github.com/XinFinOrg/XDPoSChain/eth/downloader"
@ -47,6 +47,7 @@ var (
Flags: []cli.Flag{
utils.DataDirFlag,
utils.LightModeFlag,
utils.XDCTestnetFlag,
},
Category: "BLOCKCHAIN COMMANDS",
Description: `
@ -174,19 +175,31 @@ Use "ethereum dump 0" to dump the genesis block.`,
func initGenesis(ctx *cli.Context) error {
// 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)
if ctx.GlobalBool(utils.XDCTestnetFlag.Name) {
if len(genesisPath) > 0 {
utils.Fatalf("Flags --apothem and genesis file can't be used at the same time")
}
err := json.Unmarshal(apothemGenesis, &genesis)
if err != nil {
utils.Fatalf("invalid genesis json: %v", err)
}
} else {
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()
if err := json.NewDecoder(file).Decode(genesis); err != nil {
utils.Fatalf("invalid genesis file: %v", err)
}
}
// Open an initialise both full and light databases
stack, _ := makeFullNode(ctx)
for _, name := range []string{"chaindata", "lightchaindata"} {