警告 请记住您的密码。
如果您丢失了用于加密帐户的密码,则无法访问该帐户。重复:没有密码的情况下访问您的帐户是不可能的,并且在这里没有忘记我的密码选项。别忘记了。
注意:密钥文件名称命名约定已更改0.9.36
。本文件旨在反映前沿版本所用帐户的准确信息。
以太坊CLI geth
通过account
子命令提供帐户管理:
account command [arguments...]
管理帐户可让您创建新帐户,列出所有现有帐户,将私钥导入新帐户,迁移至最新密钥格式并更改密码。
当系统提示您输入密码时,它支持交互模式,也支持通过给定密码文件提供密码的非交互模式。非交互模式仅用于在测试网络或已知的安全环境中进行脚本使用。
确保您记住您在创建新帐户时(使用新的,更新或导入)提供的密码。没有它,你无法解锁你的帐户。
请注意,不支持以非加密格式导出您的密钥。
密钥存储在
。确保定期备份你的密钥!有关更多信息,请参阅DATADIR备份和还原。密钥文件的最新格式是:UTC--
。上市时的账户顺序是字典,但是作为时间戳格式的结果,它实际上是创建顺序
在以太节点之间传送整个目录或其中的个别密钥是安全的。请注意,如果您将密钥从不同节点添加到您的节点,则帐户顺序可能会更改。因此,请确保您不要依赖或更改脚本或代码片段中的索引。
最后。不要忘记你的密码
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
帐户也可以通过Javascript控制台进行管理
$ 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
geth account new
创建一个新帐户并打印地址。
在控制台上,使用:
> personal.newAccount("passphrase")
该帐户以加密格式保存。您必须记住此密码才能在未来解锁您的帐户。
对于非交互式使用,可以用--password
标志指定密码:
geth --password account new
请注意,这仅用于测试,将密码保存到文件或以任何其他方式公开是一个不好的主意。
geth account import
从中导入未加密的私钥
并创建一个新帐户并打印该地址。
假设密钥文件包含一个未加密的私钥,作为编码为十六进制的规范EC原始字节。
帐户以加密格式保存,系统将提示您输入密码。
您必须记住此密码才能在未来解锁您的帐户。
对于非交互式使用,可以用--password
标志指定密码:
geth --password account import
注意:由于您可以直接将加密帐户复制到另一个以太坊实例,因此在节点间传输帐户时不需要此导入/导出机制。
警告:当您将密钥复制到现有节点的密钥库中时,您习惯使用的帐户顺序可能会发生变化。因此,请确保您不要依赖帐户顺序,或者重新检查并更新脚本中使用的索引。
警告: 如果您将密码标记与密码文件一起使用,则最好确保文件不可读,甚至可以列出除了您以外的任何人。您可以通
touch /path/to/password
chmod 700 /path/to/password
cat > /path/to/password
>I type my pass here^D
您可以update
使用以帐户地址或索引作为参数的子命令更新命令行上的现有帐户。
geth account update b0047c606f3af7392e073ed13253f8f4710b08b6
geth account update 2
帐户以加密格式保存在最新版本中,系统会提示您输入密码以解锁帐户,而另一个帐户则保存更新的文件。
因此,可以使用相同的命令将不推荐格式的帐户迁移到最新的格式,也可以更改帐户的密码。
对于非交互式使用,可以用--password
标志指定密码:
geth --password account new
由于只能输入一个密码,所以只能进行格式更新,只能以交互方式更改密码。
注意:帐户更新有一个副作用,即您的帐户顺序发生更改。
更新成功后,所有以前的格式/版本的相同的密钥将被删除!
导入您的钱包非常容易。如果你记得你的密码是:
geth wallet import /path/to/my/presale.wallet
会提示输入您的密码并导入您的以太网预售帐户。它可以非交互方式与--password选项一起使用,以明文形式将密码文件作为包含钱夹密码的参数。
从命令行调用CLI:
$ geth account list
Account #0: {d1ade25ccd3d550a7eb532ac759cac7be09c2719}
Account #1: {da65665fc30803cb1fb7e6d86691e20b1826dee0}
Account #2: {e470b1a7d2c9c5c6f03bbaa8fa20db6d404a0c32}
Account #3: {f4dd5c3794f1fd0cdc0327a83aa472609c806e99}
按创建顺序列出您的帐户。
注意:如果您从其他节点复制密钥文件,则此顺序可能会发生变化,所以请确保您不要依赖索引,也不要确定是否复制密钥,然后在脚本中检查并更新帐户索引。
当使用控制台时:
> eth.accounts
['0x407d73d8a49eeb85d32cf465507dd71d507100c1']
或通过RPC:
# Request
$ curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1} http://127.0.0.1:8545'
# Result
{
"id":1,
"jsonrpc": "2.0",
"result": ["0x407d73d8a49eeb85d32cf465507dd71d507100c1"]
}
如果您想以非交互方式使用帐户,则需要将其解锁。您可以在命令行上使用--unlock
以空格分隔的帐户列表(十六进制或索引)作为参数的选项执行此操作,以便您可以以编程方式为一个会话解锁帐户。如果您想通过RPC从Dapps使用您的帐户,这很有用。--unlock
将解锁第一个帐户。当您以编程方式创建您的账户时,这很有用,您不需要知道真正的账户来解锁它。
解锁一个帐户:
geth --password <(echo this is not secret!) account new
geth --password <(echo this is not secret!) --unlock primary --rpccorsdomain localhost --verbosity 6 2>> geth.log
您可以使用整数索引(而不是帐户地址)来引用帐户列表中的地址位置(与创建顺序相对应)
命令行允许您解锁多个帐户。在这种情况下,要解锁的参数是以空格分隔的帐户地址或索引列表。
geth --unlock "0x407d73d8a49eeb85d32cf465507dd71d507100c1 0 5 e470b1a7d2c9c5c6f03bbaa8fa20db6d404a0c32"
如果这种构造是非交互式使用的,那么您的密码文件将需要包含相关帐户的相应密码,每行一个。
在控制台上,您也可以解锁帐户(一次一个)。
personal.unlockAccount(address, "password")
请注意,我们不推荐在这里使用密码参数,因为控制台历史记录被记录下来,所以你可能会损害你的帐户。你被警告了。
要检查您的etherbase账户余额:
> web3.fromWei(eth.getBalance(eth.coinbase), "ether")
6.5
用JavaScript函数打印所有天平:
function checkAllBalances() {
var i =0;
eth.accounts.forEach( function(e){
console.log(" eth.accounts["+i+"]: " + e + " \tbalance: " + web3.fromWei(eth.getBalance(e), "ether") + " ether");
i++;
})
};
然后可以执行:
> checkAllBalances();
eth.accounts[0]: 0xd1ade25ccd3d550a7eb532ac759cac7be09c2719 balance: 63.11848 ether
eth.accounts[1]: 0xda65665fc30803cb1fb7e6d86691e20b1826dee0 balance: 0 ether
eth.accounts[2]: 0xe470b1a7d2c9c5c6f03bbaa8fa20db6d404a0c32 balance: 1 ether
eth.accounts[3]: 0xf4dd5c3794f1fd0cdc0327a83aa472609c806e99 balance: 6 ether
由于此功能在重新启动geth后将消失,因此稍后可以保存常用的功能。该loadScript功能使得这个非常容易。
首先,将checkAllBalances()
函数定义保存到计算机上的文件中。例如/Users/username/gethload.js
。然后从交互式控制台加载文件:
> loadScript("/Users/username/gethload.js")
true
该文件将修改您的JavaScript环境,就像您手动键入命令一样。随意试验!
用控制台发送一个简单的ether事务的基本方法如下:
> eth.sendTransaction({from:sender, to:receiver, value: amount})
使用内置的JavaScript,您可以轻松设置变量来保存这些值。例如:
> var sender = eth.accounts[0];
> var receiver = eth.accounts[1];
> var amount = web3.toWei(0.01, "ether")
或者,您也可以通过以下方式在一行中撰写交易:
> eth.sendTransaction({from:eth.coinbase, to:eth.accounts[1], value: web3.toWei(0.05, "ether")})
Please unlock account d1ade25ccd3d550a7eb532ac759cac7be09c2719.
Passphrase:
Account is now unlocked for this session.
'0xeeb66b211e7d9be55232ed70c2ebb1bcc5d5fd9ed01d876fac5cff45b5bf8bf4'
由此产生的交易是 0xeeb66b211e7d9be55232ed70c2ebb1bcc5d5fd9ed01d876fac5cff45b5bf8bf4
如果密码不正确,您将会收到错误信息:
error: could not unlock sender account