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

* 可以从nodeos服务器启动的一个插件。
* 一个独立的守护程序,可以独立于nodeos服务器在单独的服务器上运行。一般开发人员多会用这个选项。
注意:启动nodeos服务器时不要提供以下内容:-plugin eosio :: wallet_api_plugin

<>

重要的概念

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

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

<http://blog.hubwiz.com/2018/08/24/EOS-Wallets/NoCoins.png>

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

<http://blog.hubwiz.com/2018/08/24/EOS-Wallets/keosd.png>

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

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信