github.com/unicornultrafoundation/go-u2u@v1.0.0-rc1.0.20240205080301-e74a83d3fadc/cmd/u2u/launcher/validator.go (about) 1 package launcher 2 3 import ( 4 "github.com/pkg/errors" 5 cli "gopkg.in/urfave/cli.v1" 6 7 "github.com/unicornultrafoundation/go-helios/native/idx" 8 9 "github.com/unicornultrafoundation/go-u2u/gossip/emitter" 10 "github.com/unicornultrafoundation/go-u2u/integration/makefakegenesis" 11 "github.com/unicornultrafoundation/go-u2u/native/validatorpk" 12 ) 13 14 var validatorIDFlag = cli.UintFlag{ 15 Name: "validator.id", 16 Usage: "ID of a validator to create events from", 17 Value: 0, 18 } 19 20 var validatorPubkeyFlag = cli.StringFlag{ 21 Name: "validator.pubkey", 22 Usage: "Public key of a validator to create events from", 23 Value: "", 24 } 25 26 var validatorPasswordFlag = cli.StringFlag{ 27 Name: "validator.password", 28 Usage: "Password to unlock validator private key", 29 Value: "", 30 } 31 32 // setValidatorID retrieves the validator ID either from the directly specified 33 // command line flags or from the keystore if CLI indexed. 34 func setValidator(ctx *cli.Context, cfg *emitter.Config) error { 35 // Extract the current validator address, new flag overriding legacy one 36 if ctx.GlobalIsSet(FakeNetFlag.Name) { 37 id, num, err := parseFakeGen(ctx.GlobalString(FakeNetFlag.Name)) 38 if err != nil { 39 return err 40 } 41 42 if ctx.GlobalIsSet(validatorIDFlag.Name) && id != 0 { 43 return errors.New("specified validator ID with both --fakenet and --validator.id") 44 } 45 46 cfg.Validator.ID = id 47 validators := makefakegenesis.GetFakeValidators(num) 48 cfg.Validator.PubKey = validators.Map()[cfg.Validator.ID].PubKey 49 } 50 51 if ctx.GlobalIsSet(validatorIDFlag.Name) { 52 cfg.Validator.ID = idx.ValidatorID(ctx.GlobalInt(validatorIDFlag.Name)) 53 } 54 55 if ctx.GlobalIsSet(validatorPubkeyFlag.Name) { 56 pk, err := validatorpk.FromString(ctx.GlobalString(validatorPubkeyFlag.Name)) 57 if err != nil { 58 return err 59 } 60 cfg.Validator.PubKey = pk 61 } 62 63 if cfg.Validator.ID != 0 && cfg.Validator.PubKey.Empty() { 64 return errors.New("validator public key is not set") 65 } 66 return nil 67 }