EOSIO开发(五)- 钱包之实战篇
通过这篇文章,我们将学习如何通过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
命令查看已导入的**。