package cmd import ( "crypto/ecdsa" "encoding/hex" "fmt" "io/ioutil" "github.com/arnaucube/slowlorisdb/config" "github.com/arnaucube/slowlorisdb/core" "github.com/arnaucube/slowlorisdb/db" "github.com/arnaucube/slowlorisdb/node" log "github.com/sirupsen/logrus" "github.com/urfave/cli" ) var Commands = []cli.Command{ { Name: "create", Aliases: []string{}, Usage: "create the node", Action: cmdCreate, }, { Name: "start", Aliases: []string{}, Usage: "start the node", Action: cmdStart, }, } // creates the node, this needs to be executed for first time func cmdCreate(c *cli.Context) error { log.Info("creating new keys of the node") privK, err := core.NewKey() if err != nil { return err } fmt.Println(privK) return nil } func cmdStart(c *cli.Context) error { conf, err := config.MustRead(c) if err != nil { return err } dir, err := ioutil.TempDir("", conf.DbPath) if err != nil { return err } db, err := db.New(dir) if err != nil { return err } // parse AuthNodes from the config file var authNodes []*ecdsa.PublicKey for _, authNode := range conf.AuthNodes { packedPubK, err := hex.DecodeString(authNode) if err != nil { return err } pubK := core.UnpackPubK(packedPubK) authNodes = append(authNodes, pubK) } bc := core.NewPoABlockchain(db, authNodes) // TODO parse privK from path in the config file privK, err := core.NewKey() node, err := node.NewNode(privK, bc, true) if err != nil { return err } err = node.Start() if err != nil { return err } return nil }