EOS开发实战 - 如何创建和管理钱包

00 导言

      在上一讲,我们讲述了《怎样在不满足硬件条件的ubuntu上搭建EOS开发环境》,通过增加swap和修改脚本来达到我们的目的。在开发环境搭建好后,接下来我们干什么好呢?你可能很想赶快创建智能合约并部署运行起来。不过别急,我们还是先来学学如何创建和管理钱包。说到钱包,我默默地望了望我那干瘪的钱包,然后偷偷地跑到厕所里的哭了一阵:(

      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 命令可以创建密钥对。

$ cleos create key
Private key: 5KQmW22Ah47S4vfjFyyzsjdcpBgEf3PKqZf5rjhSsXdcPpNPygh
Public key: EOS5M8uPke7hWU12d99d8uNmTLjRJxaSgg6pu4GrEkbvy1mcb7oGS

$ cleos create key
Private key: 5J7Go6bPpGDdV3Ra5M47F9p7BFD9P3UC5vPYWFdWPMQLaNYu7Re
Public key: EOS7ttmfisjgAXNcqnryNUCcQJ1ptVyXokgQmVXacQ93jtn11ZnFV

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

07 导入私钥

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

$ cleos wallet import -n testwallet 5KQmW22Ah47S4vfjFyyzsjdcpBgEf3PKqZf5rjhSsXdcPpNPygh
imported private key for: EOS5M8uPke7hWU12d99d8uNmTLjRJxaSgg6pu4GrEkbvy1mcb7oGS

$ cleos wallet import -n testwallet 5J7Go6bPpGDdV3Ra5M47F9p7BFD9P3UC5vPYWFdWPMQLaNYu7Re
imported private key for: EOS7ttmfisjgAXNcqnryNUCcQJ1ptVyXokgQmVXacQ93jtn11ZnFV

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

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

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

$ cleos wallet keys
[
  "EOS5M8uPke7hWU12d99d8uNmTLjRJxaSgg6pu4GrEkbvy1mcb7oGS",
  "EOS7ttmfisjgAXNcqnryNUCcQJ1ptVyXokgQmVXacQ93jtn11ZnFV"
]

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

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

      使用cleos wallet private_keys列出指定钱包导入的密钥对。

$ cleos wallet private_keys -n testwallet
password: [[
    "EOS5M8uPke7hWU12d99d8uNmTLjRJxaSgg6pu4GrEkbvy1mcb7oGS",
    "5KQmW22Ah47S4vfjFyyzsjdcpBgEf3PKqZf5rjhSsXdcPpNPygh"
  ],[
    "EOS7ttmfisjgAXNcqnryNUCcQJ1ptVyXokgQmVXacQ93jtn11ZnFV",
    "5J7Go6bPpGDdV3Ra5M47F9p7BFD9P3UC5vPYWFdWPMQLaNYu7Re"
  ]
]

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

10 总结

       通过cleos wallet和相关的子命令,我们可以创建和查看EOS的钱包,并且导入密钥对。一个钱包可以导入多组密钥对,就像现实生活中的钱包可以存放多张银行卡一样。它们的关系如下图,下一讲我们将讲述账户的创建以及账户和钱包的关系。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353

推荐阅读更多精彩内容