EOS quick start

目的

使用 EOS docker 镜像快速运行,熟悉基本操作, 代币发行和交易。

这里跑的只是一个EOS单节点,没有和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 节点,是EOS核心组件,以守护进程的形式运行,区块的生成、操作链的API都由它负责
  • keosd (key + eos = keosd) 负责和钱包交互,用于存储私钥
  • cleos (cli + eos = cleos) 和EOS区块链交互、管理钱包的命令行工具
  • 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 能得到区块链信息表示正常运行

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区块链交互,可以用于管理钱包wallet。

由于cleos 现在是跑在docker中的,设置cleos命令,以便无需进入到docker中,方便直接在外面执行cleos

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

可以将以上命令放到 ~/.bashrc 文件中 (使用zsh的放到 ~/.zshrc),方便在每次启动命令行工具时自动执行。比如执行:

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

source ~/.bashrc

执行 cleos --help 能正常显示帮助信息,表明已成功。

cleos基本操作

  • cleos get info
    获取区块链信息

  • docker exec -ti eosio bash
    进入docker内部,方便操作后面的命令,目前不进入docker内部有时操作钱包会有问题

  • cleos wallet create --to-console
    创建钱包,会输出钱包的密码,妥善保存,以后有用

  • cleos wallet unlock
    输入创建钱包时得到的密码就可以打开钱包。钱包创建完成后默认是打开的,不需要unlock,但过一段时间(默认900秒) 后需要unlock

  • cleos wallet list
    可以查看钱包和其状态。如以下结果,表面有个叫default的钱包,后面 * 表明钱包已 unlock

    Wallets:
    [
      "default *"
    ]
    
  • cleos wallet import --private-key 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
    导入默认账户 eosio 的私钥到钱包,方便后续以此账户操作,比如创建其他账户

  • cleos create key --to-console
    创建一对公钥私钥 ,公钥 Public key 可以用于创建用户,私钥导入钱包后可以以用户的身份操作区块链。秘钥要成对使用。假设创建了秘钥对:
    Private key: 5JzX1ryWqP4NRijRhzVJSBbUwd8pzHbj4Kmy5ZXBAvXN7aHperM
    Public key: EOS7jpAz4sKTZnCMY1XbVHN2Zcdb2SzWnmuzmFm4MRAnBivyUzhec

  • cleos create account eosio usera EOS7jpAz4sKTZnCMY1XbVHN2Zcdb2SzWnmuzmFm4MRAnBivyUzhec
    创建一个账户,usera 可以替换为你想要的用户名,EOS7jpAz4sKTZnCMY1XbVHN2Zcdb2SzWnmuzmFm4MRAnBivyUzhec 可以使用你生成的其他公钥

  • cleos wallet import --private-key 5JzX1ryWqP4NRijRhzVJSBbUwd8pzHbj4Kmy5ZXBAvXN7aHperM
    导入账户私钥到钱包。 5JzX1ryWqP4NRijRhzVJSBbUwd8pzHbj4Kmy5ZXBAvXN7aHperM 可以替换为你生成的其他私钥

合约和交易

启用合约eosio.token ,以此合约发行代币,并做一笔交易。

首先,需要创建一个账户eosio.token 来使用合约eosio.token发行代币

  • cleos create key --to-console
    创建一对秘钥,假设如下:
    Private key: 5KD8V6MuBhu21gxTknqiqwCvoQ18Qvuz9PYgh4vEt3DdcDkcf3Q
    Public key: EOS637Cf9ZYB6xTgKVzafFTWNmhWWswqTJc4x35y1YPhsyK8hRBNV

  • cleos create account eosio eosio.token EOS637Cf9ZYB6xTgKVzafFTWNmhWWswqTJc4x35y1YPhsyK8hRBNV
    使用公钥创建账户 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

  • 创建代币

    cleos push action eosio.token create \
      '{"issuer":"eosio", "maximum_supply":"1000000000.0000 SYS"}' \
      -p eosio.token
    
  • 发放代币

    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
    
  • 交易命令执行成功后会紧接着输出 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服务只监听 docker 内部的http请求 (钱包安全性的原因?), 开发时需要外部访问钱包 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 &

监听所有 IP 来的 http 请求, 且给钱包超时锁定设置了比较长的时间,这样不用频繁去unlock钱包。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容