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 }