EOS开发基础之五:使用cleos命令行客户端操作EOS——智能合约之Exchange
先回答一下上一節中留下的問題,為什么我就看不到eosio這個賬戶中的錢呢?我明明為它create了很多token啊。
對,你是create了,但是沒有issue啊。create了1000000000 SYS,只能說明eosio.token這個用戶為eosio這個用戶在eosio.token用戶的這個合約上創建了1000000000 SYS,這些SYS還在央行里面躺著呢,還沒有發行,它就是一堆廢紙。
所以,咱們issue一下試試?
執行命令:./cleos push action eosio.token issue '["eosio", "1000000000.0000 SYS", "memo"]' -p eosio
也就是發行者給把1000000000個SYS全部放進自己的賬戶里準備流通了。
?
怎么樣?我沒騙你吧?
好了,咱們來看一下上邊的腳本執行情況。
1、因為又過了一天了,所以我執行第一條命令的時候,它要求我打開錢包,于是我就吧默認錢包給打開了。
2、打開錢包后,我直接給eosio發1000000000個SYS,第一次報錯了,說交易時間過長,我忍了,再執行一遍,它告訴我說 數量超過可供應量。
3、好吧,我們把十億換成999999900,再執行,成功了。
4、現在再來看看它們各自有多少錢,看到沒?eosio這個賬戶也真的有錢了。但是它錢是不是太多了點?比如說我們想再給simayi發行(issue)點SYS,還能成功嗎?
看到沒?沒錢了,國庫空虛了,以后simayi想要錢,只能找eosio這家伙要了,只能通過transfer的方式獲得了。咦,我們試試能不能給它發行負的錢可好?
有點不好意思,它告訴我說讓我別鬧,要正數才行。看來,simayi的這500塊,我只能transfer給它了:
執行命令:./cleos push action eosio.token transfer '[ "eosio", "simayi", "500.0000 SYS", "m" ]' -p eosio
?
好了,大家的錢的問題都講清楚了,咱們再來聊聊其它的合約吧。嗯,第三個:
3、Exchange
The exchange contract 提供了創造和交易貨幣的能力。這是個什么情況?上邊的eosio.token不也能創建和交易貨幣嘛?等等,這里所說的交易貨幣,是不是指像現實生活中美元和人民幣兌換之類的事啊?所謂的跨貨幣交易?這只是我的個人猜測哈。我們現在來做下實驗吧。
那么,既然它能創建貨幣,那咱們現在就試試Exchange這個東西好不好使可好?
a、轉到nodeos的運行界面,使用ctrl+c,停止nodeos的運行(咱們不去/home/fengwork/.local/share/eosio/nodeos刪data文件夾哈,留著有用)
b、再次輸入./nodeos,啟動節點
c、打開一個新的Terminal來操作cleos
?
3.1創建eosio.exch賬戶(./cleos create account eosio eosio.exch)
要創建一個賬戶還真是挺麻煩的。先得創建key,解鎖錢包,然后把key導入錢包,之后才能創建account。而且啊,account不能超過13個字符,且有命名規則要求。別告訴我你懶癌犯了哈,命令自己敲去。
呃,如果實在是真的懶癌犯了,那命令在下邊,誰叫我心軟呢:
fengwork@ubuntu:~$ cd eos/build/programs/cleos/
fengwork@ubuntu:~/eos/build/programs/cleos$ ./cleos create key
Private key: 5Jm5G6rFAaxjPKuAraR8mYVmzqpB3E35Mjw363SceFjUeSF6G61
Public key: EOS5m1u5coWVEAfCwpJvh2ftGq2AEnVWFSS6ytvXgegZra11PK6hK
fengwork@ubuntu:~/eos/build/programs/cleos$ ./cleos create key
Private key: 5JfYHqk8wh2v3335Mxsp71B3pBevmpUxHKfkEiomKHcLDDnpfiy
Public key: EOS6wLBffPDWeaYCxTnD1KwFYMR1YjWcCMVf5iRpoQo53tsAAJCeE
fengwork@ubuntu:~/eos/build/programs/cleos$ ./cleos wallet list
Wallets:
[
? "default",
? "hanmeimei",
? "simaguang",
? "wangerxiao"
]
fengwork@ubuntu:~/eos/build/programs/cleos$ ./cleos wallet unlock -n default --password PW5KZGrxQR77W2ctkZPGsZugQVekdEipZKxE48sxy6rPFE6sUfnV6(可還記得你的default錢包的password?)
Unlocked: default
fengwork@ubuntu:~/eos/build/programs/cleos$ ./cleos wallet import 5Jm5G6rFAaxjPKuAraR8mYVmzqpB3E35Mjw363SceFjUeSF6G61
imported private key for: EOS5m1u5coWVEAfCwpJvh2ftGq2AEnVWFSS6ytvXgegZra11PK6hK
fengwork@ubuntu:~/eos/build/programs/cleos$ ./cleos wallet import 5JfYHqk8wh2v3335Mxsp71B3pBevmpUxHKfkEiomKHcLDDnpfiy
imported private key for: EOS6wLBffPDWeaYCxTnD1KwFYMR1YjWcCMVf5iRpoQo53tsAAJCeE
fengwork@ubuntu:~/eos/build/programs/cleos$ ./cleos create account eosio eosio.exch EOS5m1u5coWVEAfCwpJvh2ftGq2AEnVWFSS6ytvXgegZra11PK6hK EOS6wLBffPDWeaYCxTnD1KwFYMR1YjWcCMVf5iRpoQo53tsAAJCeE
executed transaction: c89b760279cb449d25dbce13ffb36a58bbabddaf28b656336acda9ca4fd42f1e? 200 bytes? 14902 us
#???????? eosio <= eosio::newaccount??????????? {"creator":"eosio","name":"eosio.exch","owner":{"threshold":1,"keys":[{"key":"EOS5m1u5coWVEAfCwpJvh2...
warning: transaction executed locally, but may not be confirmed by the network yet
?
警告先不管。
3.2加載Exchange合約(./cleos set contract eosio.exch ../../contracts/exchange -p eosio.exch)
?
3.3給eosio.exch創造點貨幣(./cleos push action eosio.exch create '{"issuer":"eosio", "maximum_supply":"200000000.0000 EXCH"}' -p eosio.exch)
?
看到沒?我們換著方的玩,它都創造不了貨幣。
那特么的上邊說它能夠創造和交易貨幣,逗咱們玩呢?
?
我們再次用eosio.token來試試,另外創建一個幣種,看看效果:
?
這才是最正確的姿勢嘛,那個Exchange合約是個什么鬼?!
通過上邊的命令執行情況,我們可以得到如下信息:
1、eosio.token加載過一遍后,就被寫入到鏈上了,即使我們重啟節點,已加載的合約也不會丟失,除非你把塊都刪了,且沒有和別的機器連在一起上鏈
2、可以為同一個賬戶,如eosio,創造多個幣種,且把該幣種發布出去
3、還是不知道Exchange干啥用的
?
暫時到這里吧,下篇繼續。
?
轉載于:https://www.cnblogs.com/paluano/p/Exchange.html
總結
以上是生活随笔為你收集整理的EOS开发基础之五:使用cleos命令行客户端操作EOS——智能合约之Exchange的全部內容,希望文章能夠幫你解決所遇到的問題。