|
1 | 1 | package testnet
|
2 | 2 |
|
3 | 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 | 4 | "github.com/spf13/cobra"
|
14 |
| - "github.com/spf13/viper" |
15 |
| - "gopkg.in/yaml.v3" |
16 | 5 | )
|
17 | 6 |
|
18 | 7 | // generateCmd represents the generate command
|
19 | 8 | 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", |
75 | 13 | }
|
76 | 14 |
|
77 | 15 | 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 | 16 | testnetCmd.AddCommand(generateCmd)
|
105 | 17 | }
|
0 commit comments