通过这篇文章,我们将学习如何通过cleos命令管理钱包。
环境准备
Docker环境:
docker pull eosio/eos # 下载镜像
docker run --name keosd -t eosio/eos /opt/eosio/bin/keosd arg1 arg2 # 启动keosd
docker exec -it keosd /bin/bash # 进入keosd命令行界面
非Docker环境:
cd /path_to_eos/build/programs/cleos # 进入cleos编译目录
与钱包相关的操作全部在 cleos wallet命令中,使用介绍如下:

创建钱包
通过cleos wallet create命令创建钱包,创建成功后将会看到下面的信息:

创建了一个名称为"default"的钱包,并且钱包的密码是PW5KX8my1cqU38eZW1PhXUADLgjUxyqBv7wTYz3WDJg5mAnREyuNb。这个密码一定要好好保存,因为它是解锁钱包的唯一凭证。
如果想要创建一个自定义名称的钱包,可以使用cleos wallet create -n命令。

在上图中,创建了一个名称为testwallet的钱包。
有一点要注意的是,cleos wallet的所有子命令,如果没有指定钱包名称,则都是默认操作default钱包,否则可以通过 -n 指定被操作的钱包。
查询钱包信息
每当我们创建一个钱包时,EOSIO会在本地生成生成一个钱包文件,保存在~/eosio-wallet目录下。

进入目录之后可以看到dfault.wallet和testwallet.wallet文件,分别对应刚刚生成的两个钱包。
打开一个文件看看,里面保存的是一些加密字符串。

我们也可以通过cleos wallet list命令查询钱包信息。

查询结果显示目前有default和testwallet两个钱包,注意钱包名称后面的 * 号,它表示这两个钱包目前都是解锁(unlock)状态,锁定状态的钱包后面没有 * 号。
例如,锁定testwallet钱包后,查询钱包信息。

钱包状态转换
钱包有三种状态:lock、unlock和close。
锁定钱包
前面的章节已经为大家展示了通过cleos wallet lock -n 钱包名命令锁定钱包,如果想锁定default钱包,可以不要 -n 参数。

锁定状态下的钱包,将不能执行任何与该钱包相关的操作,也不能使用钱包中保存的密钥。例如,保存私钥,对交易签名等。
为了安全起见,建议使用完钱包之后就将其锁定。
解锁钱包
通过cleos wallet unlock -n 钱包名命令解锁钱包,解锁时需要输入钱包密码。

关闭/打开钱包
当客户端keosd关闭之后,钱包也会进入关闭(close)状态,重启keosd后,需要通过cleos wallet open命令重新打开钱包。
重启keosd后,查询钱包信息。

查询不到任何钱包信息,说明此时所有钱包都是close状态。
使用cleos wallet open打开default钱包。

打开后的钱包处于锁定状态,如果想要使用钱包,还需要做解锁操作。

状态转换总结
通过下面的钱包状态转换图,我们可以更好的理解钱包状态之间的关系。

导入密钥
钱包的一个重要功能就是保存密钥(私钥和公钥),在对交易进行签名时,需要用到这些密钥。
首先,使用cleos create key命令生成公钥和私钥。

通过cleos wallet import ${private_key}命令导入私钥,在导入私钥时,钱包会自动根据私钥得到公钥,因此实际上钱包是同时保存了私钥和公钥。

最后,通过cleos wallet keys命令查看已导入的密钥。

系列文章
EOSIO开发(四)- nodeos、keosd与cleos
参考资料
Tutorial Comprehensive Accounts and Wallets

本文介绍如何使用cleos命令管理EOSIO钱包,包括创建、查询、锁定、解锁及关闭钱包,以及导入密钥的方法。
- 钱包之实战篇&spm=1001.2101.3001.5002&articleId=80877281&d=1&t=3&u=f9c523ebbf284c38b2eeb18c324a288e)
1005

被折叠的 条评论
为什么被折叠?



