EOS开发应用系列之一环境搭建
EOS的开发和应用都需要搭建环境,早先在编译EOS时,因为早先的版本特别不好编译,所以并没有在虚拟机编译。这次准备在虚拟机上进行编译一次。
虚拟机的硬件环境是内存8G,CPU4核,硬盘80G。软件是最新的ubuntu18,推荐使用最新的UBUNTU18,相关的软件资源下载都是最新的。老的版本可能需要更新源。
整体的过程有以下几步:
一、 下载源码
使用命令:
git clone https://github.com/EOSIO/eos --recursive
来下载源码到相关位置,因为EOS需要三个相关的源码下载,所以使用了--recursive
二、 修改相关的启动脚本
这一步的目的是为了修改如果你的硬件环境达不到要求引起的编译停止,举一个例子,假如你的硬件内存不足8G,ubuntu环境可修改(其它OS版本可找到名字相同的脚本修改即可):
eos/scripts/eosio_build_ubuntu.sh:
只需要注释掉离开命令即可。
同理,如果报了某个软件无法下载,比如mongdb,可以去网上下载软件后,修改本文件中的相关命令的connect位置,写上下载到的指定的文件位置即可。
三、 启动编译
版本越新的EOS,编译相对越简单,这里使用的是最新的版本(至12.1),只需要进入到下载目录中执行
./eosis_build.sh
如果上面的修改正确的话,网络也比较通顺,就慢慢等待可以了。机器越好时间越快,在虚拟机里要慢好多。
在这次的编译过程中,从下载源码到编译成功大约耗费了两个小时左右。其中下载耗时约一个小时,编译大约一个小时。
编译成功如下:
四、 EOS启动
EOS启动异常,进入eos/build/program/nodeos,命令如下:
这里主要有两类异常:
1、 使用的老的命令导致插件无法找到,eosio::account_history_api_plugin要修改成eosio::history_api_plugin。
2、 数据导致的异常:
2018-09-20T15:44:48.983 thread-0 chain_plugin.cpp:317 plugin_initialize ] initializing chain plugin
2018-09-20T15:44:48.983 thread-0 chain_plugin.cpp:632 plugin_initialize ] 3190000 block_log_exception: Block log exception
Block log was not setup properly with genesis information.
{}
thread-0 block_log.cpp:475 extract_genesis_state
Failed to initialize
这个错误只需要找到配置和数据文件的位置,进入data文件,删除所有即可。
进入自己的文件夹(/home/xxx),找到.local,找到:
/.local/share/eosio/nodeos/data,清除即可。
rm –rf *
五、 EOS正常启动
./nodeos -e -p eosio --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin --replay-blockchain
六、 配置文件修改启动
如果不想使用这么一大堆的启动命令可修改配置文件来启动单结点:
1、 找到.local下面的config(如前面的述的位置)
对内容进行修改:
http-server-address = 0.0.0.0:8888
access-control-allow-credentials = false
p2p-listen-endpoint = 0.0.0.0:9876
p2p-peer-address = 139.126.63.207:9876
agent-name = "test"
allowed-connection = any
max-clients = 25
connection-cleanup-period = 30
network-version-match = 0
sync-fetch-span = 100
max-implicit-request = 1500
enable-stale-production = true
max-transaction-time = 1000
producer-name = eosio ## 设置账户名称及key
signature-provider = xxxxx
txn-reference-block-lag = 0
plugin = eosio::net_plugin
plugin = eosio::chain_plugin
plugin = eosio::producer_plugin
plugin = eosio::http_plugin
plugin = eosio::history_plugin
plugin = eosio::http_client_plugin
plugin = eosio::net_api_plugin
plugin = eosio::chain_api_plugin
plugin = eosio::history_api_plugin
这里需要说明的是,在老的版本中需要指定genesio.json,如果不指定会自动生成,但在新的版本中已经去除了。如果需要的话可通过--genesis-json传入。
然后进入build/programs/nodeos直接执行:
./nodeos
即可启动,效果同上面的截图。
七、 总结
通过上面的一系列的修改完善就可以进行单结点的操作了。EOS相对于比特币和以太坊还是要求比较高的,特别是硬件。所以建议尽量按照README中的要求来做,这样出现问题的概率比较小。