|
|
|
@ -32,40 +32,32 @@ import ( |
|
|
|
|
var ( |
|
|
|
|
walletCommand = cli.Command{ |
|
|
|
|
Name: "wallet", |
|
|
|
|
Usage: "Manage Ethereum presale wallets", |
|
|
|
|
ArgsUsage: "", |
|
|
|
|
Usage: "Import Ethereum presale wallets", |
|
|
|
|
Action: utils.MigrateFlags(importWallet), |
|
|
|
|
Category: "ACCOUNT COMMANDS", |
|
|
|
|
Flags: []cli.Flag{ |
|
|
|
|
utils.DataDirFlag, |
|
|
|
|
utils.KeyStoreDirFlag, |
|
|
|
|
utils.PasswordFileFlag, |
|
|
|
|
utils.LightKDFFlag, |
|
|
|
|
}, |
|
|
|
|
Description: ` |
|
|
|
|
geth wallet import /path/to/my/presale.wallet |
|
|
|
|
geth wallet [options] /path/to/my/presale.wallet |
|
|
|
|
|
|
|
|
|
will prompt for your password and imports your ether presale account. |
|
|
|
|
It can be used non-interactively with the --password option taking a |
|
|
|
|
passwordfile as argument containing the wallet password in plaintext. |
|
|
|
|
will prompt for your password and imports your ether presale account. |
|
|
|
|
It can be used non-interactively with the --password option taking a |
|
|
|
|
passwordfile as argument containing the wallet password in plaintext. |
|
|
|
|
|
|
|
|
|
`, |
|
|
|
|
Subcommands: []cli.Command{ |
|
|
|
|
{ |
|
|
|
|
Action: importWallet, |
|
|
|
|
Name: "import", |
|
|
|
|
Usage: "Import Ethereum presale wallet", |
|
|
|
|
ArgsUsage: "<keyFile>", |
|
|
|
|
Description: ` |
|
|
|
|
TODO: Please write this |
|
|
|
|
`, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
`, |
|
|
|
|
} |
|
|
|
|
accountCommand = cli.Command{ |
|
|
|
|
Action: accountList, |
|
|
|
|
Name: "account", |
|
|
|
|
Usage: "Manage accounts", |
|
|
|
|
ArgsUsage: "", |
|
|
|
|
Category: "ACCOUNT COMMANDS", |
|
|
|
|
Description: ` |
|
|
|
|
Manage accounts lets you create new accounts, list all existing accounts, |
|
|
|
|
import a private key into a new account. |
|
|
|
|
|
|
|
|
|
' help' shows a list of subcommands or help for one subcommand. |
|
|
|
|
Manage accounts, list all existing accounts, import a private key into a new |
|
|
|
|
account, create a new account or update an existing account. |
|
|
|
|
|
|
|
|
|
It supports interactive mode, when you are prompted for password as well as |
|
|
|
|
non-interactive mode where passwords are supplied via a given password file. |
|
|
|
@ -80,36 +72,34 @@ Note that exporting your key in unencrypted format is NOT supported. |
|
|
|
|
Keys are stored under <DATADIR>/keystore. |
|
|
|
|
It is safe to transfer the entire directory or the individual keys therein |
|
|
|
|
between ethereum nodes by simply copying. |
|
|
|
|
Make sure you backup your keys regularly. |
|
|
|
|
|
|
|
|
|
In order to use your account to send transactions, you need to unlock them using |
|
|
|
|
the '--unlock' option. The argument is a space separated list of addresses or |
|
|
|
|
indexes. If used non-interactively with a passwordfile, the file should contain |
|
|
|
|
the respective passwords one per line. If you unlock n accounts and the password |
|
|
|
|
file contains less than n entries, then the last password is meant to apply to |
|
|
|
|
all remaining accounts. |
|
|
|
|
|
|
|
|
|
And finally. DO NOT FORGET YOUR PASSWORD. |
|
|
|
|
`, |
|
|
|
|
Make sure you backup your keys regularly.`, |
|
|
|
|
Subcommands: []cli.Command{ |
|
|
|
|
{ |
|
|
|
|
Action: accountList, |
|
|
|
|
Name: "list", |
|
|
|
|
Usage: "Print account addresses", |
|
|
|
|
ArgsUsage: " ", |
|
|
|
|
Usage: "Print summary of existing accounts", |
|
|
|
|
Action: utils.MigrateFlags(accountList), |
|
|
|
|
Flags: []cli.Flag{ |
|
|
|
|
utils.DataDirFlag, |
|
|
|
|
utils.KeyStoreDirFlag, |
|
|
|
|
}, |
|
|
|
|
Description: ` |
|
|
|
|
TODO: Please write this |
|
|
|
|
`, |
|
|
|
|
Print a short summary of all accounts`, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
Action: accountCreate, |
|
|
|
|
Name: "new", |
|
|
|
|
Usage: "Create a new account", |
|
|
|
|
ArgsUsage: " ", |
|
|
|
|
Action: utils.MigrateFlags(accountCreate), |
|
|
|
|
Flags: []cli.Flag{ |
|
|
|
|
utils.DataDirFlag, |
|
|
|
|
utils.KeyStoreDirFlag, |
|
|
|
|
utils.PasswordFileFlag, |
|
|
|
|
utils.LightKDFFlag, |
|
|
|
|
}, |
|
|
|
|
Description: ` |
|
|
|
|
geth account new |
|
|
|
|
|
|
|
|
|
Creates a new account. Prints the address. |
|
|
|
|
Creates a new account and prints the address. |
|
|
|
|
|
|
|
|
|
The account is saved in encrypted format, you are prompted for a passphrase. |
|
|
|
|
|
|
|
|
@ -117,17 +107,20 @@ You must remember this passphrase to unlock your account in the future. |
|
|
|
|
|
|
|
|
|
For non-interactive use the passphrase can be specified with the --password flag: |
|
|
|
|
|
|
|
|
|
geth --password <passwordfile> account new |
|
|
|
|
|
|
|
|
|
Note, this is meant to be used for testing only, it is a bad idea to save your |
|
|
|
|
password to file or expose in any other way. |
|
|
|
|
`, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
Action: accountUpdate, |
|
|
|
|
Name: "update", |
|
|
|
|
Usage: "Update an existing account", |
|
|
|
|
Action: utils.MigrateFlags(accountUpdate), |
|
|
|
|
ArgsUsage: "<address>", |
|
|
|
|
Flags: []cli.Flag{ |
|
|
|
|
utils.DataDirFlag, |
|
|
|
|
utils.KeyStoreDirFlag, |
|
|
|
|
utils.LightKDFFlag, |
|
|
|
|
}, |
|
|
|
|
Description: ` |
|
|
|
|
geth account update <address> |
|
|
|
|
|
|
|
|
@ -141,16 +134,22 @@ format to the newest format or change the password for an account. |
|
|
|
|
|
|
|
|
|
For non-interactive use the passphrase can be specified with the --password flag: |
|
|
|
|
|
|
|
|
|
geth --password <passwordfile> account update <address> |
|
|
|
|
geth account update [options] <address> |
|
|
|
|
|
|
|
|
|
Since only one password can be given, only format update can be performed, |
|
|
|
|
changing your password is only possible interactively. |
|
|
|
|
`, |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
Action: accountImport, |
|
|
|
|
Name: "import", |
|
|
|
|
Usage: "Import a private key into a new account", |
|
|
|
|
Action: utils.MigrateFlags(accountImport), |
|
|
|
|
Flags: []cli.Flag{ |
|
|
|
|
utils.DataDirFlag, |
|
|
|
|
utils.KeyStoreDirFlag, |
|
|
|
|
utils.PasswordFileFlag, |
|
|
|
|
utils.LightKDFFlag, |
|
|
|
|
}, |
|
|
|
|
ArgsUsage: "<keyFile>", |
|
|
|
|
Description: ` |
|
|
|
|
geth account import <keyfile> |
|
|
|
@ -166,7 +165,7 @@ You must remember this passphrase to unlock your account in the future. |
|
|
|
|
|
|
|
|
|
For non-interactive use the passphrase can be specified with the -password flag: |
|
|
|
|
|
|
|
|
|
geth --password <passwordfile> account import <keyfile> |
|
|
|
|
geth account import [options] <keyfile> |
|
|
|
|
|
|
|
|
|
Note: |
|
|
|
|
As you can directly copy your encrypted accounts to another ethereum instance, |
|
|
|
@ -298,11 +297,13 @@ func accountUpdate(ctx *cli.Context) error { |
|
|
|
|
stack, _ := makeConfigNode(ctx) |
|
|
|
|
ks := stack.AccountManager().Backends(keystore.KeyStoreType)[0].(*keystore.KeyStore) |
|
|
|
|
|
|
|
|
|
account, oldPassword := unlockAccount(ctx, ks, ctx.Args().First(), 0, nil) |
|
|
|
|
for _, addr := range ctx.Args() { |
|
|
|
|
account, oldPassword := unlockAccount(ctx, ks, addr, 0, nil) |
|
|
|
|
newPassword := getPassPhrase("Please give a new password. Do not forget this password.", true, 0, nil) |
|
|
|
|
if err := ks.Update(account, oldPassword, newPassword); err != nil { |
|
|
|
|
utils.Fatalf("Could not update the account: %v", err) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|