MCPcopy Create free account
hub / github.com/CPChain/chain / initChain

Function initChain

cmd/cpchain/cmd_chain.go:173–210  ·  view source on GitHub ↗

initChain creates a genesis block from a toml format file

(ctx *cli.Context)

Source from the content-addressed store, hash-verified

171
172// initChain creates a genesis block from a toml format file
173func initChain(ctx *cli.Context) error {
174 // Make sure we have a valid genesis TOML and run with suitable runmode.
175 genesisPath := ctx.Args().First()
176 var genesis *core.Genesis
177
178 if ctx.IsSet(flags.RunModeFlagName) {
179 _ = configs.SetRunMode(configs.RunMode(ctx.String(flags.RunModeFlagName)))
180 }
181 log.Info("runMode", "runMode", configs.GetRunMode())
182
183 if len(genesisPath) == 0 {
184 genesis = core.DefaultGenesisBlock()
185 } else {
186 file, err := os.Open(genesisPath)
187 if err != nil {
188 log.Fatalf("Failed to read genesis file: %v", err)
189 }
190 defer file.Close()
191
192 genesis = new(core.Genesis)
193 if err := toml.NewDecoder(file).Decode(genesis); err != nil {
194 log.Fatalf("invalid genesis file: %v", err)
195 }
196 }
197 // Intialize database.
198 _, node := newConfigNode(ctx)
199 name := configs.DatabaseName
200 chaindb, err := node.OpenDatabase(name, 0, 0)
201 if err != nil {
202 log.Fatalf("Failed to open database: %v", err)
203 }
204 _, hash, err := core.SetupGenesisBlock(chaindb, genesis)
205 if err != nil {
206 log.Fatalf("Failed to write genesis block: %v", err)
207 }
208 log.Info("Successfully wrote genesis state", "database", name, "hash", hash.Hex())
209 return nil
210}
211
212func cleanDB(ctx *cli.Context) {
213 _, node := newConfigNode(ctx)

Callers

nothing calls this directly

Calls 6

newConfigNodeFunction · 0.85
InfoMethod · 0.65
OpenMethod · 0.65
CloseMethod · 0.65
StringMethod · 0.45
OpenDatabaseMethod · 0.45

Tested by

no test coverage detected