不知道下邊這一段英文你們是不是能看懂,如果看不懂那就算了,我就是轉過來隨便看看的。
總之你記住nodeos、cleos和keosd這三個工程十分重要就行了,回頭咱們的研究都從這三個工程殺進去。
EOSIO comes with a number of programs. The primary ones that you will use, and the ones that are covered here, are:
nodeos
- server-side blockchain node componentcleos
- command line interface to interact with the blockchain and to manage walletskeosd
- component that manages EOSIO wallets
The basic relationship between these components is illustrated in the following diagram. In the sections that follow, you will build the EOSIO components, and deploy them in a single host, single node test network (testnet) configuration.
今天我們就來講講怎么通過cleos命令行客戶端操作EOS吧。(默認是操作自己當前主機節點,如果你添加了ip地址參數的話,你也可以操作別的節點)
那么要操作當前機器的節點,我們得先把當前節點給啟動是吧?來,打開Terminal,執行如下操作:
是不是被./nodeos -e -p eosio --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin 這貨搞瘋了?呵呵呵……來,跳轉到你的/home/fengwork/.local/share/eosio/nodeos/config目錄下,是不是看到有一個config.ini文件?打開它,把里面的內容換成如下內容:
enable-stale-production = true
#required-participation = true
shared-file-size = 8192
send-whole-blocks = true
http-server-address = 127.0.0.1:8888
p2p-listen-endpoint = 0.0.0.0:9876
p2p-server-address = localhost:9876
allowed-connection = any
required-participation = 33
private-key = ["EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV","5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"]
producer-name = eosio
plugin = eosio::chain_api_plugin
plugin = eosio::history_api_plugin
plugin = eosio::wallet_plugin
plugin = eosio::wallet_api_plugin
plugin = eosio::net_plugin
plugin = eosio::net_api_plugin
plugin = eosio::chain_plugin
然后到上一級目錄,也就是/home/fengwork/.local/share/eosio/nodeos下邊,是不是發現有一個data文件夾?刪掉它——這里面放的就是你打的塊,因為我們先去跑過一趟程序,所以里面已經存了很多空塊了。有時候會因為這玩意兒的存在導致節點跑不起來,比如說程序重新編譯之后。
嗯,接下來,再次轉到Teminal中來,這時候,你只需要一個./nodeos命令,節點程序就跑起來了,是不是心情好多了?
至於上邊這里面那段紅色的和黃色的是啥意思,我們先不管了,回頭跟蹤下程序,讓程序來告訴咱們它到底怎么會顯得那么不一樣吧。
下邊我們就可以正式開始拿出我們的cleos來干活了。
再次打開一個Terminal(ctrl+alt+t),執行如下操作:
>cd eos/build/programs/cleos/
這樣就轉到了cleos文件夾下,通過ls命令,咱們可以看到這下邊有一個名叫cleos的可執行文件,如下圖:
下邊我們先來做一些基礎操作吧:
1、創建默認錢包(./cleos wallet create)
通過返回的信息,我們看到我們已經啟動了keosd工程,同時創建了一個名為default的默認錢包,且這個錢包的password為PW5KZGrxQR77W2ctkZPGsZugQVekdEipZKxE48sxy6rPFE6sUfnV6
這個password咱們得拿小本本記住了,回頭打開錢包就靠它了呢。
2、看看咱們創建的錢包吧(./cleos wallet list)
發現沒?返回的json里面只有一個剛剛創建的default錢包,且這個錢包后面帶了一個*符號,這表示這個錢包是解鎖狀態的,你可以對它進行各種操作。額,感覺這里只有一個錢包不太爽,咱們給它多弄幾個進去吧?
3、創建自定義名稱的錢包(./cleos wallet create -n xxx)
看到沒?我們又連續創建了三個錢包——wangerxiao、simaguang、hanmeimei,且通過提示,我們可以了解到這三個錢包也都是處於解鎖的狀態,不信咱們使用./cleos wallet list命令看看?
它們果然都是解鎖中的,快點拿小本本來把這些password記下來:
default:PW5KZGrxQR77W2ctkZPGsZugQVekdEipZKxE48sxy6rPFE6sUfnV6
wangerxiao:PW5JVrRerDpKyFxMFcoafsnCyPwdpSjVKRnkPsyXiF78WeYKCD71W
simaguang:PW5K97DmRL1XbNmQk7V2K4nZtcq5cUiEe8rbpFcT4QNVyGXJws76R
hanmeimei:PW5JVE2ZvSBQ51TnmZfQ7M1vKarEoAtm6E6wXvZ2Bm8GRKmHoWa62
額,現在我想試試我的password好不好使,怎么辦呢?當然得先把錢包給上鎖啊。上鎖——
4、給錢包上鎖(./cleos wallet lock -n xxx)比如說我把wangerxiao給鎖了(./cleos wallet lock -n wangerxiao)
看到沒?wangerxiao這個錢包被鎖上啦!其它的還是好好的。
好,下邊我們來利用wangerxiao的password把wangerxiao這個錢包解鎖吧。
5、解鎖錢包(./cleos wallet unlock -n xxx --password pasxxxxxxxxxxxxxxxxxxx)
我們看一下上邊,已知wangerxiao這個錢包的password為PW5JVrRerDpKyFxMFcoafsnCyPwdpSjVKRnkPsyXiF78WeYKCD71W,則解鎖情況如下:
咦,為什么上圖中,解鎖wangerxiao后,其它錢包又被鎖上了呢?哈哈哈哈……因為剛剛是中午飯時間,我出去吃了個飯,然后睡了個午覺才繼續敲的,所以,超過一定的時間,這錢包就自動上鎖了。非常我們的為我們的錢財安全着想哈!
至於這個超時時間是多少,我不知道,但是粗略估算一下,我這中間大概兩個小時沒操作它了,所以絕對是兩個小時以內的事情。
6、查看錢包中的keys(./cleos wallet keys)
出於好奇,我創建了錢包后,能夠通過./cleos wallet list獲得錢包列表,但是我現在想要錢包的password怎么辦呢?查了下文檔好像沒有這個方法,這個password應該是真真切切的要求你給記錄在你自己的小本本里了,要是丟了的話,你錢包可就打不開了噢。
然而,我發現了還有一個命令——./cleos wallet keys,這貨是干啥的?
於是我剛剛又去喝了杯水,回來后就在cleos中敲入了./cleos wallet keys這個命令,又發現wangerxiao這個錢包也被鎖了,所以,說不准是5分鍾就超時了。
那我們就給你解鎖嘛,解鎖后再試試這個命令。
先解鎖wangerxiao,然后使用./cleos wallet keys看看,咦,發現有一串奇怪的字符被返回。這是什么鬼?和我們的password根本就不一樣,它居然是以EOS開頭的。
我們再解鎖simaguang,使用./cleos wallet list看看情況,發現有兩個錢包被解鎖了,然后再次輸入./cleos wallet keys,回車,咦,怎么還是返回這一串鬼東西?這玩意兒哪來的?
哈哈哈,是不是一臉懵逼?
是不是很想知道這東西哪來的?
還記得我們上邊修改config.ini的時候,里面的那串private-key嘛?又還記得我們剛修改好配置文件后運行節點時出現的那段黃色的信息嘛?
對,這玩意兒是我們導進去的,但是說實話,我那段config.ini的東西是3.0版本的,相對於這邊的正式版有點老了,所以……回頭抽空我們再來講講怎么弄一個適合V1.0.1版本的config.ini吧。
現在我們還來繼續聊這個key的事。我們要查看key,那首先得里面有key,那這個key從哪里來呢?當然是我們自己創建的了。
這里EOS里面的key是公私鑰對成對出現的,key和password不是同一個概念,雖然看起來都是一串很長的字符,但是——password是針對錢包wallet的,而key則是針對賬戶account的。
你創建了wangerxiao這個錢包,不等於你已經在鏈上有了wangerxiao這個賬戶,實際上wallet和account兩者之間完全是沒有關系的,只有當你將account的key放在wallet里的時候,它們兩者之間才有了那么點點聯系。
每一個account都會有兩組公私鑰對,對應該賬戶的兩個角色——owner和active。所以我們每次創建賬戶的時候,都需要給新賬戶導入兩個key進去。
至於怎么操作,我發現這一節已經寫得有點長了,休息一下,下一節再聊吧。