EOS quick start

目的

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

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

前提

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

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

https://registry.docker-cn.com , 這樣讓docker從國內鏡像倉庫拉取會快一些。

coekr-registry

EOS 概覽

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

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

關系如圖所示


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內部會少一些軟件,如 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 現在是跑在docker中的,設置cleos命令,以便無需進入到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
    進入docker內部,方便操作后面的命令,目前不進入docker內部有時操作錢包會有問題

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

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

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

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

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

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

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

合約和交易

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

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

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

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

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

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

  • cleos set contract eosio.token contracts/eosio.token -p eosio.token
    給賬戶eosio.token設置合約 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 轉賬 25 個代幣,附帶的消息是 “transfer remark”

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

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

  • 也可以用這種方式實現兩個賬戶間轉賬:

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

    cleos get transaction 14575b582bdbf65c03a4122293b114059b70ad66d5ba8c14aca0e9db7ed9e97b
    

這篇 quick start 還比較淺,可以去 官網 查看EOS介紹。

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

關于錢包 EOS RPC API:

目前在官網上看到在調用 RPC API 交易時,需要使用到錢包的API 如 /v1/wallet/sign_transaction, 但始終沒找到錢包 RPC API 的說明。

關于錢包守護進程kesod:

調用 錢包命令(cleos wallet xxxxxx)時,docker 內部會自動啟動管理錢包的進程 keosd,其啟動的方式是:/opt/eosio/bin/keosd --http-server-address=127.0.0.1:8900

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

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 請求, 且給錢包超時鎖定設置了比較長的時間,這樣不用頻繁去unlock錢包。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容