在開始所有之前,先確定已經(jīng)完成了上一篇文章的內(nèi)容岔留。
并且保證nodeos在運(yùn)行中夏哭。
創(chuàng)建一個(gè)默認(rèn)錢包
$ 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"
通過(guò)cleos命令創(chuàng)建了一個(gè)默認(rèn)的錢包。并返回給我們這個(gè)錢包的秘鑰献联。每臺(tái)機(jī)器生成的秘鑰跟這個(gè)并不一樣竖配。記錄下這個(gè)秘鑰,之后會(huì)經(jīng)常用到里逆。錢包創(chuàng)建完成后默認(rèn)是鎖定狀態(tài)的进胯,現(xiàn)在我們需要解鎖錢包。
解鎖錢包
$ cleos wallet unlock --password PW5JuBXoXJ8JHiCTXfXcYuJabjF9f9UNNqHJjqDVY7igVffe3pXub
Unlocked: default
使用剛剛給出的秘鑰我們已經(jīng)解鎖了默認(rèn)的錢包原押。
更安全的解鎖錢包方式
上面解鎖錢包的方式胁镐,會(huì)將秘鑰記錄到bash的歷史中,存在安全隱患班眯。更安全的解鎖方式是使用交互方式希停,按照提示輸入密碼,其實(shí)這里也可以粘貼密碼署隘。
$ cleos wallet unlock
password:
鎖定錢包
出于安全考慮宠能,在不使用錢包時(shí),鎖定錢包磁餐。
$ cleos wallet lock
Locked: default
加載Bios合約
eosio.bios是eos自帶的一個(gè)合約违崇,存在于源文件下的/build/contracts/eosio.bios,下面的命令假定當(dāng)前目錄位于源文件的根目錄,當(dāng)然也可以使用絕對(duì)路徑加載這個(gè)合約 ${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...
這個(gè)命令的執(zhí)行結(jié)果是使用兩個(gè)動(dòng)作(action)生成了一個(gè)交易(transaction),這兩個(gè)動(dòng)作是:eosio::setcode和eosio::setabi
稍后我們會(huì)看到動(dòng)作可以被多個(gè)合約處理诊霹。
這個(gè)命令的最后一個(gè)參數(shù) -p eosio 的含義是使用eosio賬戶的私鑰對(duì)操作進(jìn)行簽名羞延。
創(chuàng)建賬戶
現(xiàn)在我們已經(jīng)創(chuàng)建了基本的系統(tǒng)合約,接下來(lái)我們來(lái)創(chuàng)建自己的賬戶脾还。我們將創(chuàng)建兩個(gè)賬戶:user和tester伴箩,每個(gè)賬戶都需要一個(gè)秘鑰與其關(guān)聯(lián),這個(gè)例子中鄙漏,我們將同一個(gè)秘鑰關(guān)聯(lián)到兩個(gè)賬戶嗤谚。首先生成一個(gè)秘鑰
$ cleos create key
Private key: 5Jmsawgsp1tQ3GD6JyGCwy1dcvqKZgX6ugMVMdjirx85iv5VyPR
Public key: EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4
我們看到生成了一個(gè)秘鑰對(duì)棺蛛,包括一個(gè)私鑰和一個(gè)公鑰。然后將這個(gè)秘鑰對(duì)導(dǎo)入到我們的錢包:
$ cleos wallet import 5Jmsawgsp1tQ3GD6JyGCwy1dcvqKZgX6ugMVMdjirx85iv5VyPR
imported private key for: EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4
確保導(dǎo)入的秘鑰是你自己實(shí)際生成的秘鑰巩步,而不是這里的旁赊。
創(chuàng)建兩個(gè)用戶帳號(hào)
接下來(lái),我們將創(chuàng)建兩個(gè)帳戶user和tester椅野,并使用我們上面創(chuàng)建的密鑰终畅。
$ cleos create account eosio user EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4 EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4
...
$ cleos create account eosio tester EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4 EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4
...
cleos create 命令需要兩個(gè)秘鑰,一個(gè)用于OwnerKey竟闪,另一個(gè)用于ActiveKey离福,在本例中,我們給它兩個(gè)相同的秘鑰瘫怜。
查看帳號(hào)
因?yàn)橐呀?jīng)加載了 eosio::history_api_plugin 插件术徊,我們可以使用命令查看秘鑰控制的帳號(hào)本刽。
插件可以通過(guò)兩種方式加載鲸湃,命令參數(shù)方式和配置文件方式,我們這里是使用的配置文件加載的子寓,所以在命令參數(shù)中并沒(méi)有看到暗挑。
$ cleos get accounts EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4
{
"account_names": [
"tester",
"user"
]
}