EOS開發(fā)入門體驗

前面一篇《EOS簡介與環(huán)境搭建》對EOS作了簡單介紹和環(huán)境搭建,并沒有涉及到編譯和部署智能合約。EOS的智能合約是基于C++語言的,感覺門檻稍微有點高吧拯田。不過,本篇還沒有涉及到EOS智能合約的編寫甩十。
本篇的主要目的是記錄下學(xué)習(xí)的過程船庇,避免大家少走彎路少采坑。還有好多不懂的地方侣监,可能會有些描述不當(dāng)?shù)牡胤窖悸郑€請大家多指正。話不多說橄霉,開始帶領(lǐng)大家來一場EOS的開發(fā)入門體驗张弛。

EOS版本說明

EOS的版本特別多,可謂五花八門酪劫,可能會遇到各種坑吞鸭。
EOS官方版本列表

EOS的版本列表

就在今天(6月2日)早上,EOSIO發(fā)布了1.0版本覆糟,對Dawn 4.2做了一些小改動刻剥。該版本加入了一個可選擇的P2P網(wǎng)絡(luò)協(xié)議,能夠支持多線程網(wǎng)絡(luò)傳輸以及更快的同步滩字。

就拿EOS的博客來說造虏,網(wǎng)上的博客有些是直接從官方文檔翻譯過來的御吞,自己可能都沒有試驗過。有些博客上文不接下文漓藕,命令格式都有問題陶珠,或者中途跳過了某些操作,可能到了哪一步都執(zhí)行不了享钞。

比如很多博客講EOS提供的currency智能合約部署揍诽,但是這個currency智能合約在2018年5月11號發(fā)布的DAWN 4.0版本就移除了。于是栗竖,如果Git下載的是最新的EOS源碼暑脆,部署currency合約的時候就會出錯。當(dāng)然狐肢,也可以下載指定的版本來編譯學(xué)習(xí)添吗。

本文是在最新版本上實驗的,這個也是遇到了部署currency合約的坑才發(fā)現(xiàn)的份名〉可以跳轉(zhuǎn)"2、部署B(yǎng)IOS合約"的一節(jié)查看僵腺,發(fā)現(xiàn)里面的"contracts"文件夾沒有"currency"合約鲤孵。

錢包的使用

1、創(chuàng)建錢包

進(jìn)入到"cleos"組件的根目錄想邦,然后執(zhí)行"./cleos wallet create"命令

wenzildeiMac:cleos wenzil$ ./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.
"PW5JiXgmkmpT62QEv8aqX56pG8WT2daXnDM21wzmMKfdHQfbT2eKw"

"PW5JiXgmkmpT62QEv8aqX56pG8WT2daXnDM21wzmMKfdHQfbT2eKw"是隨機(jī)生成的錢包私鑰裤纹,需要記錄下來并保存好委刘。

2丧没、部署B(yǎng)ios合約

EOS自帶了很多智能合約,目錄位于"eos/contracts"目錄下锡移,eosio.bios是其中一個呕童。


Bios合約

確保EOS的區(qū)塊鏈節(jié)點組件nodeos在運行狀態(tài),否則會提示如下內(nèi)容:

wenzildeiMac:cleos wenzil$ ./cleos set contract eosio ../../contracts/eosio.bios -p eosio
Reading WAST/WASM from ../../contracts/eosio.bios/eosio.bios.wasm...
Using already assembled WASM...
Publishing contract...
Failed to connect to nodeos at http://localhost:8888/; is nodeos running?

成功的運行結(jié)果:

wenzildeiMac:cleos wenzil$ ./cleos set contract eosio ../../contracts/eosio.bios -p eosio
Reading WAST/WASM from ../../contracts/eosio.bios/eosio.bios.wasm...
Using already assembled WASM...
Publishing contract...
executed transaction: b8f2f986a3bd6b2b7d237a347ce92117fabfa0adb713f38437c4cea3a543bb33  3712 bytes  7143 us
#         eosio <= eosio::setcode               {"account":"eosio","vmtype":0,"vmversion":0,"code":"0061736d0100000001621260037f7e7f0060057f7e7e7e7e...
#         eosio <= eosio::setabi                {"account":"eosio","abi":"0e656f73696f3a3a6162692f312e30050c6163636f756e745f6e616d65046e616d650f7065...
warning: transaction executed locally, but may not be confirmed by the network yet

3淆珊、創(chuàng)建一組密鑰

wenzildeiMac:cleos wenzil$ ./cleos create key
Private key: 5K55ERTgLcR9RK5K7fagwJaHXCvnZJy5cMHh6xmNgLUXvneTTzr
Public key: EOS6Ps9FM3A6yi5JgVZ7hPzQU4gAgQCgZ2mqra9EoP6JLTi51zzat

4夺饲、導(dǎo)入私鑰到錢包

命令格式為:

./cleos wallet import [private_key]

private_key:為上一步生成的私鑰

操作如下:

wenzildeiMac:cleos wenzil$ ./cleos wallet import 5K55ERTgLcR9RK5K7fagwJaHXCvnZJy5cMHh6xmNgLUXvneTTzr
imported private key for: EOS6Ps9FM3A6yi5JgVZ7hPzQU4gAgQCgZ2mqra9EoP6JLTi51zzat

賬戶的使用

5、創(chuàng)建用戶賬戶

使用導(dǎo)入私鑰到錢包生成的密鑰來創(chuàng)建用戶賬戶施符,以下演示創(chuàng)建兩個賬戶user1和user2

命令格式為:

./cleos create account eosio [account_name] [owner_key] [active_key]

cleos create 命令需要兩個秘鑰往声,為了方便,這里給它兩個相同的秘鑰戳吝,都是上面生成的私鑰浩销。
account_name:為要創(chuàng)建的賬戶名
owner_key:作用是掌握該賬戶所有控制權(quán)限
active_key:作用是只掌握該賬戶資金訪問權(quán)限

操作如下:

wenzildeiMac:cleos wenzil$ ./cleos create account eosio user1 EOS6Ps9FM3A6yi5JgVZ7hPzQU4gAgQCgZ2mqra9EoP6JLTi51zzat EOS6Ps9FM3A6yi5JgVZ7hPzQU4gAgQCgZ2mqra9EoP6JLTi51zzat
executed transaction: c0b7ff03972c5829a6fb3b8a3d422f5f08b8213c95c1883fd5a641e5c55c029b  200 bytes  250 us
#         eosio <= eosio::newaccount            {"creator":"eosio","name":"user1","owner":{"threshold":1,"keys":[{"key":"EOS6Ps9FM3A6yi5JgVZ7hPzQU4g...
warning: transaction executed locally, but may not be confirmed by the network yet

wenzildeiMac:cleos wenzil$ ./cleos create account eosio user2 EOS6Ps9FM3A6yi5JgVZ7hPzQU4gAgQCgZ2mqra9EoP6JLTi51zzat EOS6Ps9FM3A6yi5JgVZ7hPzQU4gAgQCgZ2mqra9EoP6JLTi51zzat
executed transaction: 067e145a00df9ad9b8cc5385b06d83251fa535311470ee512a66e0bf0fc41578  200 bytes  233 us
#         eosio <= eosio::newaccount            {"creator":"eosio","name":"user2","owner":{"threshold":1,"keys":[{"key":"EOS6Ps9FM3A6yi5JgVZ7hPzQU4g...
warning: transaction executed locally, but may not be confirmed by the network yet

6、查看對應(yīng)的賬戶信息

命令格式為:

./cleos get account [account_name]

操作如下:

wenzildeiMac:cleos wenzil$ ./cleos get account user1
privileged: false
permissions: 
     owner     1:    1 EOS6Ps9FM3A6yi5JgVZ7hPzQU4gAgQCgZ2mqra9EoP6JLTi51zzat
        active     1:    1 EOS6Ps9FM3A6yi5JgVZ7hPzQU4gAgQCgZ2mqra9EoP6JLTi51zzat
memory: 
     quota:        -1 bytes  used:      2.66 Kb   

net bandwidth: (averaged over 3 days)
     used:                -1 bytes
     available:           -1 bytes
     limit:               -1 bytes

cpu bandwidth: (averaged over 3 days)
     used:                -1 us   
     available:           -1 us   
     limit:               -1 us   

部署和調(diào)用智能合約

7听哭、部署Token合約

命令格式為:

./cleos set contract [account_name] ../../contracts/eosio.token -p [account_name]

[account_name]是要部署的賬戶慢洋,這里替換為"user1"塘雳。

wenzildeiMac:cleos wenzil$ ./cleos set contract user1 ../../contracts/eosio.token -p user1
Reading WAST/WASM from ../../contracts/eosio.token/eosio.token.wasm...
Using already assembled WASM...
Publishing contract...
executed transaction: 415e0dd1776d5af0edc82609c5614252f8ab0a62df1214934007b9d4b6ce8919  8104 bytes  16915 us
#         eosio <= eosio::setcode               {"account":"user1","vmtype":0,"vmversion":0,"code":"0061736d01000000017e1560037f7e7f0060057f7e7e7f7f...
#         eosio <= eosio::setabi                {"account":"user1","abi":"0e656f73696f3a3a6162692f312e30010c6163636f756e745f6e616d65046e616d65050874...
warning: transaction executed locally, but may not be confirmed by the network yet

8、調(diào)用Token合約的create函數(shù)

命令為:

./cleos push action user1 create '{"issuer":"eosio", "maximum_supply":"1000000000.0000 EOS", "can_freeze":0, "can_recall":0, "can_whitelist":0}' -p user1

創(chuàng)建一個名稱為"EOS"的Token(代幣)普筹,總發(fā)行量為10億败明。

wenzildeiMac:cleos wenzil$ ./cleos push action user1 create '{"issuer":"eosio", "maximum_supply":"1000000000.0000 EOS", "can_freeze":0, "can_recall":0, "can_whitelist":0}' -p user1
executed transaction: feef0adec95643f059085f813491b884d2058d7c987e02678ef359524e887e6c  120 bytes  378 us
#         user1 <= user1::create                {"issuer":"eosio","maximum_supply":"1000000000.0000 EOS"}
warning: transaction executed locally, but may not be confirmed by the network yet

9、發(fā)行代幣

命令為:

./cleos push action user1 issue '["user1", "100.0000 EOS","memo"]' -p eosio

給用戶user1發(fā)100個EOS幣太防,留言是"memo"

wenzildeiMac:cleos wenzil$  ./cleos push action user1 issue '["user1", "100.0000 EOS","memo"]' -p eosio
executed transaction: a1dcff4887555bd037ffad0d2877193ed2f56195b07c5ac220fd13c5846e54d6  128 bytes  33617 us
#         user1 <= user1::issue                 {"to":"user1","quantity":"100.0000 EOS","memo":"memo"}
#         user1 <= user1::transfer              {"from":"eosio","to":"user1","quantity":"100.0000 EOS","memo":"memo"}
#         eosio <= user1::transfer              {"from":"eosio","to":"user1","quantity":"100.0000 EOS","memo":"memo"}
warning: transaction executed locally, but may not be confirmed by the network yet

現(xiàn)在user1有100個EOS幣了妻顶。

10、如果出現(xiàn)了如下情況杏头,需要對錢包進(jìn)行解鎖盈包。

Error 3120003: Locked wallet
Ensure that your wallet is unlocked before using it!
Error Details:
You don't have any unlocked wallet!

執(zhí)行如下命令,然后輸入錢包的私鑰醇王,也就是創(chuàng)建錢包時返回的私鑰呢燥。

wenzildeiMac:cleos wenzil$ ./cleos wallet unlock
password:

11、轉(zhuǎn)賬交易

命令為:

./cleos push action user1 transfer '["user1", "user2", "20.0000 EOS", "哥送你20個EOS幣"]' -p user1

通過user1向user2轉(zhuǎn)20個ESO幣

wenzildeiMac:cleos wenzil$ ./cleos push action user1 transfer '["user1", "user2", "20.0000 EOS", "哥送你20個EOS幣"]' -p user1
executed transaction: 4ab89c1618eb90c8a3fd56d6182f13510b9e5ac50f09fe8a61b96ae88346bf51  152 bytes  677 us
#         user1 <= user1::transfer              {"from":"user1","to":"user2","quantity":"20.0000 EOS","memo":"哥送你20個EOS幣"}
#         user2 <= user1::transfer              {"from":"user1","to":"user2","quantity":"20.0000 EOS","memo":"哥送你20個EOS幣"}
warning: transaction executed locally, but may not be confirmed by the network yet

12寓娩、查看賬戶信息

wenzildeiMac:cleos wenzil$  ./cleos get table user1 user1 accounts
{
  "rows": [{
      "balance": "80.0000 EOS"
    }
  ],
  "more": false
}

wenzildeiMac:cleos wenzil$ ./cleos get table user1 user2 accounts
{
  "rows": [{
      "balance": "20.0000 EOS"
    }
  ],
  "more": false
}

現(xiàn)在user1有80個EOS代幣叛氨,user2有20個EOS代幣。

PS:剛?cè)肟拥男“准椋芏嗖欢海€請各位大佬多賜教,謝謝焊夸!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末仁连,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子阱穗,更是在濱河造成了極大的恐慌饭冬,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件揪阶,死亡現(xiàn)場離奇詭異昌抠,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)鲁僚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門炊苫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人冰沙,你說我怎么就攤上這事侨艾。” “怎么了拓挥?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵唠梨,是天一觀的道長。 經(jīng)常有香客問我撞叽,道長姻成,這世上最難降的妖魔是什么插龄? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮科展,結(jié)果婚禮上均牢,老公的妹妹穿的比我還像新娘。我一直安慰自己才睹,他們只是感情好徘跪,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著琅攘,像睡著了一般垮庐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上坞琴,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天哨查,我揣著相機(jī)與錄音,去河邊找鬼剧辐。 笑死寒亥,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的荧关。 我是一名探鬼主播溉奕,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼忍啤!你這毒婦竟也來了加勤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤同波,失蹤者是張志新(化名)和其女友劉穎鳄梅,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體参萄,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡卫枝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年煎饼,在試婚紗的時候發(fā)現(xiàn)自己被綠了讹挎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡吆玖,死狀恐怖筒溃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沾乘,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站档礁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏迁央。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一滥崩、第九天 我趴在偏房一處隱蔽的房頂上張望岖圈。 院中可真熱鬧,春花似錦钙皮、人聲如沸蜂科。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽导匣。三九已至,卻和暖如春茸时,著一層夾襖步出監(jiān)牢的瞬間贡定,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工可都, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留厕氨,地道東北人。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓汹粤,卻偏偏與公主長得像命斧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子嘱兼,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

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

  • 1. 賬戶與錢包1.1 創(chuàng)造并管理錢包1.2 生成EOS Keys并導(dǎo)入1.3 備份您的錢包1.4 創(chuàng)建賬戶 2....
    cenkai88閱讀 3,950評論 1 7
  • EOS DAWN 3.0 已經(jīng)正式發(fā)布了国葬,這次終于可以在mac上跑起來了,之前的版本芹壕,各種折騰都沒有真正跑起來汇四,最...
    RhainL閱讀 1,856評論 2 8
  • DAY54: 需要覺察--融合 融合是一個過程。在這個歷程中踢涌,也許會經(jīng)歷痛苦通孽,徘徊,掙扎睁壁,就好像是重生背苦,鳳凰涅槃。...
    沈子暄閱讀 162評論 0 0
  • 少年不羈愛自由,遠(yuǎn)鄉(xiāng)樓钳降,江湖走厚宰。地北天南,快意紅塵游遂填。夏愛涼風(fēng)冬愛雪铲觉,酬知己澈蝙,一碗酒。 早知聚散皆緣由撵幽,憶經(jīng)年碉克,淚...
    青禾的文史專欄閱讀 3,804評論 88 122
  • 我要在你的心頭蕩漾 我要在你的耳邊歌唱 我要在你的手中捆綁 我要在你的面前逞強(qiáng) 讓我張揚且許我瘋狂 可是自從有了那...
    念卿天涯679閱讀 296評論 0 0