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 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)狀態,鎖定狀態的錢包後面沒有 * 號。
錢包狀態轉換
錢包有三種狀態:lock、unlock和close。
鎖定錢包
前面的章節已經為大家展示了通過cleos wallet lock -n 錢包名
命令鎖定錢包,如果想鎖定default錢包,可以不要 -n 引數。
![](https://wangtao-1256981172.cos.ap-guangzhou.myqcloud.com/螢幕快照 2018-05-01 下午4.48.34.png)
鎖定狀態下的錢包,將不能執行任何與該錢包相關的操作,也不能使用錢包中儲存的金鑰。例如,儲存私鑰,對交易簽名等。
為了安全起見,建議使用完錢包之後就將其鎖定。
解鎖錢包
通過cleos wallet unlock -n 錢包名
命令解鎖錢包,解鎖時需要輸入錢包密碼。
關閉/開啟錢包
當客戶端keosd關閉之後,錢包也會進入關閉(close)狀態,重啟keosd後,需要通過cleos wallet open
命令重新開啟錢包。
查詢不到任何錢包資訊,說明此時所有錢包都是close狀態。
狀態轉換總結
通過下面的錢包狀態轉換圖,我們可以更好的理解錢包狀態之間的關係。
匯入金鑰
錢包的一個重要功能就是儲存金鑰(私鑰和公鑰),在對交易進行簽名時,需要用到這些金鑰。
首先,使用cleos create key
命令生成公鑰和私鑰。
通過cleos wallet import ${private_key}
命令匯入私鑰,在匯入私鑰時,錢包會自動根據私鑰得到公鑰,因此實際上錢包是同時儲存了私鑰和公鑰。