EOS quick start

目的

使用 EOS docker 鏡像快速運行归形,熟悉基本操作宠页, 代幣發(fā)行和交易震庭。

這里跑的只是一個EOS單節(jié)點瑰抵,沒有和EOS測試網(wǎng)絡(luò)或主網(wǎng)鏈接,有興趣的可以自行了解器联。

前提

安裝docker: 從 https://download.docker.com/mac/stable/Docker.dmg 下載后安裝后二汛,雙擊運行。

在Mac menu bar上找到docker運行圖標(biāo)依次找到 Preferences -> Daemon -> Registry mirrors 填入:

https://registry.docker-cn.com 拨拓, 這樣讓docker從國內(nèi)鏡像倉庫拉取會快一些肴颊。

coekr-registry

EOS 概覽

運行EOS前,先了解下會涉及到的EOS組成部分:

  • nodeos (node + eos = nodeos) EOS 節(jié)點渣磷,是EOS核心組件婿着,以守護(hù)進(jìn)程的形式運行,區(qū)塊的生成醋界、操作鏈的API都由它負(fù)責(zé)
  • keosd (key + eos = keosd) 負(fù)責(zé)和錢包交互竟宋,用于存儲私鑰
  • cleos (cli + eos = cleos) 和EOS區(qū)塊鏈交互、管理錢包的命令行工具
  • wallet 存儲用戶的私鑰

關(guān)系如圖所示


overview

運行docker

拉取docker鏡像

docker pull eosio/eos-dev

運行:

docker run --rm --name eosio -d -p 8888:8888 -p 9876:9876 -p 8900:8900 -v /tmp/work:/work -v /tmp/eosio/data:/mnt/dev/data -v /tmp/eosio/config:/mnt/dev/config eosio/eos-dev  /bin/bash -c "nodeos -e -p eosio --plugin eosio::producer_plugin --plugin eosio::history_plugin --filter-on=* --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin --plugin eosio::http_plugin -d /mnt/dev/data --config-dir /mnt/dev/config --http-server-address=0.0.0.0:8888 --access-control-allow-origin=* --contracts-console --http-validate-host=false"

檢驗是否運行

docker ps | grep eosio

輸出類似:

feac5002187e eosio/eos-dev "/bin/bash -c 'nodeo…" 8 hours ago Up 8 hours 0.0.0.0:8888->8888/tcp, 0.0.0.0:9876->9876/tcp eosio

或直接訪問接口:http://localhost:8888/v1/chain/get_info 能得到區(qū)塊鏈信息表示正常運行

docker 鏡像名稱 可以換為 eosio/eos 形纺,鏡像只有兩三百MB丘侠,eosio/eos-dev鏡像有3個多GB。

eosio/eos 運行起來后docker內(nèi)部會少一些軟件逐样,如 curl

~ docker images
REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE
eosio/eos-dev                              latest              10052b957b65        6 days ago          3.11GB
eosio/eos                                  latest              01b0e8c06b2d        6 days ago          250MB

cleos 命令行工具

cleos 命令行工具可以和EOS區(qū)塊鏈交互蜗字,可以用于管理錢包wallet。

由于cleos 現(xiàn)在是跑在docker中的官研,設(shè)置cleos命令秽澳,以便無需進(jìn)入到docker中闯睹,方便直接在外面執(zhí)行cleos

alias cleos='docker exec -it eosio /opt/eosio/bin/cleos -u http://localhost:8888'

可以將以上命令放到 ~/.bashrc 文件中 (使用zsh的放到 ~/.zshrc)戏羽,方便在每次啟動命令行工具時自動執(zhí)行。比如執(zhí)行:

echo "alias cleos='docker exec -it eosio /opt/eosio/bin/cleos -u http://localhost:8888'" >> ~/.bashrc

source ~/.bashrc

執(zhí)行 cleos --help 能正常顯示幫助信息楼吃,表明已成功始花。

cleos基本操作

  • cleos get info
    獲取區(qū)塊鏈信息

  • docker exec -ti eosio bash
    進(jìn)入docker內(nèi)部,方便操作后面的命令孩锡,目前不進(jìn)入docker內(nèi)部有時操作錢包會有問題

  • cleos wallet create --to-console
    創(chuàng)建錢包酷宵,會輸出錢包的密碼,妥善保存躬窜,以后有用

  • cleos wallet unlock
    輸入創(chuàng)建錢包時得到的密碼就可以打開錢包浇垦。錢包創(chuàng)建完成后默認(rèn)是打開的,不需要unlock荣挨,但過一段時間(默認(rèn)900秒) 后需要unlock

  • cleos wallet list
    可以查看錢包和其狀態(tài)男韧。如以下結(jié)果朴摊,表面有個叫default的錢包,后面 * 表明錢包已 unlock

    Wallets:
    [
      "default *"
    ]
    
  • cleos wallet import --private-key 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
    導(dǎo)入默認(rèn)賬戶 eosio 的私鑰到錢包此虑,方便后續(xù)以此賬戶操作甚纲,比如創(chuàng)建其他賬戶

  • cleos create key --to-console
    創(chuàng)建一對公鑰私鑰 ,公鑰 Public key 可以用于創(chuàng)建用戶朦前,私鑰導(dǎo)入錢包后可以以用戶的身份操作區(qū)塊鏈介杆。秘鑰要成對使用。假設(shè)創(chuàng)建了秘鑰對:
    Private key: 5JzX1ryWqP4NRijRhzVJSBbUwd8pzHbj4Kmy5ZXBAvXN7aHperM
    Public key: EOS7jpAz4sKTZnCMY1XbVHN2Zcdb2SzWnmuzmFm4MRAnBivyUzhec

  • cleos create account eosio usera EOS7jpAz4sKTZnCMY1XbVHN2Zcdb2SzWnmuzmFm4MRAnBivyUzhec
    創(chuàng)建一個賬戶韭寸,usera 可以替換為你想要的用戶名春哨,EOS7jpAz4sKTZnCMY1XbVHN2Zcdb2SzWnmuzmFm4MRAnBivyUzhec 可以使用你生成的其他公鑰

  • cleos wallet import --private-key 5JzX1ryWqP4NRijRhzVJSBbUwd8pzHbj4Kmy5ZXBAvXN7aHperM
    導(dǎo)入賬戶私鑰到錢包。 5JzX1ryWqP4NRijRhzVJSBbUwd8pzHbj4Kmy5ZXBAvXN7aHperM 可以替換為你生成的其他私鑰

合約和交易

啟用合約eosio.token 恩伺,以此合約發(fā)行代幣悲靴,并做一筆交易。

首先莫其,需要創(chuàng)建一個賬戶eosio.token 來使用合約eosio.token發(fā)行代幣

  • cleos create key --to-console
    創(chuàng)建一對秘鑰癞尚,假設(shè)如下:
    Private key: 5KD8V6MuBhu21gxTknqiqwCvoQ18Qvuz9PYgh4vEt3DdcDkcf3Q
    Public key: EOS637Cf9ZYB6xTgKVzafFTWNmhWWswqTJc4x35y1YPhsyK8hRBNV

  • cleos create account eosio eosio.token EOS637Cf9ZYB6xTgKVzafFTWNmhWWswqTJc4x35y1YPhsyK8hRBNV
    使用公鑰創(chuàng)建賬戶 eosio.token

  • cleos wallet import --private-key 5KD8V6MuBhu21gxTknqiqwCvoQ18Qvuz9PYgh4vEt3DdcDkcf3Q
    導(dǎo)入eosio.token賬戶的私鑰到錢包

  • cleos set contract eosio contracts/eosio.bios -p eosio
    給賬戶eosio設(shè)置合約 eosio.bios

  • cleos set contract eosio.token contracts/eosio.token -p eosio.token
    給賬戶eosio.token設(shè)置合約 eosio.token

  • 創(chuàng)建代幣

    cleos push action eosio.token create \
      '{"issuer":"eosio", "maximum_supply":"1000000000.0000 SYS"}' \
      -p eosio.token
    
  • 發(fā)放代幣

    cleos push action eosio.token issue \
      '[ "eosio", "1000000000.0000 SYS", "memo"  ]' \
      -p eosio
    
  • cleos transfer eosio usera '25 SYS' 'transfer remark'
    給用戶usera 轉(zhuǎn)賬 25 個代幣,附帶的消息是 “transfer remark”

  • cleos get currency balance eosio.token usera
    可以查看該賬戶余額

  • cleos get account usera
    查看賬戶信息乱陡,也能看到余額

  • 也可以用這種方式實現(xiàn)兩個賬戶間轉(zhuǎn)賬:

    cleos push action eosio.token transfer \
      '[ "eosio", “usera", "5.0000 SYS", "message"  ]' \
      -p eosio
    
  • 交易命令執(zhí)行成功后會緊接著輸出 transaction id, 可使用 transaction id 查看交易的詳細(xì)信息 :

    cleos get transaction 14575b582bdbf65c03a4122293b114059b70ad66d5ba8c14aca0e9db7ed9e97b
    

這篇 quick start 還比較淺浇揩,可以去 官網(wǎng) 查看EOS介紹。

包括以上的EOS概覽憨颠、quick start胳徽、cleos操作賬戶和錢包,以及 EOS RPC API (即http接口)等等爽彤。

關(guān)于錢包 EOS RPC API:

目前在官網(wǎng)上看到在調(diào)用 RPC API 交易時养盗,需要使用到錢包的API 如 /v1/wallet/sign_transaction, 但始終沒找到錢包 RPC API 的說明适篙。

關(guān)于錢包守護(hù)進(jìn)程kesod:

調(diào)用 錢包命令(cleos wallet xxxxxx)時往核,docker 內(nèi)部會自動啟動管理錢包的進(jìn)程 keosd,其啟動的方式是:/opt/eosio/bin/keosd --http-server-address=127.0.0.1:8900 嚷节。

--http-server-address=127.0.0.1:8900 表明該進(jìn)程的http服務(wù)只監(jiān)聽 docker 內(nèi)部的http請求 (錢包安全性的原因聂儒?), 開發(fā)時需要外部訪問錢包 http RPC 接口的硫痰, 可以docker exec -ti eosio bash進(jìn)入到docker內(nèi)這樣啟動:

nohup /opt/eosio/bin/keosd --http-server-address=0.0.0.0:8900 --http-validate-host=false --unlock-timeout=99999999 > keosd.log 2>&1 &

監(jiān)聽所有 IP 來的 http 請求衩婚, 且給錢包超時鎖定設(shè)置了比較長的時間,這樣不用頻繁去unlock錢包效斑。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末非春,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奇昙,老刑警劉巖坐搔,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異敬矩,居然都是意外死亡概行,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門弧岳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凳忙,“玉大人,你說我怎么就攤上這事禽炬〗眩” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵腹尖,是天一觀的道長柳恐。 經(jīng)常有香客問我,道長热幔,這世上最難降的妖魔是什么乐设? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮绎巨,結(jié)果婚禮上近尚,老公的妹妹穿的比我還像新娘。我一直安慰自己场勤,他們只是感情好戈锻,可當(dāng)我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著和媳,像睡著了一般格遭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上留瞳,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天拒迅,我揣著相機(jī)與錄音,去河邊找鬼撼港。 笑死坪它,一個胖子當(dāng)著我的面吹牛骤竹,可吹牛的內(nèi)容都是我干的帝牡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼蒙揣,長吁一口氣:“原來是場噩夢啊……” “哼靶溜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤罩息,失蹤者是張志新(化名)和其女友劉穎嗤详,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓷炮,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡葱色,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了娘香。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苍狰。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖烘绽,靈堂內(nèi)的尸體忽然破棺而出淋昭,到底是詐尸還是另有隱情,我是刑警寧澤安接,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布翔忽,位于F島的核電站,受9級特大地震影響盏檐,放射性物質(zhì)發(fā)生泄漏歇式。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一胡野、第九天 我趴在偏房一處隱蔽的房頂上張望贬丛。 院中可真熱鬧,春花似錦给涕、人聲如沸豺憔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽恭应。三九已至,卻和暖如春耘眨,著一層夾襖步出監(jiān)牢的瞬間昼榛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工剔难, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留胆屿,地道東北人。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓偶宫,卻偏偏與公主長得像非迹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子纯趋,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,500評論 2 359

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