区块链开发区块链研习社

EOS开发入门2 -- 钱包与账户

2018-05-13  本文已影响77人  luohuayong

在开始所有之前,先确定已经完成了上一篇文章的内容。

EOS开发入门1 -- EOS环境搭建

并且保证nodeos在运行中。

创建一个默认钱包

$ cleos wallet create
Creating wallet: default
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5JuBXoXJ8JHiCTXfXcYuJabjF9f9UNNqHJjqDVY7igVffe3pXub"

通过cleos命令创建了一个默认的钱包。并返回给我们这个钱包的秘钥。每台机器生成的秘钥跟这个并不一样。记录下这个秘钥,之后会经常用到。钱包创建完成后默认是锁定状态的,现在我们需要解锁钱包。

解锁钱包

$ cleos wallet unlock --password PW5JuBXoXJ8JHiCTXfXcYuJabjF9f9UNNqHJjqDVY7igVffe3pXub
Unlocked: default

使用刚刚给出的秘钥我们已经解锁了默认的钱包。

更安全的解锁钱包方式

上面解锁钱包的方式,会将秘钥记录到bash的历史中,存在安全隐患。更安全的解锁方式是使用交互方式,按照提示输入密码,其实这里也可以粘贴密码。

$ cleos wallet unlock
password:

锁定钱包

出于安全考虑,在不使用钱包时,锁定钱包。

$ cleos wallet lock
Locked: default

加载Bios合约

eosio.bios是eos自带的一个合约,存在于源文件下的/build/contracts/eosio.bios,下面的命令假定当前目录位于源文件的根目录,当然也可以使用绝对路径加载这个合约 ${EOSIO_SOURCE}/build/contracts/eosio.bios

$ cleos set contract eosio build/contracts/eosio.bios -p eosio
Reading WAST...
Assembling WASM...
Publishing contract...
executed transaction: 414cf0dc7740d22474992779b2416b0eabdbc91522c16521307dd682051af083  4068 bytes  10000 cycles
#         eosio <= eosio::setcode               {"account":"eosio","vmtype":0,"vmversion":0,"code":"0061736d0100000001ab011960037f7e7f0060057f7e7e7e...
#         eosio <= eosio::setabi                {"account":"eosio","abi":{"types":[],"structs":[{"name":"set_account_limits","base":"","fields":[{"n...

这个命令的执行结果是使用两个动作(action)生成了一个交易(transaction),这两个动作是:eosio::setcode和eosio::setabi

稍后我们会看到动作可以被多个合约处理。

这个命令的最后一个参数 -p eosio 的含义是使用eosio账户的私钥对操作进行签名。

创建账户

现在我们已经创建了基本的系统合约,接下来我们来创建自己的账户。我们将创建两个账户:user和tester,每个账户都需要一个秘钥与其关联,这个例子中,我们将同一个秘钥关联到两个账户。首先生成一个秘钥

$ cleos create key
Private key: 5Jmsawgsp1tQ3GD6JyGCwy1dcvqKZgX6ugMVMdjirx85iv5VyPR
Public key: EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4

我们看到生成了一个秘钥对,包括一个私钥和一个公钥。然后将这个秘钥对导入到我们的钱包:

$ cleos wallet import 5Jmsawgsp1tQ3GD6JyGCwy1dcvqKZgX6ugMVMdjirx85iv5VyPR
imported private key for: EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4

确保导入的秘钥是你自己实际生成的秘钥,而不是这里的。

创建两个用户帐号

接下来,我们将创建两个帐户user和tester,并使用我们上面创建的密钥。

$ cleos create account eosio user EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4 EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4
...

$ cleos create account eosio tester EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4 EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4
...

cleos create 命令需要两个秘钥,一个用于OwnerKey,另一个用于ActiveKey,在本例中,我们给它两个相同的秘钥。

查看帐号

因为已经加载了 eosio::history_api_plugin 插件,我们可以使用命令查看秘钥控制的帐号。
插件可以通过两种方式加载,命令参数方式和配置文件方式,我们这里是使用的配置文件加载的,所以在命令参数中并没有看到。

$ cleos get accounts EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4
{
  "account_names": [
    "tester",
    "user"
  ]
}
上一篇下一篇

猜你喜欢

热点阅读