Skip to content

Commit 4f7b8e2

Browse files
authored
Move testnet generate to network generate to simplify number of subco… (#47)
1 parent 1262190 commit 4f7b8e2

File tree

3 files changed

+112
-94
lines changed

3 files changed

+112
-94
lines changed

cmd/network/generate.go

+105
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
package network
2+
3+
import (
4+
"crypto/sha256"
5+
"encoding/hex"
6+
"encoding/json"
7+
"fmt"
8+
9+
"github.com/chia-network/go-chia-libs/pkg/config"
10+
"github.com/chia-network/go-chia-libs/pkg/types"
11+
"github.com/chia-network/go-modules/pkg/slogs"
12+
"github.com/spf13/cast"
13+
"github.com/spf13/cobra"
14+
"github.com/spf13/viper"
15+
"gopkg.in/yaml.v3"
16+
)
17+
18+
// generateCmd represents the generate command
19+
var generateCmd = &cobra.Command{
20+
Use: "generate",
21+
Short: "Generates new network constants",
22+
Example: "chia-tools network generate --network examplenet",
23+
Run: func(cmd *cobra.Command, args []string) {
24+
networkName := viper.GetString("tn-gen-network")
25+
genesisHashBytes := sha256.Sum256([]byte(networkName))
26+
genesisHash := hex.EncodeToString(genesisHashBytes[:32])
27+
28+
constants := &config.NetworkConstants{
29+
AggSigMeAdditionalData: genesisHash,
30+
DifficultyConstantFactor: types.Uint128From64(viper.GetUint64("tn-gen-diff-constant-factor")),
31+
DifficultyStarting: viper.GetUint64("tn-gen-difficulty-starting"),
32+
EpochBlocks: viper.GetUint32("tn-gen-epoch-blocks"),
33+
GenesisChallenge: genesisHash,
34+
GenesisPreFarmPoolPuzzleHash: viper.GetString("tn-gen-pre-farm-pool-puz-hash"),
35+
GenesisPreFarmFarmerPuzzleHash: viper.GetString("tn-gen-pre-farm-farmer-puz-hash"),
36+
MempoolBlockBuffer: cast.ToUint8(viper.Get("tn-gen-mempool-block-buffer")),
37+
MinPlotSize: cast.ToUint8(viper.Get("tn-gen-min-plot-size")),
38+
NetworkType: 1,
39+
SubSlotItersStarting: viper.GetUint64("tn-gen-sub-slot-iters-starting"),
40+
}
41+
cfg := &config.NetworkConfig{
42+
AddressPrefix: "txch",
43+
DefaultFullNodePort: viper.GetUint16("tn-gen-port"),
44+
}
45+
46+
netOverrides := &config.NetworkOverrides{
47+
Constants: map[string]config.NetworkConstants{
48+
networkName: *constants,
49+
},
50+
Config: map[string]config.NetworkConfig{
51+
networkName: *cfg,
52+
},
53+
}
54+
55+
var toMarshal any
56+
if viper.GetBool("tn-gen-with-constants") {
57+
toMarshal = netOverrides
58+
} else {
59+
toMarshal = constants
60+
}
61+
62+
var marshalled []byte
63+
var err error
64+
if viper.GetBool("tn-gen-as-json") {
65+
marshalled, err = json.Marshal(toMarshal)
66+
} else {
67+
marshalled, err = yaml.Marshal(toMarshal)
68+
}
69+
70+
if err != nil {
71+
slogs.Logr.Fatal("error marshalling", "error", err)
72+
}
73+
fmt.Print(string(marshalled))
74+
},
75+
}
76+
77+
func init() {
78+
generateCmd.PersistentFlags().String("network", "", "Name of the network to create")
79+
generateCmd.PersistentFlags().Uint64("diff-constant-factor", uint64(10052721566054), "Specify the value for DIFFICULTY_CONSTANT_FACTOR (Up to uint64max)")
80+
generateCmd.PersistentFlags().String("pre-farm-farmer-puz-hash", "08296fc227decd043aee855741444538e4cc9a31772c4d1a9e6242d1e777e42a", "Specify the value for GENESIS_PRE_FARM_FARMER_PUZZLE_HASH")
81+
generateCmd.PersistentFlags().String("pre-farm-pool-puz-hash", "08296fc227decd043aee855741444538e4cc9a31772c4d1a9e6242d1e777e42a", "Specify the value for GENESIS_PRE_FARM_POOL_PUZZLE_HASH")
82+
generateCmd.PersistentFlags().Uint8("min-plot-size", uint8(18), "Specify the minimum plot size MIN_PLOT_SIZE")
83+
generateCmd.PersistentFlags().Uint8("mempool-block-buffer", uint8(10), "Specify MEMPOOL_BLOCK_BUFFER")
84+
generateCmd.PersistentFlags().Uint32("epoch-blocks", uint32(768), "specify EPOCH_BLOCKS")
85+
generateCmd.PersistentFlags().Uint64("difficulty-starting", uint64(30), "Specify starting difficulty")
86+
generateCmd.PersistentFlags().Uint64("sub-slot-iters-starting", uint64(1<<26), "Specify starting sub slot iters")
87+
generateCmd.PersistentFlags().Uint16("port", uint16(58445), "Specify the port the network full nodes should use")
88+
generateCmd.PersistentFlags().Bool("as-json", false, "Output as JSON blob instead of yaml")
89+
generateCmd.PersistentFlags().Bool("with-constants", false, "Include constants and default ports")
90+
91+
cobra.CheckErr(viper.BindPFlag("tn-gen-network", generateCmd.PersistentFlags().Lookup("network")))
92+
cobra.CheckErr(viper.BindPFlag("tn-gen-diff-constant-factor", generateCmd.PersistentFlags().Lookup("diff-constant-factor")))
93+
cobra.CheckErr(viper.BindPFlag("tn-gen-pre-farm-farmer-puz-hash", generateCmd.PersistentFlags().Lookup("pre-farm-farmer-puz-hash")))
94+
cobra.CheckErr(viper.BindPFlag("tn-gen-pre-farm-pool-puz-hash", generateCmd.PersistentFlags().Lookup("pre-farm-pool-puz-hash")))
95+
cobra.CheckErr(viper.BindPFlag("tn-gen-min-plot-size", generateCmd.PersistentFlags().Lookup("min-plot-size")))
96+
cobra.CheckErr(viper.BindPFlag("tn-gen-mempool-block-buffer", generateCmd.PersistentFlags().Lookup("mempool-block-buffer")))
97+
cobra.CheckErr(viper.BindPFlag("tn-gen-epoch-blocks", generateCmd.PersistentFlags().Lookup("epoch-blocks")))
98+
cobra.CheckErr(viper.BindPFlag("tn-gen-difficulty-starting", generateCmd.PersistentFlags().Lookup("difficulty-starting")))
99+
cobra.CheckErr(viper.BindPFlag("tn-gen-sub-slot-iters-starting", generateCmd.PersistentFlags().Lookup("sub-slot-iters-starting")))
100+
cobra.CheckErr(viper.BindPFlag("tn-gen-port", generateCmd.PersistentFlags().Lookup("port")))
101+
cobra.CheckErr(viper.BindPFlag("tn-gen-as-json", generateCmd.PersistentFlags().Lookup("as-json")))
102+
cobra.CheckErr(viper.BindPFlag("tn-gen-with-constants", generateCmd.PersistentFlags().Lookup("with-constants")))
103+
104+
networkCmd.AddCommand(generateCmd)
105+
}

cmd/testnet/generate.go

+4-92
Original file line numberDiff line numberDiff line change
@@ -1,105 +1,17 @@
11
package testnet
22

33
import (
4-
"crypto/sha256"
5-
"encoding/hex"
6-
"encoding/json"
7-
"fmt"
8-
9-
"github.com/chia-network/go-chia-libs/pkg/config"
10-
"github.com/chia-network/go-chia-libs/pkg/types"
11-
"github.com/chia-network/go-modules/pkg/slogs"
12-
"github.com/spf13/cast"
134
"github.com/spf13/cobra"
14-
"github.com/spf13/viper"
15-
"gopkg.in/yaml.v3"
165
)
176

187
// generateCmd represents the generate command
198
var generateCmd = &cobra.Command{
20-
Use: "generate",
21-
Short: "Generates a new testnet",
22-
Example: "chia-tools testnet generate --network examplenet",
23-
Run: func(cmd *cobra.Command, args []string) {
24-
networkName := viper.GetString("tn-gen-network")
25-
genesisHashBytes := sha256.Sum256([]byte(networkName))
26-
genesisHash := hex.EncodeToString(genesisHashBytes[:32])
27-
28-
constants := &config.NetworkConstants{
29-
AggSigMeAdditionalData: genesisHash,
30-
DifficultyConstantFactor: types.Uint128From64(viper.GetUint64("tn-gen-diff-constant-factor")),
31-
DifficultyStarting: viper.GetUint64("tn-gen-difficulty-starting"),
32-
EpochBlocks: viper.GetUint32("tn-gen-epoch-blocks"),
33-
GenesisChallenge: genesisHash,
34-
GenesisPreFarmPoolPuzzleHash: viper.GetString("tn-gen-pre-farm-pool-puz-hash"),
35-
GenesisPreFarmFarmerPuzzleHash: viper.GetString("tn-gen-pre-farm-farmer-puz-hash"),
36-
MempoolBlockBuffer: cast.ToUint8(viper.Get("tn-gen-mempool-block-buffer")),
37-
MinPlotSize: cast.ToUint8(viper.Get("tn-gen-min-plot-size")),
38-
NetworkType: 1,
39-
SubSlotItersStarting: viper.GetUint64("tn-gen-sub-slot-iters-starting"),
40-
}
41-
cfg := &config.NetworkConfig{
42-
AddressPrefix: "txch",
43-
DefaultFullNodePort: viper.GetUint16("tn-gen-port"),
44-
}
45-
46-
netOverrides := &config.NetworkOverrides{
47-
Constants: map[string]config.NetworkConstants{
48-
networkName: *constants,
49-
},
50-
Config: map[string]config.NetworkConfig{
51-
networkName: *cfg,
52-
},
53-
}
54-
55-
var toMarshal any
56-
if viper.GetBool("tn-gen-with-constants") {
57-
toMarshal = netOverrides
58-
} else {
59-
toMarshal = constants
60-
}
61-
62-
var marshalled []byte
63-
var err error
64-
if viper.GetBool("tn-gen-as-json") {
65-
marshalled, err = json.Marshal(toMarshal)
66-
} else {
67-
marshalled, err = yaml.Marshal(toMarshal)
68-
}
69-
70-
if err != nil {
71-
slogs.Logr.Fatal("error marshalling", "error", err)
72-
}
73-
fmt.Print(string(marshalled))
74-
},
9+
Use: "generate",
10+
Short: "Generates a new testnet",
11+
Example: "chia-tools testnet generate --network examplenet",
12+
Deprecated: "\nThe `testnet generate` command is deprecated. Please use the 'network generate' command instead\n",
7513
}
7614

7715
func init() {
78-
generateCmd.PersistentFlags().String("network", "", "Name of the network to create")
79-
generateCmd.PersistentFlags().Uint64("diff-constant-factor", uint64(10052721566054), "Specify the value for DIFFICULTY_CONSTANT_FACTOR (Up to uint64max)")
80-
generateCmd.PersistentFlags().String("pre-farm-farmer-puz-hash", "08296fc227decd043aee855741444538e4cc9a31772c4d1a9e6242d1e777e42a", "Specify the value for GENESIS_PRE_FARM_FARMER_PUZZLE_HASH")
81-
generateCmd.PersistentFlags().String("pre-farm-pool-puz-hash", "08296fc227decd043aee855741444538e4cc9a31772c4d1a9e6242d1e777e42a", "Specify the value for GENESIS_PRE_FARM_POOL_PUZZLE_HASH")
82-
generateCmd.PersistentFlags().Uint8("min-plot-size", uint8(18), "Specify the minimum plot size MIN_PLOT_SIZE")
83-
generateCmd.PersistentFlags().Uint8("mempool-block-buffer", uint8(10), "Specify MEMPOOL_BLOCK_BUFFER")
84-
generateCmd.PersistentFlags().Uint32("epoch-blocks", uint32(768), "specify EPOCH_BLOCKS")
85-
generateCmd.PersistentFlags().Uint64("difficulty-starting", uint64(30), "Specify starting difficulty")
86-
generateCmd.PersistentFlags().Uint64("sub-slot-iters-starting", uint64(1<<26), "Specify starting sub slot iters")
87-
generateCmd.PersistentFlags().Uint16("port", uint16(58445), "Specify the port the network full nodes should use")
88-
generateCmd.PersistentFlags().Bool("as-json", false, "Output as JSON blob instead of yaml")
89-
generateCmd.PersistentFlags().Bool("with-constants", false, "Include constants and default ports")
90-
91-
cobra.CheckErr(viper.BindPFlag("tn-gen-network", generateCmd.PersistentFlags().Lookup("network")))
92-
cobra.CheckErr(viper.BindPFlag("tn-gen-diff-constant-factor", generateCmd.PersistentFlags().Lookup("diff-constant-factor")))
93-
cobra.CheckErr(viper.BindPFlag("tn-gen-pre-farm-farmer-puz-hash", generateCmd.PersistentFlags().Lookup("pre-farm-farmer-puz-hash")))
94-
cobra.CheckErr(viper.BindPFlag("tn-gen-pre-farm-pool-puz-hash", generateCmd.PersistentFlags().Lookup("pre-farm-pool-puz-hash")))
95-
cobra.CheckErr(viper.BindPFlag("tn-gen-min-plot-size", generateCmd.PersistentFlags().Lookup("min-plot-size")))
96-
cobra.CheckErr(viper.BindPFlag("tn-gen-mempool-block-buffer", generateCmd.PersistentFlags().Lookup("mempool-block-buffer")))
97-
cobra.CheckErr(viper.BindPFlag("tn-gen-epoch-blocks", generateCmd.PersistentFlags().Lookup("epoch-blocks")))
98-
cobra.CheckErr(viper.BindPFlag("tn-gen-difficulty-starting", generateCmd.PersistentFlags().Lookup("difficulty-starting")))
99-
cobra.CheckErr(viper.BindPFlag("tn-gen-sub-slot-iters-starting", generateCmd.PersistentFlags().Lookup("sub-slot-iters-starting")))
100-
cobra.CheckErr(viper.BindPFlag("tn-gen-port", generateCmd.PersistentFlags().Lookup("port")))
101-
cobra.CheckErr(viper.BindPFlag("tn-gen-as-json", generateCmd.PersistentFlags().Lookup("as-json")))
102-
cobra.CheckErr(viper.BindPFlag("tn-gen-with-constants", generateCmd.PersistentFlags().Lookup("with-constants")))
103-
10416
testnetCmd.AddCommand(generateCmd)
10517
}

cmd/testnet/testnet.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ import (
88

99
// testnetCmd represents the config command
1010
var testnetCmd = &cobra.Command{
11-
Use: "testnet",
12-
Short: "Utilities for working with chia testnets",
11+
Use: "testnet",
12+
Short: "Utilities for working with chia testnets",
13+
Deprecated: "\nThe testnet subcommand is deprecated. Please use the 'network' subcommand instead\n",
1314
}
1415

1516
func init() {

0 commit comments

Comments
 (0)