第三章 更新、备份、恢复账号
3.1 更新账号
你可以把钥匙文件更新到昀新的钥匙文件格式并且/或者升级钥匙文件密码。
使用 geth 你可以在命令行用更新子命令更新现在的账号,可以使用账号地址或者索引作为参数。记住账号索引反映了创建顺序(按字母顺序排列的钥匙文件名包含了创建时间)。
geth account update b0047c606f3af7392e073ed13253f8f4710b08b6
或者
geth account update 2
例如:
$ 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标志详细说明:
geth --password <passwordfile> account update a94f5374fce5edbc8e2a8697c15331677e6ebf0bs
由于只能给出一个密码,所以只能执行格式更新,修改密码只在交互式的情况下才有可能。
注意:账号更新有个副作用就是会引起账号顺序变化。更新成功后,同一钥匙所有之前的格式/版本都会被移除!
3.2 账号备份和恢复
手动备份/恢复
要从账号发送交易,需要有账号钥匙文件。钥匙文件可以在以太坊节点数据目录的钥匙商店(keystore)子目录下找到。默认数据目录的位置与平台相关:
- Windows: C:\Users\username\%appdata%\Roaming\Ethereum\keystore
- Linux: ~/.ethereum/keystore
- Mac: ~/Library/Ethereum/keystore
要备份钥匙文件(账号),在 keystore子目录中复制单独的钥匙文件或复制整个 keystore文件夹。
要恢复钥匙文件(账号),将钥匙文件重新复制到 keystore子目录,即其原始地址。
导入未加密私钥
导入未加密私钥由 geth 支持
geth account import /path/to/<keyfile>
这个指令从纯文本文件 <keyfile> 导入未加密私钥并创建新账号和打印地址。钥匙文件被假定包含未加密私钥作为编码到十六进制的标准 EC原始字节。账号以加密的形式储存,会提示你输入密码。你需要记住密码用于以后解锁账号。
下面给出一个例子,详细说明数据目录。如果—datadir标志没有使用,新账户就会被创建在默认数据目录里,例如钥匙文件会被放在数据目录的钥匙文件子目录里。
$ 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}
对于非交互式使用,密码可以用—password标志详细说明: geth --password <passwordfile> account import <keyfile>
注意:因为你可以直接把加密账户复制到另一个以太坊事例中,在节点之间转移账号的时候就不需要这个导入/导出机制了。
警告:当你往已存在节点的 keystore里复制钥匙的时候,你习惯的账户顺序可能会改变。因此要保证你不依赖于账户顺序,否则就要进行复核并更新脚本中使用的索引。