EOS钱包管理(创建、打开、解锁、添加密钥等)

目前有两种钱包可供选择:

  • 可以从nodeos服务器启动的一个插件。
  • 一个独立的守护程序,可以独立于nodeos服务器在单独的服务器上运行。一般开发人员多会用这个选项。

注意:启动nodeos服务器时不要提供以下内容:-plugin eosio :: wallet_api_plugin

重要的概念

参与加密货币的许多人都认为钱包是存储tokens的东西。这不是一个看待钱包的正确方法。

钱包只是存储密钥对的地方。

下图说明keosd守护程序可以有多个钱包,每个钱包可以容纳多个公钥+私钥对。

1.启动keosd后台进程

我们将讨论的钱包是一个名为keosd的守护进程。

要运行钱包守护程序,只需运行可执行文件即可。请注意,如果你正在使用容器镜像并遵循容器的说明,那么你已经有一个运行钱包守护程序的容器。

1
2
cd eos/build/programs/keosd/
./keosd

默认情况下,keosd在端口8888上运行。这与nodeos应用程序默认使用的端口相同,因此如果你在同一台计算机上运行此端口,则需要设置一下以在端口8899上运行:./keosd –http-server-address=localhost:8899

如果是第一次运行服务器,则需要在默认的config文件夹中自动生成INI文件/eosio-wallet/config.ini

2.创建一个钱包

让我们创建一个默认钱包:

1
2
3
4
5
6
$cleos --wallet-url http://wallet:5555 wallet create

Creating wallet: default
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5Kewn9L76X8Fpd....................t42S9XCw2"

将此密码保存在安全的地方,并将其标记为:DEFAULT WALLET PASSWORD

默认情况下,钱包存储在/eosio-wallet/default.wallet中。

如果你按照docker说明进行操作,并且想要通过SSH连接到钱包docker容器来浏览文件系统并查看此文件,则可以从新的命令提示符运行以下命令:docker exec -it wallet bash

请注意,EOS主密钥已添加到此钱包中。不要为此感到困惑,你在这一点上所做的就是创建一个钱包——现在你有了一个密码来解锁那个钱包。

我们来看看钱包里有什么。

1
2
3
4
5
6
$cleos --wallet-url http://wallet:5555 wallet keys
[[
"EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
"5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"
]
]

如你所见,新创建的钱包中有一个密钥对。 这是唯一的初始帐户eosio的主密钥对。

不要将上述主密钥与你将来添加的密钥混淆。

3.打开钱包

可能有点令人困惑的是使用list命令时未列出没有open即打开的钱包。这是一个例子:

让我们从杀死并重新启动keosd进程开始。

1
2
$ pkill keosd
$ ./keosd

我们现在可以看到使用list命令没有返回任何内容……我的钱包去了哪里?

1
2
3
4
$cleos --wallet-url http://wallet:5555 wallet list

Wallets:
[]

问题是,钱包需要在它出现在你的钱包列表之前被open(在我看来这是eos可以改进的地方)

1
2
3
4
5
6
7
8
$cleos --wallet-url http://wallet:5555 wallet open

$cleos --wallet-url http://wallet:5555 wallet list

Wallets:
[
"default"
]

4.解锁钱包

简单地打开你的钱包对你没什么用,你现在需要解锁钱包。

1
2
3
4
$cleos --wallet-url http://wallet:5555 wallet unlock

#{You'll need to provide your password here}
password: Unlocked: default

请注意,当我现在列出钱包时,名称旁边有一个*,表示它已被解锁。

1
2
3
4
5
$cleos --wallet-url http://wallet:5555 wallet list
Wallets:
[
"default *"
]

请注意,当你在上面的步骤2中使用./cleos wallet create创建钱包时,你的钱包处于打开和解锁状态。

当你正在学习教程时,也许环境会发生变化,重启后也不起作用。如果你想不明白需要打开然后解锁钱包才能使用它,你就会在某些时候感到困惑。

5.添加密钥

每个帐户都拥有owner(所有者)和active(活动权限)两个权限。

因此,在大多数情况下,需要创建两个密钥,以便可以将一个密钥与每个权限相关联(稍后将详细介绍)。

下面的create key命令只是将一个密钥对打印到屏幕上。它没有存储,因此你需要将这些密钥导入钱包。

1
2
3
4
5
6
7
8
$cleos create key
Private key: 5JKrSzsuztAPvTzghi9VU4522sT49SeE3XVHbB8HsfC3ikifJRf
Public key: EOS7EzCEh94uN2k59wznzsZDcFVnpZ3wuiYvPSbb8bXDS6U7twKQF


$cleos create key
Private key: 5KgcXVKU7Lfs2iFpAP1Aqiz3SEZcmbLuh6y9Lvsi4bYcFwDUVBQ
Public key: EOS5tJQSKKeiTUZEutPo9SWUoCeovV43kWxGuW21K663frcHw7GnN

现在让我们将密钥导入我们的钱包。

1
2
3
4
5
6
$cleos --wallet-url http://wallet:5555 wallet import 5JKrSzsuztAPvTzghi9VU4522sT49SeE3XVHbB8HsfC3ikifJRf
imported private key for: EOS7EzCEh94uN2k59wznzsZDcFVnpZ3wuiYvPSbb8bXDS6U7twKQF


$cleos --wallet-url http://wallet:5555 wallet import 5KgcXVKU7Lfs2iFpAP1Aqiz3SEZcmbLuh6y9Lvsi4bYcFwDUVBQ
imported private key for: EOS5tJQSKKeiTUZEutPo9SWUoCeovV43kWxGuW21K663frcHw7GnN

如果我们现在看看我们的钱包,我们可以看到3个公钥。 我们创建钱包时添加的单个主密钥以及刚刚导入的两个密钥。

1
2
3
4
5
6
./cleos --wallet-url http://wallet:5555 wallet keys
[
"EOS5tJQSKKeiTUZEutPo9SWUoCeovV43kWxGuW21K663frcHw7GnN",
"EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
"EOS7EzCEh94uN2k59wznzsZDcFVnpZ3wuiYvPSbb8bXDS6U7twKQF"
]

我们也可以查询密钥对,这个请求会询问钱包密码。

1
2
3
4
5
6
7
8
9
10
11
12
13
./cleos --wallet-url http://wallet:5555 wallet private_keys
password:
[[
"EOS5tJQSKKeiTUZEutPo9SWUoCeovV43kWxGuW21K663frcHw7GnN",
"5KgcXVKU7Lfs2iFpAP1Aqiz3SEZcmbLuh6y9Lvsi4bYcFwDUVBQ"
],[
"EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
"5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"
],[
"EOS7EzCEh94uN2k59wznzsZDcFVnpZ3wuiYvPSbb8bXDS6U7twKQF",
"5JKrSzsuztAPvTzghi9VU4522sT49SeE3XVHbB8HsfC3ikifJRf"
]
]

如上所述,重要的是要跟踪你的计划使用哪个密钥用于何种目的。存储密钥时,请按照以下示例清楚地标记密钥。

通过如下标记我们的新密钥,在开发时将密钥混淆的可能性要小得多。

1
2
3
4
5
6
7
8
eosio Public Key: "EOS5tJQSKKeiTUZEutPo9SWUoCeovV43kWxGuW21K663frcHw7GnN",
eosio Private Key: "5KgcXVKU7Lfs2iFpAP1Aqiz3SEZcmbLuh6y9Lvsi4bYcFwDUVBQ"

MyNewAccount owner Public Key: "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
MyNewAccount owner Private Key: "5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"

MyNewAccount active Public Key: "EOS7EzCEh94uN2k59wznzsZDcFVnpZ3wuiYvPSbb8bXDS6U7twKQF",
MyNewAccount active Private Key: "5JKrSzsuztAPvTzghi9VU4522sT49SeE3XVHbB8HsfC3ikifJRf"

6.使用多个钱包

keosd守护程序允许你拥有多个钱包。

虽然这里没有详细介绍,但上述大多数命令都使用参数,允许你指定要与之交互的钱包的名称。 例:

1
2
$cleos --wallet-url http://wallet:5555 wallet create -n MyTestWallet
$cleos --wallet-url http://wallet:5555 wallet import 5KgcXVKU7Lfs2iFpAP1Aqiz3SEZcmbLuh6y9Lvsi4bYcxxxxxxxx -n MyTestWallet

大部分信息也可以在这里找到:

EOS开发从智能合约开始

======================================================================

分享一个交互式的在线编程实战,EOS智能合约与DApp开发入门

EOS教程

本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。

  • web3j教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • 以太坊教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和事件等。

汇智网原创翻译,转载请标明出处。这里是原文