github.com/prysmaticlabs/prysm@v1.4.4/cmd/validator/accounts/accounts.go (about)

     1  package accounts
     2  
     3  import (
     4  	"os"
     5  
     6  	"github.com/prysmaticlabs/prysm/cmd/validator/flags"
     7  	"github.com/prysmaticlabs/prysm/shared/cmd"
     8  	"github.com/prysmaticlabs/prysm/shared/featureconfig"
     9  	"github.com/prysmaticlabs/prysm/shared/tos"
    10  	"github.com/prysmaticlabs/prysm/validator/accounts"
    11  	"github.com/sirupsen/logrus"
    12  	"github.com/urfave/cli/v2"
    13  )
    14  
    15  var log = logrus.WithField("prefix", "accounts")
    16  
    17  // Commands for managing Prysm validator accounts.
    18  var Commands = &cli.Command{
    19  	Name:     "accounts",
    20  	Category: "accounts",
    21  	Usage:    "defines commands for interacting with Ethereum validator accounts",
    22  	Subcommands: []*cli.Command{
    23  		{
    24  			Name:        "delete",
    25  			Description: `deletes the selected accounts from a users wallet.`,
    26  			Flags: cmd.WrapFlags([]cli.Flag{
    27  				flags.WalletDirFlag,
    28  				flags.WalletPasswordFileFlag,
    29  				flags.DeletePublicKeysFlag,
    30  				featureconfig.Mainnet,
    31  				featureconfig.PyrmontTestnet,
    32  				featureconfig.ToledoTestnet,
    33  				featureconfig.PraterTestnet,
    34  				cmd.AcceptTosFlag,
    35  			}),
    36  			Before: func(cliCtx *cli.Context) error {
    37  				if err := cmd.LoadFlagsFromConfig(cliCtx, cliCtx.Command.Flags); err != nil {
    38  					return err
    39  				}
    40  				return tos.VerifyTosAcceptedOrPrompt(cliCtx)
    41  			},
    42  			Action: func(cliCtx *cli.Context) error {
    43  				featureconfig.ConfigureValidator(cliCtx)
    44  				if err := accounts.DeleteAccountCli(cliCtx); err != nil {
    45  					log.Fatalf("Could not delete account: %v", err)
    46  				}
    47  				return nil
    48  			},
    49  		},
    50  		{
    51  			Name:        "list",
    52  			Description: "Lists all validator accounts in a user's wallet directory",
    53  			Flags: cmd.WrapFlags([]cli.Flag{
    54  				flags.WalletDirFlag,
    55  				flags.WalletPasswordFileFlag,
    56  				flags.ShowDepositDataFlag,
    57  				flags.ShowPrivateKeysFlag,
    58  				flags.ListValidatorIndices,
    59  				flags.BeaconRPCProviderFlag,
    60  				cmd.GrpcMaxCallRecvMsgSizeFlag,
    61  				flags.CertFlag,
    62  				flags.GrpcHeadersFlag,
    63  				flags.GrpcRetriesFlag,
    64  				flags.GrpcRetryDelayFlag,
    65  				featureconfig.Mainnet,
    66  				featureconfig.PyrmontTestnet,
    67  				featureconfig.ToledoTestnet,
    68  				featureconfig.PraterTestnet,
    69  				cmd.AcceptTosFlag,
    70  			}),
    71  			Before: func(cliCtx *cli.Context) error {
    72  				if err := cmd.LoadFlagsFromConfig(cliCtx, cliCtx.Command.Flags); err != nil {
    73  					return err
    74  				}
    75  				return tos.VerifyTosAcceptedOrPrompt(cliCtx)
    76  			},
    77  			Action: func(cliCtx *cli.Context) error {
    78  				featureconfig.ConfigureValidator(cliCtx)
    79  				if err := accounts.ListAccountsCli(cliCtx); err != nil {
    80  					log.Fatalf("Could not list accounts: %v", err)
    81  				}
    82  				return nil
    83  			},
    84  		},
    85  		{
    86  			Name: "backup",
    87  			Description: "backup accounts into EIP-2335 compliant keystore.json files zipped into a backup.zip file " +
    88  				"at a desired output directory. Accounts to backup can also " +
    89  				"be specified programmatically via a --backup-for-public-keys flag which specifies a comma-separated " +
    90  				"list of hex string public keys",
    91  			Flags: cmd.WrapFlags([]cli.Flag{
    92  				flags.WalletDirFlag,
    93  				flags.WalletPasswordFileFlag,
    94  				flags.BackupDirFlag,
    95  				flags.BackupPublicKeysFlag,
    96  				flags.BackupPasswordFile,
    97  				featureconfig.Mainnet,
    98  				featureconfig.PyrmontTestnet,
    99  				featureconfig.ToledoTestnet,
   100  				featureconfig.PraterTestnet,
   101  				cmd.AcceptTosFlag,
   102  			}),
   103  			Before: func(cliCtx *cli.Context) error {
   104  				if err := cmd.LoadFlagsFromConfig(cliCtx, cliCtx.Command.Flags); err != nil {
   105  					return err
   106  				}
   107  				return tos.VerifyTosAcceptedOrPrompt(cliCtx)
   108  			},
   109  			Action: func(cliCtx *cli.Context) error {
   110  				featureconfig.ConfigureValidator(cliCtx)
   111  				if err := accounts.BackupAccountsCli(cliCtx); err != nil {
   112  					log.Fatalf("Could not backup accounts: %v", err)
   113  				}
   114  				return nil
   115  			},
   116  		},
   117  		{
   118  			Name:        "import",
   119  			Description: `imports Ethereum validator accounts stored in EIP-2335 keystore.json files from an external directory`,
   120  			Flags: cmd.WrapFlags([]cli.Flag{
   121  				flags.WalletDirFlag,
   122  				flags.KeysDirFlag,
   123  				flags.WalletPasswordFileFlag,
   124  				flags.AccountPasswordFileFlag,
   125  				flags.ImportPrivateKeyFileFlag,
   126  				featureconfig.Mainnet,
   127  				featureconfig.PyrmontTestnet,
   128  				featureconfig.ToledoTestnet,
   129  				featureconfig.PraterTestnet,
   130  				cmd.AcceptTosFlag,
   131  			}),
   132  			Before: func(cliCtx *cli.Context) error {
   133  				if err := cmd.LoadFlagsFromConfig(cliCtx, cliCtx.Command.Flags); err != nil {
   134  					return err
   135  				}
   136  				return tos.VerifyTosAcceptedOrPrompt(cliCtx)
   137  			},
   138  			Action: func(cliCtx *cli.Context) error {
   139  				featureconfig.ConfigureValidator(cliCtx)
   140  				if err := accounts.ImportAccountsCli(cliCtx); err != nil {
   141  					log.Fatalf("Could not import accounts: %v", err)
   142  				}
   143  				return nil
   144  			},
   145  		},
   146  		{
   147  			Name:        "voluntary-exit",
   148  			Description: "Performs a voluntary exit on selected accounts",
   149  			Flags: cmd.WrapFlags([]cli.Flag{
   150  				flags.WalletDirFlag,
   151  				flags.WalletPasswordFileFlag,
   152  				flags.AccountPasswordFileFlag,
   153  				flags.VoluntaryExitPublicKeysFlag,
   154  				flags.BeaconRPCProviderFlag,
   155  				cmd.GrpcMaxCallRecvMsgSizeFlag,
   156  				flags.CertFlag,
   157  				flags.GrpcHeadersFlag,
   158  				flags.GrpcRetriesFlag,
   159  				flags.GrpcRetryDelayFlag,
   160  				flags.ExitAllFlag,
   161  				featureconfig.Mainnet,
   162  				featureconfig.PyrmontTestnet,
   163  				featureconfig.ToledoTestnet,
   164  				featureconfig.PraterTestnet,
   165  				cmd.AcceptTosFlag,
   166  			}),
   167  			Before: func(cliCtx *cli.Context) error {
   168  				if err := cmd.LoadFlagsFromConfig(cliCtx, cliCtx.Command.Flags); err != nil {
   169  					return err
   170  				}
   171  				return tos.VerifyTosAcceptedOrPrompt(cliCtx)
   172  			},
   173  			Action: func(cliCtx *cli.Context) error {
   174  				featureconfig.ConfigureValidator(cliCtx)
   175  				if err := accounts.ExitAccountsCli(cliCtx, os.Stdin); err != nil {
   176  					log.Fatalf("Could not perform voluntary exit: %v", err)
   177  				}
   178  				return nil
   179  			},
   180  		},
   181  	},
   182  }