1. 程式人生 > >EOSIO開發(五)- 錢包之實戰篇

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}命令匯入私鑰,在匯入私鑰時,錢包會自動根據私鑰得到公鑰,因此實際上錢包是同時儲存了私鑰和公鑰。

系列文章

參考資料

博文地址