目前有两种钱包可供选择:
- 可以从nodeos服务器启动的一个插件。
- 一个独立的守护程序,可以独立于nodeos服务器在单独的服务器上运行。一般开发人员多会用这个选项。
注意:启动nodeos服务器时不要提供以下内容:-plugin eosio :: wallet_api_plugin
重要的概念
参与加密货币的许多人都认为钱包是存储tokens的东西。这不是一个看待钱包的正确方法。
钱包只是存储密钥对的地方。
下图说明keosd守护程序可以有多个钱包,每个钱包可以容纳多个公钥+私钥对。
1.启动keosd后台进程
我们将讨论的钱包是一个名为keosd的守护进程。
要运行钱包守护程序,只需运行可执行文件即可。请注意,如果你正在使用容器镜像并遵循容器的说明,那么你已经有一个运行钱包守护程序的容器。
cd eos/build/programs/keosd/
./keosd
默认情况下,keosd在端口8888上运行。这与nodeos应用程序默认使用的端口相同,因此如果你在同一台计算机上运行此端口,则需要设置一下以在端口8899上运行:./keosd –http-server-address=localhost:8899
如果是第一次运行服务器,则需要在默认的config文件夹中自动生成INI文件/eosio-wallet/config.ini。
2.创建一个钱包
让我们创建一个默认钱包:
$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主密钥已添加到此钱包中。不要为此感到困惑,你在这一点上所做的就是创建一个钱包——现在你有了一个密码来解锁那个钱包。
我们来看看钱包里有什么。
$cleos --wallet-url http://wallet:5555 wallet keys
[[
"EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
"5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"
]
]
如你所见,新创建的钱包中有一个密钥对。 这是唯一的初始帐户eosio的主密钥对。
不要将上述主密钥与你将来添加的密钥混淆。
3.打开钱包
可能有点令人困惑的是使用list命令时未列出没有open即打开的钱包。这是一个例子:
让我们从杀死并重新启动keosd进程开始。
$ pkill keosd
$ ./keosd
我们现在可以看到使用list命令没有返回任何内容……我的钱包去了哪里?
$cleos --wallet-url http://wallet:5555 wallet list
Wallets:
[]
问题是,钱包需要在它出现在你的钱包列表之前被open(在我看来这是eos可以改进的地方)
$cleos --wallet-url http://wallet:5555 wallet open
$cleos --wallet-url http://wallet:5555 wallet list
Wallets:
[
"default"
]
4.解锁钱包
简单地打开你的钱包对你没什么用,你现在需要解锁钱包。
$cleos --wallet-url http://wallet:5555 wallet unlock
#{You'll need to provide your password here}
password: Unlocked: default
请注意,当我现在列出钱包时,名称旁边有一个*,表示它已被解锁。
$cleos --wallet-url http://wallet:5555 wallet list
Wallets:
[
"default *"
]
请注意,当你在上面的步骤2中使用./cleos wallet create创建钱包时,你的钱包处于打开和解锁状态。
当你正在学习教程时,也许环境会发生变化,重启后也不起作用。如果你想不明白需要打开然后解锁钱包才能使用它,你就会在某些时候感到困惑。
5.添加密钥
每个帐户都拥有owner(所有者)和active(活动权限)两个权限。
因此,在大多数情况下,需要创建两个密钥,以便可以将一个密钥与每个权限相关联(稍后将详细介绍)。
下面的create key命令只是将一个密钥对打印到屏幕上。它没有存储,因此你需要将这些密钥导入钱包。
$cleos create key
Private key: 5JKrSzsuztAPvTzghi9VU4522sT49SeE3XVHbB8HsfC3ikifJRf
Public key: EOS7EzCEh94uN2k59wznzsZDcFVnpZ3wuiYvPSbb8bXDS6U7twKQF
$cleos create key
Private key: 5KgcXVKU7Lfs2iFpAP1Aqiz3SEZcmbLuh6y9Lvsi4bYcFwDUVBQ
Public key: EOS5tJQSKKeiTUZEutPo9SWUoCeovV43kWxGuW21K663frcHw7GnN
现在让我们将密钥导入我们的钱包。
$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个公钥。 我们创建钱包时添加的单个主密钥以及刚刚导入的两个密钥。
./cleos --wallet-url http://wallet:5555 wallet keys
[
"EOS5tJQSKKeiTUZEutPo9SWUoCeovV43kWxGuW21K663frcHw7GnN",
"EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
"EOS7EzCEh94uN2k59wznzsZDcFVnpZ3wuiYvPSbb8bXDS6U7twKQF"
]
我们也可以查询密钥对,这个请求会询问钱包密码。
./cleos --wallet-url http://wallet:5555 wallet private_keys
password:
[[
"EOS5tJQSKKeiTUZEutPo9SWUoCeovV43kWxGuW21K663frcHw7GnN",
"5KgcXVKU7Lfs2iFpAP1Aqiz3SEZcmbLuh6y9Lvsi4bYcFwDUVBQ"
],[
"EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
"5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"
],[
"EOS7EzCEh94uN2k59wznzsZDcFVnpZ3wuiYvPSbb8bXDS6U7twKQF",
"5JKrSzsuztAPvTzghi9VU4522sT49SeE3XVHbB8HsfC3ikifJRf"
]
]
如上所述,重要的是要跟踪你的计划使用哪个密钥用于何种目的。存储密钥时,请按照以下示例清楚地标记密钥。
通过如下标记我们的新密钥,在开发时将密钥混淆的可能性要小得多。
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守护程序允许你拥有多个钱包。
虽然这里没有详细介绍,但上述大多数命令都使用参数,允许你指定要与之交互的钱包的名称。 例:
$cleos --wallet-url http://wallet:5555 wallet create -n MyTestWallet
$cleos --wallet-url http://wallet:5555 wallet import 5KgcXVKU7Lfs2iFpAP1Aqiz3SEZcmbLuh6y9Lvsi4bYcxxxxxxxx -n MyTestWallet
大部分信息也可以在这里找到:
======================================================================
分享一个交互式的在线编程实战,EOS智能合约与DApp开发入门:
本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。
- web3j教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
- 以太坊教程,主要介绍智能合约与dapp应用开发,适合入门。
- 以太坊开发,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
- python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
- php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。
- C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和事件等。
汇智网原创翻译,转载请标明出处。这里是原文