简介

从今天开始我会在FishoPark上与大家分享EOS的一些技术经验和基础,如果大家在看文章的过程中有任何问题,欢迎在网站下方的评论里留言,我会尽力为大家解答,如果发现我内容中所写有错,欢迎指正,谢谢。

那么首先我们在开始学习EOS之前,需要先了解一下EOS开发所需的预备知识和环境。

EOS开发准备

EOSIO的开发,你最好具有以下经验:

  • C/C++的开发经验
  • Linux/Mac的使用经验
  • 命令行的使用经验,最好是bash命令的

在开始前,我们需要准备运行环境,目前EOSIO还不支持Windows环境,所以如果我们要使用Windows来进行开发或者测试时,只能通过虚拟技术运行Linux或者Mac环境。

如果你还没有安装虚拟机,那么我建议你直接安装docker,在docker中运行linux系统容器甚至EOSIO的容器会是一个不错的选择。如果你使用的是Win10系统的话,你需要下载Docker Desktop,这是docker的桌面版,Win10系统将只支持这一种安装方式。更多docker的内容,请阅读Docker专栏(后续更新)。

如果你使用的是以下系统,那么可以直接进入下一章节:

  • Amazon 2017.09 and higher
  • Centos 7
  • Fedora 25 and higher (Fedora 27 recommended)
  • Mint 18
  • Ubuntu 16.04 (Ubuntu 16.10 recommended)
  • Ubuntu 18.04
  • MacOS Darwin 10.12 and higher (MacOS 10.13.x recommended)

C/C++

因为EOS是使用c编写,并且智能合约也使用c编写,所以你会需要掌握一定的c的编程基础,如果你不打算深入了解EOS源码,只是为了能看懂或能编写智能合约,那你需要了解基本的c的文件结构、基本数据类型、引用和指针还有就是multi-index和面向对象的基本编程。有一定英语基础的朋友可以考虑直接观看这本电子书Learn EOS - c/c++ 教程英文版
这个文章是Christoph Michel写的EOS开发的书的C++样章,如果喜欢改内容,请购买书籍。LearnEOS书籍官网

Docker

对于没有Mac或者Linux环境的朋友,就需要安装Docker了,当然,Docker本身提供了与运行系统很好的系统环境隔离,也可作为开发中的辅助,在EOS节点章节和智能合约章节我会更近一步展示使用Docker能为我们带来的便利。

Docker安装

可视化Docker程序有两个版本,早先的Windows/Mac系统支持的是Docker Toolbox, Win10、macOS Sierra 10.12后支持新的Docker Desktop

具体安装步骤我这里就不做展示和说明了,如果大家对于这块儿有问题的话欢迎留言,我会提供指导和帮助。

Docker基本使用

Docker本身也是虚拟技术的一种,只是在虚拟机上抽象出来的一层,将底层共享,隔离出上层。相比于虚拟机,资源占用更少,更轻量,构建容器也更容易,也更适合用于隔离环境下,被大量用于微服务架构和SaaS(Software-as-a-Service)的设计架构中。

推荐Docker学习博客

Images-镜像

镜像更像是系统快照,可方便的在任意时刻由镜像来创建容器。Docker自身提供了Docker Hub,用于管理公共镜像,我们可以搜索所需的镜像,也可以上传自己的镜像。
国内在访问Docker官方的镜像库时可能存在网络延迟甚至无法连接,导致镜像无法拉取,所以在国内我们需要配置国内的Docker镜像加速器。

国内镜像地址

docker-cn加速器地址 https://registry.docker-cn.com
网易加速器地址 http://hub-mirror.c.163.com
Docker中国区官方镜像https://registry.docker-cn.com
ustc https://docker.mirrors.ustc.edu.cn
中国科技大学https://docker.mirrors.ustc.edu.cn
阿里云容器服务,通过创建地址首页点击“创建我的容器镜像”,得到一个专属的镜像加速地址,类似于https://1234abcd.mirror.aliyuncs.com

下面我会具体说明如何配置国内镜像,我以docker-cn的地址为例。

  • Windows/Mac

针对安装了Docker Toolbox的用户,您可以参考以下配置步骤:
创建一台安装有Docker环境的Linux虚拟机,指定机器名称为default,同时配置Docker加速器地址。

docker-machine create --engine-registry-mirror=https://registry.docker-cn.com -d virtualbox default

查看机器的环境配置,并配置到本地,并通过Docker客户端访问Docker服务。

docker-machine env default
eval "$(docker-machine env default)"
docker info

针对安装了Docker for Windows的用户,您可以参考以下配置步骤:
在系统右下角托盘图标内右键菜单选择 Settings,打开配置窗口后左侧导航菜单选择 Docker Daemon。编辑窗口内的JSON串,填写下方加速器地址:

{
"registry-mirrors": ["https://registry.docker-cn.com"]
}

编辑完成后点击 Apply 保存按钮,等待Docker重启并应用配置的镜像加速器。

  • CentOS/Ubuntu

针对Docker客户端版本大于 1.10.0 的用户

您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
搜索镜像

如果你正在找eosio的镜像,那么你可以在docker hub上进行搜索。

或者你也可以通过命令来搜索。

docker search eosio

拉取镜像

拉取镜像时,需要指出拉取的tag,相当于版本号,默认是latest。

docker pull eosio/eos-dev@lastest

@latest是指出拉取tag,如果是latest,可缺省。而镜像有哪些tag,可在docker hub的网站上查询到。

其他一些镜像命令
#list
docker images #remove
docker rmi -f eosio/eos-dev

Container-容器

  • 创建容器

以下是最基本的用法,直接就在当前会话中运行并输出。

docker run eosio/eos

docker的容器其实有很多功能,我们先看下面这个命令:

docker run --rm --name eosio -d \
-p 8888:8888 -p 9876:9876 \
-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::wallet_api_plugin --plugin eosio::wallet_plugin --plugin eosio::producer_plugin --plugin eosio::history_plugin --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 --hard-replay"

这个指令是创建一个eosio开发环境的节点容器。

  1. –rm 选项是说明该容器在停止后就会立即删除,此处使用是为了进行eos节点数据的恢复,所以是一次性的
  2. –name 容器名称
  3. -d 后台运行,即不会在当前命令行的会话中执行
  4. -p 端口映射,将容器内端口映射到外层环境中,可多次使用
  5. -v 挂载,将外层环境的目录挂载到容器中,可多次使用
  • 删除容器

如果容器已命名,可以直接通过名称删除,否则只能通过容器id删除。

docker rm eosio
  • 启动/停止/重启容器
#启动
docker start eosio
#停止
docker stop eosio
#重启
docker restart eosio
  • 查看容器列表
docker ps

如果需要查看所有容器,包括已停止的,可以带上-a参数。

  • 执行命令

使用以下命令,可以进入eosio中调起bash,并等待输入。

docker exec -it eosio /bin/bash

Log

以下命令是输出eosio容器的最后100行控制台内容。

docker logs --tail 100 eosio

原文链接

EOS基础全家桶(一)开篇的更多相关文章

  1. EOS基础全家桶(十二)智能合约IDE-VSCode

    简介 上一篇我们介绍了EOS的专用IDE工具EOS Studio,该工具的优势是简单,易上手,但是灵活性低,且对系统资源开销大,依赖多,容易出现功能异常.那么我们开发人员最容易使用的,可能还是深度定制 ...

  2. EOS基础全家桶(五)钱包管理

    简介 本篇我们将会学习EOS自带的命令行钱包的使用方法,我们将会使用cleos来控制keosd服务对本地钱包进行管理. 虽然现在市面上已经有很多支持EOS的钱包了,有Web钱包,有app钱包,还有浏览 ...

  3. EOS基础全家桶(七)合约表操作

    简介 本篇我们开始来为后续合约开发做准备了,先来说说EOS内置的系统合约的功能吧,本篇将侧重于合约表数据的查询,这将有利于我们理解EOS的功能,并可以进行必要的数据查询. EOS基础全家桶(七)合约表 ...

  4. EOS基础全家桶(八)jungle测试网的使用

    简介 前面我们已经学习了一些EOS的基础知识了,但是在EOS主网上的很多操作(比如:抵押.赎回.买卖内存)都是需要EOS链被正式激活后才可使用,而激活EOS链还需要很多的准备操作,我打算在单独的一篇文 ...

  5. EOS基础全家桶(十)交易Action操作

    简介 区块链上的所有操作都是通过交易(Transaction)上链的,无论你是转账交易还是发起的智能合约的调用,而EOS和传统区块链不同的是EOS在一个交易里可以发起多个行为(Action),这使得E ...

  6. EOS基础全家桶(十四)智能合约进阶

    简介 通过上一期的学习,大家应该能写一些简单的功能了,但是在实际生产中的功能需求往往要复杂很多,今天我就继续和大家分享下智能合约中的一些高级用法和功能. 使用docker编译 如果你需要使用不同版本的 ...

  7. EOS基础全家桶(六)账号管理

    简介 本篇我们会学习最基本的账号相关的操作,包括了创建账号和查询,关于账号资源的操作因为必须先部署系统合约,所以我们会留到后面单独写一篇来讲解. 6-EOS基础全家桶(六)账号管理 简介 账号介绍 账 ...

  8. EOS基础全家桶(十三)智能合约基础

    简介 智能合约是现在区块链的一大特色,而不同的链使用的智能合约的虚拟机各不相同,编码语言也有很大差异.而今天我们开始学习EOS的智能合约,我也是从EOS初期一直开发合约至今,期间踩过无数坑,也在Sta ...

  9. EOS基础全家桶(十一)智能合约IDE-EOS_Studio

    简介 我们马上要进入智能合约的开发了,以太坊最初提供了智能合约的功能,并宣告区块链进入2.0时代,而EOS的智能合约更进一步,提供了更多的便利性和可能性.为了进一步了解智能合约,并进行开发,我们需要先 ...

随机推荐

  1. 常见PHP安全网站漏洞及防范措施

    一:常见PHP安全网站漏洞 对于PHP的漏洞,目前常见的漏洞有五种.分别是Session文件漏洞.SQL注入漏洞.脚本命令执行漏洞.全局变量漏洞和文件漏洞.这里分别对这些漏洞进行简要的介绍. 1.se ...

  2. mybatis 添加后获得该新增数据自动生成的 id

    // useGeneratedKeys默认值为false,keyProperty的值对应的是User类中的主键字段名 // mybatis 写法如下 <insert id="inser ...

  3. 【转】蛋糕尺寸(寸)、尺寸(CM)、重量(磅)、食用人数对照换算参考表

    转自:https://www.douban.com/note/324832054/ 蛋糕尺寸(寸).尺寸(CM).重量(磅).食用人数对照换算参考表 馋嘴猫DIY烘焙 2014-01-04 12:15 ...

  4. C++如何保留2位小数输出

    cout<<setiosflags(ios::);//需要头文件#include <iomanip> 然后再输出实数类型变量即可以保留2位小数输出了,当然你要保留三位小数,se ...

  5. android应用程序源码结构分析

    工程; 1. src文件夹存放源码. 2. gen下有跟src中一样的包文件,内部有一个名为R.java类,它是自动生成的一个类:该目录不用我们开发人员维护, 但又非常重要的目录 . 该目录用来存放由 ...

  6. 《英诗金库》I-46:Full Fathom Five, by W. Shakespeare

    作品基本信息 作品名称:A Sea Dirge(海的挽歌) 作者:William Shakespeare(威廉·莎士比亚) 出版年代:1612 编注:此诗选自<暴风雨>第一幕第二场.标题& ...

  7. Geohash介绍

    Geohash介绍 Geohash是一种地址编码,能把二维的经纬度编码成字符串,某一区域范围内的经纬度是一致的,其中有编码长度控制区域的范围 精度参考 使用场景 实时LBS应用 LBS应用中,搜索某某 ...

  8. 致敬——C语言

    2016年4月26日21:00      OJ考试平台关闭,C语言这门课程也就随之结束了. 回顾学习历程,坦诚的讲学习期间也努力过也颓废过,但从来没有绝对的放弃过.由于种种客观原因与主观原因导致没有给 ...

  9. js操作复选框

    js操作复选框 JavaScript 代码: //复选框全选 $(function () { $("#select_all").click(function () { $(&quo ...

  10. 将mysql数据库集成到idea中

    将mysql数据库集成到idea中