EOS合约开发 - 钱包篇

00 导言

      如何创建和管理钱包

      EOS创建钱包需要用到相应的命令工具。实际上EOS包含了好几种命令工具,每一种命令下又包含了若干的子命令,它们组成了一套命令工具集。这几种命令工具如下:

命令说明
nodeos(node + eos = nodeos) - 核心的EOSIO节点守护进程,用于启动节点,生产区块和接收API请求
cleos(cli + eos = cleos) - 客户端命令行交互模块,用于解析用户命令,根据具体命令请求调用相应的接口,例如查看区块信息、操作钱包等等
keosd(key + eos = keosd) - 钱包相关密钥的安全管理模块

      这几种命令工具的关系如下图所示:

      创建和管理钱包,我们需要用到cleos下的子命令wallet。直接在命令行键入cleos回车,可以查看相应的子命令。

$ cleos
ERROR: RequiredError: Subcommand required
Command Line Interface to EOSIO Client
Usage: cleos [OPTIONS] SUBCOMMAND

Options:
  -h,--help                   Print this help message and exit
  -u,--url TEXT=http://localhost:8888/
                              the http/https URL where nodeos is running
  --wallet-url TEXT=http://localhost:8900/
                              the http/https URL where keosd is running
  -r,--header                 pass specific HTTP header; repeat this option to pass multiple headers
  -n,--no-verify              don't verify peer certificate when using HTTPS
  -v,--verbose                output verbose actions on error
  --print-request             print HTTP request to STDERR
  --print-response            print HTTP response to STDERR

Subcommands:
  version                     Retrieve version information
  create                      Create various items, on and off the blockchain
  get                         Retrieve various items and information from the blockchain
  set                         Set or update blockchain state
  transfer                    Transfer EOS from account to account
  net                         Interact with local p2p network connections
  wallet                      Interact with local wallet
  sign                        Sign a transaction
  push                        Push arbitrary transactions to the blockchain
  multisig                    Multisig contract commands
  system                      Send eosio.system contract action to the blockchain.

      我们在命令行中键入 cleos wallet,可以查看wallet这个子命令的子命令。

$ cleos wallet
ERROR: RequiredError: Subcommand required
Interact with local wallet
Usage: cleos wallet SUBCOMMAND

Subcommands:
  create                      Create a new wallet locally
  open                        Open an existing wallet
  lock                        Lock wallet
  lock_all                    Lock all unlocked wallets
  unlock                      Unlock wallet
  import                      Import private key into wallet
  remove_key                  Remove key from wallet
  create_key                  Create private key within wallet
  list                        List opened wallets, * = unlocked
  keys                        List of public keys from all unlocked wallets.
  private_keys                List of private keys from an unlocked wallet in wif or PVT_R1 format.
  stop                        Stop keosd (doesn't work with nodeos).

01 创建默认钱包

      使用 cleos wallet create 可以创建钱包。

$ cleos wallet create
"/usr/local/bin/keosd" launched
Creating wallet: default
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5JAxrSC6pGmpqTt2ygaRgWW7WXAex7QtwMRknkUzG1ThCfDuS39"

      “PW5JAxrSC6pGmpqTt2ygaRgWW7WXAex7QtwMRknkUzG1ThCfDuS39”是生成的钱包密码,cleos可以用来管理多个钱包,但每个钱包都通过不同的钱包密码进行保护,请一定妥善保存!

02 创建指定名称的钱包

      上面create后面什么都不跟,此时创建的是default钱包。我们也可以使用 -n 选项,后面跟上钱包名称,可以创建指定名称的钱包。

$ cleos wallet create -n testwallet
Creating wallet: testwallet
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5JJpM79Za4jymBvMfqDmtzGQxUP3imJyTe9LCVpmSsytTbwTDVA"

      上面创建了一个名称为testwallet的钱包。

03 查看所有钱包

      使用cleos wallet list可以创建已经创建的所有钱包。

$ cleos wallet list
Wallets:
[
  "default",
  "testwallet *"
]

      我们拥有了两个钱包,一个是default,一个是testwallet。

04 锁定钱包

      通过cleos wallet list可以查看已经创建的所有钱包,不过细心的你可能会发现testwallet钱包后面带了一个*号。这个*号表示钱包的处于解锁状态,刚刚创建的钱包默认是解锁状态的。等过一阵子,钱包就会自动变为锁定状态了,例如default钱包就处于锁定状态。

      我们也可以使用cleos wallet lock子命令手动锁定某个钱包。

$ cleos wallet lock -n testwallet
Locked: testwallet

$ cleos wallet list
Wallets:
[
  "default",
  "testwallet"
]

      如果不加-n ,则表示锁定default钱包。

05 解锁钱包

      处于锁定状态的钱包,什么事都做不了,此时需要解锁钱包。使用cleos wallet unlock可以解锁default钱包,加上-n表示解锁指定名称的钱包。这个过程需要输入自己钱包的私钥。

$ cleos wallet unlock -n testwallet
password: 
Unlocked: testwallet

$ cleos wallet list
Wallets:
[
  "default",
  "testwallet *"
]

06 创建密钥对

      想象一下,现实生活中钱包是用来干吗的?你肯定会说钱包当然是用来放钱的,没错,除此之处钱包也可以用来放各种各样的银行卡。银行卡通过账号和密码进行操作。与之相类似,区块链的钱包是用来管理密钥对的。一组密钥对相当于一张银行卡,公钥对应银行卡的账号,私钥对应银行卡的密码。一个区块链钱包可以管理多组密钥对。

      使用cleos create key --to-console命令可以创建密钥对。

      上面我们创建了两钥密钥对。

07 导入私钥

      接下来我们可以将上面创建的两组密钥对导入同一个钱包。使用cleos wallet import -n 指定的钱包名称 --password 钱包私钥命令,后面跟上私钥进行导入。

      不加-n选项 ,表示导入到default钱包。

08 列出所有已解锁钱包导入的公钥

      使用cleos wallet keys列出所有已解锁钱包导入的公钥

      默认列出所有钱包,不能通过-n选项来指定某个钱包。

09 列出指定钱包导入的密钥对

      使用cleos wallet private_keys列出指定钱包导入的密钥对,我这里是导入了很多钱包。

      不加-n参数,表示列出default钱包导入的密钥对。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值