github.com/prysmaticlabs/prysm@v1.4.4/validator/accounts/wallet_edit.go (about) 1 package accounts 2 3 import ( 4 "fmt" 5 6 "github.com/pkg/errors" 7 "github.com/prysmaticlabs/prysm/validator/accounts/prompt" 8 "github.com/prysmaticlabs/prysm/validator/accounts/wallet" 9 "github.com/prysmaticlabs/prysm/validator/keymanager" 10 "github.com/prysmaticlabs/prysm/validator/keymanager/remote" 11 "github.com/urfave/cli/v2" 12 ) 13 14 // EditWalletConfigurationCli for a user's on-disk wallet, being able to change 15 // things such as remote gRPC credentials for remote signing, derivation paths 16 // for HD wallets, and more. 17 func EditWalletConfigurationCli(cliCtx *cli.Context) error { 18 w, err := wallet.OpenWalletOrElseCli(cliCtx, func(cliCtx *cli.Context) (*wallet.Wallet, error) { 19 return nil, wallet.ErrNoWalletFound 20 }) 21 if err != nil { 22 return errors.Wrap(err, "could not open wallet") 23 } 24 switch w.KeymanagerKind() { 25 case keymanager.Imported: 26 return errors.New("not possible to edit imported keymanager configuration") 27 case keymanager.Derived: 28 return errors.New("derived keymanager is not yet supported") 29 case keymanager.Remote: 30 enc, err := w.ReadKeymanagerConfigFromDisk(cliCtx.Context) 31 if err != nil { 32 return errors.Wrap(err, "could not read config") 33 } 34 opts, err := remote.UnmarshalOptionsFile(enc) 35 if err != nil { 36 return errors.Wrap(err, "could not unmarshal config") 37 } 38 log.Info("Current configuration") 39 // Prints the current configuration to stdout. 40 fmt.Println(opts) 41 newCfg, err := prompt.InputRemoteKeymanagerConfig(cliCtx) 42 if err != nil { 43 return errors.Wrap(err, "could not get keymanager config") 44 } 45 encodedCfg, err := remote.MarshalOptionsFile(cliCtx.Context, newCfg) 46 if err != nil { 47 return errors.Wrap(err, "could not marshal config file") 48 } 49 if err := w.WriteKeymanagerConfigToDisk(cliCtx.Context, encodedCfg); err != nil { 50 return errors.Wrap(err, "could not write config to disk") 51 } 52 default: 53 return fmt.Errorf(errKeymanagerNotSupported, w.KeymanagerKind()) 54 } 55 return nil 56 }