EOS開發(fā)實戰(zhàn) - 如何創(chuàng)建和管理錢包

00 導言

? ? ??在上一講,我們講述了《怎樣在不滿足硬件條件的ubuntu上搭建EOS開發(fā)環(huán)境》,通過增加swap和修改腳本來達到我們的目的。在開發(fā)環(huán)境搭建好后,接下來我們干什么好呢?你可能很想趕快創(chuàng)建智能合約并部署運行起來。不過別急,我們還是先來學學如何創(chuàng)建和管理錢包。說到錢包,我默默地望了望我那干癟的錢包,然后偷偷地跑到廁所里的哭了一陣:(

? ? ??EOS創(chuàng)建錢包需要用到相應的命令工具。實際上EOS包含了好幾種命令工具,每一種命令下又包含了若干的子命令,它們組成了一套命令工具集。這幾種命令工具如下:

命令 說明
nodeos (node + eos = nodeos) - 核心的EOSIO節(jié)點守護進程,用于啟動節(jié)點,生產(chǎn)區(qū)塊和接收API請求
cleos (cli + eos = cleos) - 客戶端命令行交互模塊,用于解析用戶命令,根據(jù)具體命令請求調(diào)用相應的接口,例如查看區(qū)塊信息、操作錢包等等
keosd (key + eos = keosd) - 錢包相關(guān)密鑰的安全管理模塊

? ? ??這幾種命令工具的關(guān)系如下圖所示:

? ? ??創(chuàng)建和管理錢包,我們需要用到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 創(chuàng)建默認錢包

? ? ??使用 cleos wallet create 可以創(chuàng)建錢包。

$ 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 創(chuàng)建指定名稱的錢包

? ? ??上面create后面什么都不跟,此時創(chuàng)建的是default錢包。我們也可以使用 -n 選項,后面跟上錢包名稱,可以創(chuàng)建指定名稱的錢包。

$ 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"

? ? ??上面創(chuàng)建了一個名稱為testwallet的錢包。

03 查看所有錢包

? ? ??使用cleos wallet list可以創(chuàng)建已經(jīng)創(chuàng)建的所有錢包。

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

? ? ??我們擁有了兩個錢包,一個是default,一個是testwallet。

04 鎖定錢包

? ? ??通過cleos wallet list可以查看已經(jīng)創(chuàng)建的所有錢包,不過細心的你可能會發(fā)現(xiàn)testwallet錢包后面帶了一個*號。這個*號表示錢包的處于解鎖狀態(tài),剛剛創(chuàng)建的錢包默認是解鎖狀態(tài)的。等過一陣子,錢包就會自動變?yōu)殒i定狀態(tài)了,例如default錢包就處于鎖定狀態(tài)。

? ? ??我們也可以使用cleos wallet lock子命令手動鎖定某個錢包。

$ cleos wallet lock -n testwallet
Locked: testwallet

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

? ? ??如果不加-n ,則表示鎖定default錢包。

05 解鎖錢包

? ? ??處于鎖定狀態(tài)的錢包,什么事都做不了,此時需要解鎖錢包。使用cleos wallet unlock可以解鎖default錢包,加上-n表示解鎖指定名稱的錢包。

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

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

06 創(chuàng)建密鑰對

? ? ??想象一下,現(xiàn)實生活中錢包是用來干嗎的?你肯定會說錢包當然是用來放錢的,沒錯,除此之處錢包也可以用來放各種各樣的銀行卡。銀行卡通過賬號和密碼進行操作。與之相類似,區(qū)塊鏈的錢包是用來管理密鑰對的。一組密鑰對相當于一張銀行卡,公鑰對應銀行卡的賬號,私鑰對應銀行卡的密碼。一個區(qū)塊鏈錢包可以管理多組密鑰對。

? ? ??使用cleos create key 命令可以創(chuàng)建密鑰對。

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

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

? ? ??上面我們創(chuàng)建了兩鑰密鑰對。

07 導入私鑰

? ? ??接下來我們可以將上面創(chuàng)建的兩組密鑰對導入同一個錢包。使用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參數(shù),表示列出default錢包導入的密鑰對。

10 總結(jié)

? ? ?? 通過cleos wallet和相關(guān)的子命令,我們可以創(chuàng)建和查看EOS的錢包,并且導入密鑰對。一個錢包可以導入多組密鑰對,就像現(xiàn)實生活中的錢包可以存放多張銀行卡一樣。它們的關(guān)系如下圖,下一講我們將講述賬戶的創(chuàng)建以及賬戶和錢包的關(guān)系。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容