美文网首页区块链研习社区块链技术
EOS开发实战 - 如何创建和管理钱包

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

作者: 链播学院 | 来源:发表于2018-07-16 15:49 被阅读232次

    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的钱包,并且导入密钥对。一个钱包可以导入多组密钥对,就像现实生活中的钱包可以存放多张银行卡一样。它们的关系如下图,下一讲我们将讲述账户的创建以及账户和钱包的关系。


    相关文章

      网友评论

      本文标题:EOS开发实战 - 如何创建和管理钱包

      本文链接:https://www.haomeiwen.com/subject/cgsbpftx.html