以太坊开发文档06 - 以太坊基本命令操作

管理帐户

警告 请记住您的密码。

如果您丢失了用于加密帐户的密码,则无法访问该帐户。重复:没有密码的情况下访问您的帐户是不可能的,并且在这里没有忘记我的密码选项。别忘记了。

注意:密钥文件名称命名约定已更改0.9.36本文件旨在反映前沿版本所用帐户的准确信息。

以太坊CLI geth通过account命令提供帐户管理

account command [arguments...]

管理帐户可让您创建新帐户,列出所有现有帐户,将私钥导入新帐户,迁移至最新密钥格式并更改密码。

当系统提示您输入密码时,它支持交互模式,也支持通过给定密码文件提供密码的非交互模式。非交互模式仅用于在测试网络或已知的安全环境中进行脚本使用。

确保您记住您在创建新帐户时(使用新的,更新或导入)提供的密码。没有它,你无法解锁你的帐户。

请注意,不支持以非加密格式导出您的密钥。

密钥存储在<DATADIR>/keystore确保定期备份你的密钥!有关更多信息,请参阅DATADIR备份和还原密钥文件的最新格式是:UTC--<created_at UTC ISO8601>-<address hex>上市时的账户顺序是字典,但是作为时间戳格式的结果,它实际上是创建顺序

在以太节点之间传送整个目录或其中的个别密钥是安全的。请注意,如果您将密钥从不同节点添加到您的节点,则帐户顺序可能会更改。因此,请确保您不要依赖或更改脚本或代码片段中的索引。

最后。不要忘记你的密码

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控制台进行管理

例子

交互式使用

创建一个帐户
$ 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 <passwordfile> account new

请注意,这仅用于测试,将密码保存到文件或以任何其他方式公开是一个不好的主意。

通过导入私钥创建一个帐户

    geth account import <keyfile>

从中导入未加密的私钥<keyfile>并创建一个新帐户并打印该地址。

假设密钥文件包含一个未加密的私钥,作为编码为十六进制的规范EC原始字节。

帐户以加密格式保存,系统将提示您输入密码。

您必须记住此密码才能在未来解锁您的帐户。

对于非交互式使用,可以用--password标志指定密码

geth --password <passwordfile> account import <keyfile>

注意:由于您可以直接将加密帐户复制到另一个以太坊实例,因此在节点间传输帐户时不需要此导入/导出机制。

警告:当您将密钥复制到现有节点的密钥库中时,您习惯使用的帐户顺序可能会发生变化。因此,请确保您不要依赖帐户顺序,或者重新检查并更新脚本中使用的索引。

警告: 如果您将密码标记与密码文件一起使用,则最好确保文件不可读,甚至可以列出除了您以外的任何人。您可以通

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 <passwordfile> 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

用控制台发送一个简单的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


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值