2. 管理账户

优质
小牛编辑
137浏览
2023-12-01

警告:记住你的密码

假如你忘记了加密账户的密码,那你将无法使用账户 重申:没有密码就无法使用账户,没有“忘记密码”的选项,不要忘记这点

注意:在0.9.36中,密钥文件命名约定已更改。本文档旨在反映Frontier release版本所使用帐户的准确信息。

ethereum CLI通过account子命令提供了账户管理功能

account command [arguments...]

管理帐户功能可让您创建新帐户,列出所有现有帐户,将私钥导入新帐户,迁移到最新密钥格式并更改密码。 当您被提示输入密码,或者处于使用给定的密码文件提供密码的非交互模式时,它支持交互模式。非交互模式仅用于在测试网络或已知安全环境中进行脚本化使用。

确保您记住创建新帐户(使用新的,更新或导入)时所使用的密码。没有它,您无法解锁您的帐户。 请注意, 支持以未加密格式导出密钥。

密钥存储在<DATADIR>/keystore。确保你经常备份你的钥匙!有关详细信息,请参阅DATADIR备份和还原。关键文件的最新格式是:UTC--<created_at UTC ISO8601>-<address hex>。列出账户时的顺序是按字母排序,但是作为时间戳格式的结果,账户实际上是创建顺序排序的。 可以安全地在ethereum节点之间传输整个目录或其中的各个键。请注意,如果您从其他节点向您的节点添加密钥,则帐户顺序可能会改变。因此,请确保您不要依赖或更改脚本或代码段中的索引。

最后重申:不要忘记你的密码

SUBCOMMANDS:

    list    print account addresses
    new     create a new account
    update  update an existing account
    import  import a private key into a new account

你可以通过geth account help <subcommand>获取更多子命令信息,你也可以通过Javascript Console管理账户。

交互使用

创建一个账户

$ geth account new
Your new account is locked with a password. Please give a password. Do not forget this password.
Passphrase:
Repeat Passphrase:
Address: {168bc315a2ee09042d83d7c5811b533620531f67}

列出账户

$ geth account list
Account #0: {a94f5374fce5edbc8e2a8697c15331677e6ebf0b}
Account #1: {c385233b188811c9f355d4caec14df86d6248235}
Account #2: {7f444580bfef4b9bc7e14eb7fb2a029336b07c9d}

导入私钥

$ geth --datadir /someOtherEthDataDir  account import ./key.prv
The new account will be encrypted with a passphrase.
Please enter a passphrase now.
Passphrase:
Repeat Passphrase:
Address: {7f444580bfef4b9bc7e14eb7fb2a029336b07c9d}

账户升级

$ geth account update a94f5374fce5edbc8e2a8697c15331677e6ebf0b
Unlocking account a94f5374fce5edbc8e2a8697c15331677e6ebf0b | Attempt 1/3
Passphrase:
0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b
Account 'a94f5374fce5edbc8e2a8697c15331677e6ebf0b' unlocked.
Please give a new password. Do not forget this password.
Passphrase:
Repeat Passphrase:
0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b

非交互使用

你提供一个明文密码文件作为--password标志的参数。文件中的数据由密码的原始字符组成,后跟单个换行符。

注意:不建议直接提供密码作为命令行的一部分,但您可以随时使用shell这样取巧的方法来绕过此限制。

$ geth --password /path/to/password account new

$ geth --password /path/to/password account update b0047c606f3af7392e073ed13253f8f4710b08b6

$ geth account list

$ geth --datadir /someOtherEthDataDir --password /path/to/anotherpassword account import ./key.prv