EOS开发实战 - 怎样在不满足硬件条件的ubuntu上搭建EO
00 导言
EOS是Block.One公司研发的一个区块链底层公链系统,是继比特币、以太坊后的第三代区块链平台,目的是解决现有的区块链应用性能低、安全性差、开发难度高以及过度依赖手续费的问题,实现分布式应用的性能扩展。
要想学习EOS开发,先得学习怎么搭建EOS开发环境。但学习EOS起点真不低,环境搭建要求的硬件条件较高,过程坑多。自己摸索可能需要2-3天甚至一周的时间才能搭建成功。看到这里,喜欢挑战的你千万别吓着了。
EOS目前支持的操作系统如下: 支持的操作系统 硬件要求如下: 硬件要求7G内存,20G硬盘空间目前网络上的环境搭建教程都是比较顺利,可能大部分都是土豪,都是在配置比较高的电脑上完成的。但咱们屌丝是没有钱买高配电脑(承认自己是屌丝是一件非常需要勇气的事),可能大部分内存是4G,CPU是2核的电脑。下面我们就来教教大家怎么在内存4G,CPU 2核的虚拟机操作系统(Ubuntu)里搭建EOS的开发环境。
Ready ...... go!
01:下载Oracle VirtualBox虚拟机
下载Oracle VirtualBox虚拟机02:安装Oracle VirtualBox虚拟机
右击刚刚下载的exe安装文件,以管理员运行,默认下一步下一步就可安装好。 安装Oracle VirtualBox虚拟机03:下载ubuntu操作系统
在这里我们下载最新的Ubuntu,下载的文件比较大(1.8G左右),下载快慢就决定你的网速啦。
下载ubuntu操作系统04:在VirtualBox中安装ubuntu操作系统(重点)
敲黑板,接下来这部分是重点。
然后一路点继续,遇到下面这步停下来,设置磁盘分区,这一步是最关键了,点击其他选项。
点击其他选项 新建分区表 新建分区表 点空闲,再点+号创建新的分区 点空闲,再点+号创建新的分区 创建8G的swap分区 18.png 继续创建200M的分区,挂载到/boot 继续创建200M的分区,挂载到/boot 继续创建15G的分区,挂载到根目录/ 继续创建15G的分区,挂载到根目录/ 剩余的空间全部分给/home 剩余的空间全部分给/home 全部分区情况 全部分区情况 安装成功后点击重启 安装成功后点击重启05:安装git
进入ubuntu系统,右击桌面,打开终端,执行下面命令安装git
$ sudo apt-get install git
06:下载EOS源代码
$ cd ~
$ git clone https://github.com/eosio/eos --recursive
如果克隆代码时忘了带--recursive参数,可以切换到项目路径下面执行如下命令来更新子模块。
$ git submodule update --init --recursive
07:下载mongodb
在执行09:编译和构建的过程中会下载安装很多的依赖包和组件,其中在下载mongodb时可能会卡住,在这里,我们可以用迅雷或者其他下载软件提前下好。然后在自己的$HOME目录下,创建opt目录,并把下载好的mongodb移动到该目录下。
$ cd ~
$ mkdir opt
$ mv 下载\mongodb-linux-x86_64-3.6.3.tgz opt
官网下载: mongodb-linux-x86_64-3.6.3.tgz
百度网盘下载: mongodb-linux-x86_64-3.6.3.tgz 密码:wex9
08:修改build脚本 (重点)
打开build脚本文件
$ cd ~/eos/scripts
$ gedit eosio_build_ubuntu.sh
在第10行左右找到JOBS=...注释掉,并进行替换。
在第28行左右找到if...,这一行的脚本是用来判断计算机的内存是否小于7000 ( 即7G )时,如果小于则打印提示信息并终止执行。把这一行注释掉,并进行替换。
在第210行左右找到STATUS=...,这一行是下载mongodb的,这个地方可能会卡住,所以我们在07提前下载好并放入opt目录。把210~215这几行注释掉。
修改好,记得保存!
09:编译和构建
到此为止,我们一切准备就绪,可以开始编译构建了。执行如下命令开始编译构建。
$ cd ~/eos
$ ./eosio_build.sh
注意:编译构建的过程中会下载和构建其他的依赖包和组件,如boost。所以一定要保持网络畅通。编译过程会持续几个小时甚至1天时间,请耐心等待!去找点其他事做,比如和小姐姐约个会什么的。
如果编译构建成功,会显示如下图。10:安装
编译构建成功后,可以开始安装了。执行如下命令进行安装。
$ cd ~/eos
$ sudo make install
11:启动运行节点
先执行一次nodeos启动节点,不要管对错,按以下步骤操作,
$ nodeos
打开config.ini找到如下选项并进行对照修改:
$ gedit ~/.local/share/eosio/nodeos/config/config.ini
enable-stale-production = true
producer-name = eosio
plugin = eosio::producer_plugin
plugin = eosio::wallet_api_plugin
plugin = eosio::chain_api_plugin
plugin = eosio::http_plugin
plugin = eosio::history_api_plugin
因为刚刚已经执行过一次nodeos命令了,它会在~/.local/share/eosio/nodeos/data/ 这个目录下生成相应的文件,如果现在重新执行nodeos命令,可能会报出如下错误:
Failed to start a pending block, will try again later ...
这时需要先删除这个目录下的所有文件,当然只删除这一次就可以了,以后不用重复这个动作。
$ rm -rf ~/.local/share/eosio/nodeos/data/*
删除后再次运行nodeos命令
$ nodeos
现在我们可以看到节点在不断产生区块了
再另外打开一个终端,执行如下命令可以查看当前区块链信息。
$ cleos get info
12:总结
到这里,我们已经成功的部署好本地的EOS开发环境了。要搭建成功,记得下面两个关键点。
- 内存不够,swap来凑。因为eos的编译和构建过程很耗内存,在编译过程中我查看过它的内存消耗,在某个时刻4G内存确实达到了100%的使用,然后开始使用swap,个人认为内存和swap加起来最好大于10G。
- 记得修改构建脚本的检测条件。虽然我们的内存和swap加起来已经超过8G甚至更多,但脚本只检测内存的值是否大于7G,因此我们要把这个条件改小一些。