EOS開發(fā)入門2 -- 錢包與賬戶

在開始所有之前,先確定已經完成了上一篇文章的內容。

EOS開發(fā)入門1 -- EOS環(huán)境搭建

并且保證nodeos在運行中。

創(chuàng)建一個默認錢包

$ cleos wallet create
Creating wallet: default
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5JuBXoXJ8JHiCTXfXcYuJabjF9f9UNNqHJjqDVY7igVffe3pXub"

通過cleos命令創(chuàng)建了一個默認的錢包。并返回給我們這個錢包的秘鑰。每臺機器生成的秘鑰跟這個并不一樣。記錄下這個秘鑰,之后會經常用到。錢包創(chuàng)建完成后默認是鎖定狀態(tài)的,現(xiàn)在我們需要解鎖錢包。

解鎖錢包

$ cleos wallet unlock --password PW5JuBXoXJ8JHiCTXfXcYuJabjF9f9UNNqHJjqDVY7igVffe3pXub
Unlocked: default

使用剛剛給出的秘鑰我們已經解鎖了默認的錢包。

更安全的解鎖錢包方式

上面解鎖錢包的方式,會將秘鑰記錄到bash的歷史中,存在安全隱患。更安全的解鎖方式是使用交互方式,按照提示輸入密碼,其實這里也可以粘貼密碼。

$ cleos wallet unlock
password:

鎖定錢包

出于安全考慮,在不使用錢包時,鎖定錢包。

$ cleos wallet lock
Locked: default

加載Bios合約

eosio.bios是eos自帶的一個合約,存在于源文件下的/build/contracts/eosio.bios,下面的命令假定當前目錄位于源文件的根目錄,當然也可以使用絕對路徑加載這個合約 ${EOSIO_SOURCE}/build/contracts/eosio.bios

$ cleos set contract eosio build/contracts/eosio.bios -p eosio
Reading WAST...
Assembling WASM...
Publishing contract...
executed transaction: 414cf0dc7740d22474992779b2416b0eabdbc91522c16521307dd682051af083  4068 bytes  10000 cycles
#         eosio <= eosio::setcode               {"account":"eosio","vmtype":0,"vmversion":0,"code":"0061736d0100000001ab011960037f7e7f0060057f7e7e7e...
#         eosio <= eosio::setabi                {"account":"eosio","abi":{"types":[],"structs":[{"name":"set_account_limits","base":"","fields":[{"n...

這個命令的執(zhí)行結果是使用兩個動作(action)生成了一個交易(transaction),這兩個動作是:eosio::setcode和eosio::setabi

稍后我們會看到動作可以被多個合約處理。

這個命令的最后一個參數(shù) -p eosio 的含義是使用eosio賬戶的私鑰對操作進行簽名。

創(chuàng)建賬戶

現(xiàn)在我們已經創(chuàng)建了基本的系統(tǒng)合約,接下來我們來創(chuàng)建自己的賬戶。我們將創(chuàng)建兩個賬戶:user和tester,每個賬戶都需要一個秘鑰與其關聯(lián),這個例子中,我們將同一個秘鑰關聯(lián)到兩個賬戶。首先生成一個秘鑰

$ cleos create key
Private key: 5Jmsawgsp1tQ3GD6JyGCwy1dcvqKZgX6ugMVMdjirx85iv5VyPR
Public key: EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4

我們看到生成了一個秘鑰對,包括一個私鑰和一個公鑰。然后將這個秘鑰對導入到我們的錢包:

$ cleos wallet import 5Jmsawgsp1tQ3GD6JyGCwy1dcvqKZgX6ugMVMdjirx85iv5VyPR
imported private key for: EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4

確保導入的秘鑰是你自己實際生成的秘鑰,而不是這里的。

創(chuàng)建兩個用戶帳號

接下來,我們將創(chuàng)建兩個帳戶user和tester,并使用我們上面創(chuàng)建的密鑰。

$ cleos create account eosio user EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4 EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4
...

$ cleos create account eosio tester EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4 EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4
...

cleos create 命令需要兩個秘鑰,一個用于OwnerKey,另一個用于ActiveKey,在本例中,我們給它兩個相同的秘鑰。

查看帳號

因為已經加載了 eosio::history_api_plugin 插件,我們可以使用命令查看秘鑰控制的帳號。
插件可以通過兩種方式加載,命令參數(shù)方式和配置文件方式,我們這里是使用的配置文件加載的,所以在命令參數(shù)中并沒有看到。

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容