我们这个系列文章的目的是希望通过一系列的文章介绍EOS开发的知识,看完这个系列文章完成后,大家能够开发出自己的区块链小程序。
开发EOS Dapp的话,主要有如下的几个步骤:
- 安装和配置EOS开发和测试环境
- 创建钱包,生成私钥和创建EOS账号
- 编写协议代码,编译程序和ABI文件
- 部署协议
目前,官方支持的EOS智能协议的编程语言只有C和C++,推荐的测试环境系统只有Linux和Mac OS。所以如果需要学习EOS智能协议的编程,要有一些C/C++的基本知识,以及对Linux操作系统也有一定的了解。当然并不需要对这些知识达到精通的地步,这篇文章会尽量把这个过程写得简单易懂,以便大部分有编程经验的朋友都能够掌握EOS智能协议的编程技术。
官方文档列出EOSIO支持的操作系统如下:
- 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)
我本人推荐的编辑工具包括:Sublime text,VS Code. Sublime Text简单易用,上手快;VS Code功能比较强大,对各种编程语言的支持都不错。
部署开发环境
首先请确保有一个可用的Linux环境,最好不要用虚拟机上的Linux环境,在编译的时候会遇到莫名奇妙的错误。如果只是开发使用的话,为了以最快的速度能够启动这个测试节点,可以直接使用docker封装的eosio系统。
第一步,用户首先需要安装Docker https://www.docker.com/community-edition,然后获得eos-dev的docker容器,这个会获得一个在unbuntu环境下部署的eos
docker pull eosio/eos-dev:v1.3.0
第二步,创建网络
docker network create eosdev
第三步,启动EOS容器,启动测试节点
$ docker run \
--name nodeos -d -p 8888:8888 \
--network eosdev \
-v /tmp/eosio/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 \
--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"
上面的命令其实是完成测试节点的初始化和启动,加载插件,设置文件夹别名等。
第四步:
运行Keosd(本地命令行钱包和密钥对存储功能)
docker run -d --name keosd --network=eosdev \
-i eosio/eos-dev /bin/bash -c "keosd --http-server-address=0.0.0.0:9876"
第五步:
检查钱包是否顺利生成:
运行nodeos shell,然后检查钱包中的密钥对。
docker exec -it keosd bash
cleos --wallet-url http://127.0.0.1:9876 wallet list keys
通过web api查看本地节点信息:
http://localhost:8888/v1/chain/get_info
第六步:设置docker Cleos的别名:
alias cleos='docker exec -it nodeos /opt/eosio/bin/cleos --url http://127.0.0.1:8888 --wallet-url http://[keosd_ip]:9876'
这样本地节点和钱包的访问就可以直接使用cleos命令了。