在開始所有之前,先確定已經完成了上一篇文章的內容。
并且保證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"
]
}