前言
之前我们进行了开发 EOS 之前的必要准备,因为 EOS 的硬件软件环境要求较高,安装了Ubuntu 16.04 的虚拟机,今天我们的任务是:
-
下载源码并成功部署 EOS 开发环境;
-
链接 EOS 主网尝试同步几个区块;
-
部署一个 EOS 节点,建立单节点测试网。
本文章主要参考了 EOS 的官方文档,任何学习 EOS 的相关还是得看官方的,网上资料的都很乱,并且版本、系统都不尽相同,我还看到有人跑最原始的 EOS 的代码(晕)。这里介绍的是官方的部署方法,并使用了官方的一件部署脚本,很容易操作,希望能帮到你。
注:这虽然不代表windows下不能安装,但官方的文档并未给出windows版本的安装方法。
下载源码,部署 EOS
一、安装 git
我们需要在 GitHub 里拉取EOS的代码,所以需要先安装 git 的工具,就能通过命令来下载项目代码。
首先打开你的终端,输入:
sudo apt-get install git
二、下载 EOS 源代码
利用 git 获取EOS源码及其所有子模块:
git clone https://github.com/eosio/eos --recursive
但是因为众所周知的科学上网,源码的下载速度非常之慢,只有几 kb。因为国内限制了加密链路https的速度,我们只需要改用 http 的方式下载就能加速。接着,我就用:
git clone http://github.com/eosio/eos --recursive
然后就可以看到下载速度变得很快,我们耐心等上一段时间
如果克隆代码时忘了带–recursive参数,可以切换到项目路径下面执行如下命令来更新子模块。
git submodule update --init --recursive
三、运行 EOS 安装脚本
运行自动编译程序:
cd eos
./eosio_build.sh
在准备节点选择Yes开始安装
Beginning build version: 1.2
2018年 11月 20日 星期二 08:10:25 UTC
User: punk
git head id: 60c8baceb0f5a2ec34cf51ff89e9f08810fbc41d
Current branch: master
ARCHITECTURE: Linux
OS name: Ubuntu
OS Version: 16.04
CPU speed: 2701.000Mhz
CPU cores: 4
Physical Memory: 8527 Mgb
Disk install: /dev/sda1
Disk space total: 77G
Disk space available: 63G
这个脚本需要运行很久,我用了一个半小时才编译完毕,所以要耐心等待,运行成功会出现以下结果:
ld: warning: PIE disabled. Absolute addressing (perhaps -mdynamic-no-pic) not allowed in code signed PIE, but used in ___gmpn_divexact_1 from /usr/local/lib/libgmp.a(dive_1.o). To fix this warning, don't compile with -mdynamic-no-pic or link with -Wl,-no_pie
[100%] Built target chain_test
_______ _______ _______ _________ _______
( ____ \( ___ )( ____ \\__ __/( ___ )
| ( \/| ( ) || ( \/ ) ( | ( ) |
| (__ | | | || (_____ | | | | | |
| __) | | | |(_____ ) | | | | | |
| ( | | | | ) | | | | | | |
| (____/\| (___) |/\____) |___) (___| (___) |
(_______/(_______)\_______)\_______/(_______)
EOS.IO has been successfully built. 0:11:48
To verify your installation run the following commands:
/usr/local/bin/mongod -f /usr/local/etc/mongod.conf &
cd /Users/liyuechun/eos/build; make test
For more information:
EOS.IO website: https://eos.io
EOS.IO Telegram channel @ https://t.me/EOSProject
EOS.IO resources: https://eos.io/resources/
EOS.IO wiki: https://github.com/EOSIO/eos/wiki
四、针对内存不够编译失败的
由于本人使用的是 Ubuntu 的虚拟机,在运行自动化脚本过程可能会因为主机物理内存小于 7G,而报错编译失败,这个问题可以通过修改 eos/scripts/eosio_build_ubuntu.sh 脚本中的第27-31行。
先找到并打开 eosio_build_ubuntu.sh 文件:
cd ~/eos/scripts
gedit eosio_build_ubuntu.sh
进入文件后,在第27-31行左右找到 if ["${MERM_MEG}" -lt 7000]; then,并注释掉。
之后在运行第三步的操作。
五、安装可执行文件,并测试
为了方便日后直接调用,我们可以安装可执行程序,这样就不需要每次使用都打开相关目录了!
cd eos
sudo ./eosio_install.sh
同时给出EOS 附带的一些可执行命令:
- nodeos: 区块链服务器节点生成组建
- cleos: 和区块链交互的接口命令
- keosd: EOS 钱包
- eosio-launcher:节点网络组成和部署的应用
安装结束后可以测试一下是否成功,运行代码:
cd eos
cd build
sudo make test
此时检测结果会出现8个错误在节点 node 部分。
The following tests FAILED:
36 - nodeos_run_test-mongodb (Failed)
42 - validate_dirty_db_test (Failed)
49 - nodeos_voting_bnet_lr_test (Failed)
Errors while running CTest
Makefile:116: recipe for target 'test' failed
make: *** [test] Error 8
不用担心。因为我们还没有部署节点,或链上任何网络。
六、配置 nodeos 与 keosd
1. 先配置 nodeos
上面介绍了,nodeos 是eos中控制节点的部分,先运行nodeos:
cd eos/build/programs/nodeos
./nodeos
这时候会报错,纯属正常的,这一步只是为了生成配置文件。我们需要去修改 config.ini 的配置文件。找到 config.ini 文件的位置:
gedit ~/.local/share/eosio/nodeos/config/config.ini
Mac OS:中地址为: ~/Library/Application/Support/eosio/nodeos/config/config.ini
将文中 enable-stale-production 所在行用 # 注释,producer-name 所在行也用 # 注释,然后再在最后面添加如下内容:
# Enable production on a stale chain, since a single-node test chain is pretty much always stale
enable-stale-production = true
# Enable block production with the testnet producers
producer-name = eosio
# Load the block producer plugin, so you can produce blocks
plugin = eosio::producer_plugin
# As well as API and HTTP plugins
plugin = eosio::chain_api_plugin
plugin = eosio::http_plugin
# This will be used by the validation step below, to view history
plugin = eosio::history_api_plugin
2. 再配置 keosd
keosd 是一个轻客户端钱包,负责管理钱包,以便在广播到网络之前保护密钥和签署交易,在本地计算机上运行并在本地存储您的私钥。先运行 keosd :
cd eos/build/programs/keosd
./keosd
会报错,不用担心,同样是为了生成配置文件,再找到配置文件的位置:
gedit ~/eosio-wallet/config.ini
在第二段中,把服务地址设置为:
http-server-address = 127.0.0.1:8889
为了更清晰的看明白,如下图:
七、启动节点,建立测试网
因为刚刚已经执行过一次 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 命令:
cd eos/build/programs/nodeos
./nodeos
启动后每0.5秒,就会生成一个块,并有日志输出到终端滚动显示,如下标出了第一个区块:
网友评论