EOS初探(2) - 發(fā)行Token

大部分內(nèi)容都參考官方文檔灯变,但是官方資料更新不及時(shí)殴玛,坑比較多

官方文檔:
https://github.com/EOSIO/eos/wiki/Tutorial-Getting-Started-With-Contracts

賬號(hào)配置

創(chuàng)建完之后默認(rèn)錢包default已經(jīng)是unlock,如果是鎖定狀態(tài)使用unlock命令解鎖添祸。

配置錢包

eos@mybc:~$ cleos wallet create
"/opt/eosio/bin/keosd" launched
Creating wallet: default
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5KHNypEkswDYuTkir28fbfTeFjmLHpgFEww3NWx5CVUVmazwJUL"
eos@mybc:~$ echo PW5KHNypEkswDYuTkir28fbfTeFjmLHpgFEww3NWx5CVUVmazwJUL >p.txt
eos@mybc:~$ cleos wallet unlock --password PW5KHNypEkswDYuTkir28fbfTeFjmLHpgFEww3NWx5CVUVmazwJUL
Error 3120007: Already unlocked
eos@mybc:~$ cleos wallet import 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
imported private key for: EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
eos@mybc:~$

非常重要滚粟,需要import默認(rèn) eosio的私鑰,否則創(chuàng)建用戶以及導(dǎo)入合約時(shí)會(huì)報(bào)以下錯(cuò)誤(只是本地測(cè)試環(huán)境)

Error 3090003: provided keys, permissions, and delays do not satisfy declared authorizations
Ensure that you have the related private keys inside your wallet and your wallet is unlocked.

附測(cè)試網(wǎng)絡(luò)的eosio的默認(rèn)key, eosio賬號(hào)是這個(gè)節(jié)點(diǎn)的Producer ID, 公私鑰都配置在/opt/eosio/data/config.ini中

eosio public key: EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
eosio private key: 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

配置賬號(hào)

eos@mybc:~$ cleos create key
Private key: 5J3iFb6j1uJBw643jEvzqN2Mmcday7ctTtVpWwiEFoMYSxhWqCv
Public key: EOS6CnvYoPQVHwxFhbfjQrJxqzH4pdbCcgKidQdn3xZa4DEwsR4Tq
eos@mybc:~$ cleos create key
Private key: 5KcWzrq7VufNm6RjzeaeN3y8FaqhwYKT1ZhmNxUHsjFsk6pC69U
Public key: EOS6ArbyaJMU4DbrkUjkpgqDiVeWFPWCyL18YRXAJv9jZV6xzGA2Z
eos@mybc:~$ cleos wallet import 5J3iFb6j1uJBw643jEvzqN2Mmcday7ctTtVpWwiEFoMYSxhWqCv
imported private key for: EOS6CnvYoPQVHwxFhbfjQrJxqzH4pdbCcgKidQdn3xZa4DEwsR4Tq
eos@mybc:~$ cleos wallet import 5KcWzrq7VufNm6RjzeaeN3y8FaqhwYKT1ZhmNxUHsjFsk6pC69U
imported private key for: EOS6ArbyaJMU4DbrkUjkpgqDiVeWFPWCyL18YRXAJv9jZV6xzGA2Z
eos@mybc:~$ 
eos@mybc:~$ cleos create account eosio user EOS6CnvYoPQVHwxFhbfjQrJxqzH4pdbCcgKidQdn3xZa4DEwsR4Tq EOS6ArbyaJMU4DbrkUjkpgqDiVeWFPWCyL18YRXAJv9jZV6xzGA2Z
executed transaction: 51d8256e103ad4b38d55e54dc477cbf6935e41ff7d54dd9bf6f3116a69ce8ac1  200 bytes  243 us
#         eosio <= eosio::newaccount            {"creator":"eosio","name":"user","owner":{"threshold":1,"keys":[{"key":"EOS6CnvYoPQVHwxFhbfjQrJxqzH4...
warning: transaction executed locally, but may not be confirmed by the network yet
eos@mybc:~$ 
eos@mybc:~$ cleos create account eosio tester EOS6CnvYoPQVHwxFhbfjQrJxqzH4pdbCcgKidQdn3xZa4DEwsR4Tq EOS6ArbyaJMU4DbrkUjkpgqDiVeWFPWCyL18YRXAJv9jZV6xzGA2Z
executed transaction: e739b3331adbbaeeb6ff07accb7cebf67f96eca5917e89a38674bf328fcc1b30  200 bytes  275 us
#         eosio <= eosio::newaccount            {"creator":"eosio","name":"tester","owner":{"threshold":1,"keys":[{"key":"EOS6CnvYoPQVHwxFhbfjQrJxqz...
warning: transaction executed locally, but may not be confirmed by the network yet
eos@mybc:~$ cleos get accounts EOS6CnvYoPQVHwxFhbfjQrJxqzH4pdbCcgKidQdn3xZa4DEwsR4Tq
{
  "account_names": [
    "tester",
    "user"
  ]
}
eos@mybc:~$ 

通過(guò)cleos get accounts即可看到剛配置的賬號(hào)列表刃泌。

發(fā)幣

環(huán)境以及賬號(hào)配置妥當(dāng)之后凡壤,就開(kāi)始部署合約了

首先創(chuàng)建個(gè)賬號(hào)用于部署合約

eos@mybc:~$ cleos create account eosio eosio.token EOS6CnvYoPQVHwxFhbfjQrJxqzH4pdbCcgKidQdn3xZa4DEwsR4Tq EOS6ArbyaJMU4DbrkUjkpgqDiVeWFPWCyL18YRXAJv9jZV6xzGA2Z
executed transaction: 3305b604d2edf05a7f0090f874cb8fd5fc0abadab3d6ca5c9fd4a6bcccad265c  200 bytes  248 us
#         eosio <= eosio::newaccount            {"creator":"eosio","name":"eosio.token","owner":{"threshold":1,"keys":[{"key":"EOS6CnvYoPQVHwxFhbfjQ...
warning: transaction executed locally, but may not be confirmed by the network yet

部署合約

智能合約源代碼在eos/contracts/eosio.token署尤,是需要編譯之后才能部署的,如果使用Docker hub的方式的話是沒(méi)有合約編譯的環(huán)境的亚侠,如果想嘗試自己編譯的可以使用eos-dev的鏡像曹体。這里我有編譯好的合約復(fù)制到當(dāng)前contracts目錄, 也可直接使用前一章提到的/opt/eosio/data/contracts目錄

eos@mybc:~$ cleos set contract eosio.token contracts/eosio.token -p eosio.token
Reading WAST/WASM from contracts/eosio.token/eosio.token.wasm...
Using already assembled WASM...
Publishing contract...
executed transaction: 3436ea1df1e2a9620b9697c3b2d9cd5e90acd3a4cdd54ff89cfc8c1fb9b33556  8104 bytes  1075 us
#         eosio <= eosio::setcode               {"account":"eosio.token","vmtype":0,"vmversion":0,"code":"0061736d01000000017e1560037f7e7f0060057f7e...
#         eosio <= eosio::setabi                {"account":"eosio.token","abi":"0e656f73696f3a3a6162692f312e30010c6163636f756e745f6e616d65046e616d65...
warning: transaction executed locally, but may not be confirmed by the network yet

創(chuàng)建代幣

創(chuàng)建一個(gè)名為SYS,總量1000000000的代幣

eos@mybc:~$ cleos push action eosio.token create '[ "eosio", "1000000000.0000 SYS"]' -p eosio.token
executed transaction: 962c1cf2f54c7d35be8b0e5f6d8f4fc8c8105c333ea6382db14bae335209e9a7  120 bytes  359 us
#   eosio.token <= eosio.token::create          {"issuer":"eosio","maximum_supply":"1000000000.0000 SYS"}
warning: transaction executed locally, but may not be confirmed by the network yet

給user發(fā)行100代幣

可以使用命令

cleos push action eosio.token issue '[ "user", "100.0000 SYS", "this is a test" ]' -p eosio

這里使用如下命令給用戶user發(fā)行Token

eos@mybc:~$ cleos push action eosio.token issue '["user", "100.0000 SYS", "memo"]' -p eosio -d -j
{
  "expiration": "2018-06-19T09:08:58",
  "ref_block_num": 17016,
  "ref_block_prefix": 1044514165,
  "max_net_usage_words": 0,
  "max_cpu_usage_ms": 0,
  "delay_sec": 0,
  "context_free_actions": [],
  "actions": [{
      "account": "eosio.token",
      "name": "issue",
      "authorization": [{
          "actor": "eosio",
          "permission": "active"
        }
      ],
      "data": "00000000007015d640420f00000000000453595300000000046d656d6f"
    }
  ],
  "transaction_extensions": [],
  "signatures": [
    "SIG_K1_KaZbC8cL9s15Vx7LBD4TJy7T1fuHExcbFE8N5EZnxY1x8YqVpJbkgBSm1E7KEEmHQP6nuS6awGVPCr8Kt5uXPee8u7cX4B"
  ],
  "context_free_data": []
}

user用戶轉(zhuǎn)賬給tester用戶25個(gè)代幣

eos@mybc:~$ cleos push action eosio.token transfer '[ "user", "tester", "25.0000 SYS", "m" ]' -p user
executed transaction: ef457476720be62ad5b326ac597ec0a1c819f3930e6c278b28900c4c7aaa46b3  128 bytes  483 us
#   eosio.token <= eosio.token::transfer        {"from":"user","to":"tester","quantity":"25.0000 SYS","memo":"m"}
#          user <= eosio.token::transfer        {"from":"user","to":"tester","quantity":"25.0000 SYS","memo":"m"}
#        tester <= eosio.token::transfer        {"from":"user","to":"tester","quantity":"25.0000 SYS","memo":"m"}
warning: transaction executed locally, but may not be confirmed by the network yet
eos@mybc:~$ 

查詢賬戶下的資產(chǎn)

tester賬戶下有25個(gè)代幣

eos@mybc:~$ cleos get account user
permissions: 
     owner     1:    1 EOS6CnvYoPQVHwxFhbfjQrJxqzH4pdbCcgKidQdn3xZa4DEwsR4Tq
        active     1:    1 EOS6ArbyaJMU4DbrkUjkpgqDiVeWFPWCyL18YRXAJv9jZV6xzGA2Z
memory: 
     quota:       unlimited  used:      3.02 KiB  

net bandwidth: 
     used:               unlimited
     available:          unlimited
     limit:              unlimited

cpu bandwidth:
     used:               unlimited
     available:          unlimited
     limit:              unlimited

SYS balances: 
     liquid:           75.0000 SYS
     staked:            0.0000 SYS
     unstaking:         0.0000 SYS
     total:            75.0000 SYS


eos@mybc:~$ cleos get account tester
permissions: 
     owner     1:    1 EOS6CnvYoPQVHwxFhbfjQrJxqzH4pdbCcgKidQdn3xZa4DEwsR4Tq
        active     1:    1 EOS6ArbyaJMU4DbrkUjkpgqDiVeWFPWCyL18YRXAJv9jZV6xzGA2Z
memory: 
     quota:       unlimited  used:      2.66 KiB  

net bandwidth: 
     used:               unlimited
     available:          unlimited
     limit:              unlimited

cpu bandwidth:
     used:               unlimited
     available:          unlimited
     limit:              unlimited

SYS balances: 
     liquid:           25.0000 SYS
     staked:            0.0000 SYS
     unstaking:         0.0000 SYS
     total:            25.0000 SYS


eos@mybc:~$ 

至此通過(guò)智能合約創(chuàng)建/發(fā)行Token/轉(zhuǎn)賬已經(jīng)完成硝烂。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末箕别,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子滞谢,更是在濱河造成了極大的恐慌串稀,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狮杨,死亡現(xiàn)場(chǎng)離奇詭異母截,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)橄教,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門微酬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人颤陶,你說(shuō)我怎么就攤上這事颗管。” “怎么了滓走?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵垦江,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我搅方,道長(zhǎng)比吭,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任姨涡,我火速辦了婚禮衩藤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘涛漂。我一直安慰自己赏表,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布匈仗。 她就那樣靜靜地躺著瓢剿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪悠轩。 梳的紋絲不亂的頭發(fā)上间狂,一...
    開(kāi)封第一講書(shū)人閱讀 51,182評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音火架,去河邊找鬼鉴象。 笑死忙菠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的纺弊。 我是一名探鬼主播只搁,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼俭尖!你這毒婦竟也來(lái)了氢惋?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤稽犁,失蹤者是張志新(化名)和其女友劉穎焰望,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體已亥,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡熊赖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了虑椎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片震鹉。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖捆姜,靈堂內(nèi)的尸體忽然破棺而出传趾,到底是詐尸還是另有隱情,我是刑警寧澤泥技,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布浆兰,位于F島的核電站,受9級(jí)特大地震影響珊豹,放射性物質(zhì)發(fā)生泄漏簸呈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一店茶、第九天 我趴在偏房一處隱蔽的房頂上張望蜕便。 院中可真熱鬧,春花似錦贩幻、人聲如沸轿腺。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)吃溅。三九已至溶诞,卻和暖如春鸯檬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背螺垢。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工喧务, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赖歌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓功茴,卻偏偏與公主長(zhǎng)得像庐冯,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子坎穿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容