目前有两种钱包可供选择:
* 可以从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
热门工具 换一换