本文介绍如何安装EOS节点软件并接入EOS主网,主要包括如下内容:node
database dirty flag set
错误时如何处理?若是但愿高效学习EOS区块链应用开发,推荐汇智网的在线互动教程《EOS智能合约与DApp开发入门》。git
本文以ubuntu16.04为例介绍EOS节点软件的安装方法,其余操做系统 可参考官网文档。github
一、下载json
首先到官方github下载最新版的eosio软件安装包:ubuntu
~$ wget https://github.com/eosio/eos/releases/download/v1.6.2/eosio_1.6.2-1-ubuntu-16.04_amd64.deb
二、安装ide
下载完成安装本地软件包:学习
~$ sudo apt install ./eosio_1.6.2-1-ubuntu-16.04_amd64.deb
三、验证区块链
安装完成后验证软件版本:ui
~$ nodeos --version v1.6.2
首先建立一个新的目录做为工做环境,起个容易看懂的名字,例如:spa
~$ mkdir eos-main
一、下载主网创世文件
EOS节点要接入主网,须要在初次启动nodeos时指定主网的创世文件genesis.json, 能够从CryptoLions的github上下载这个文件:
~/eos-main$ wget https://github.com/CryptoLions/EOS-MainNet/blob/master/genesis.json
二、下载主网配置文件
CryptoLions一样也提供了主网的配置文件config.ini,一样下载到本地:
~/eos-main$ wget https://github.com/CryptoLions/EOS-MainNet/blob/master/config.ini
三、下载最新可用节点清单
从privex.io下载最新的可用EOS节点清单,保存到peers.txt文件中
~/eos-main$ wget https://eosnodes.privex.io/?config=1 -O peers.txt
四、更新主网配置文件中的节点列表
在配置文件config.ini中,找到全部的p2p-peer-address
配置项,例如:
p2p-peer-address = bp.cryptolions.io:9876 ... p2p-peer-address = mainnet.eoseco.com:10010
而后用peers.txt中的内容替换。
第一次启动nodeos时,须要指定创世文件,而且清理以前的区块:
~/eos-main$ nodeos --config-dir . --data-dir . --genesis-json genesis.json --delete-all-blocks
启动以后,能够另开终端查看同步进度:
~$ cleos get info
观察输出结果中的chain_id
以下所示为aca376...
,就代表已经接入主网:
{ "server_version": "c8f26078", "chain_id": "aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906", "head_block_num": 3712, "last_irreversible_block_num": 3711, "last_irreversible_block_id": "00000e7f1b9d5b50256654921f5ca8a91aa3168f0c0a3e8ea3bbea1ba5c00fe2", "head_block_id": "00000e80a8c5b9e7acc9c063113668b7eae9025aa38a8c8ac3606df6256086e3", "head_block_time": "2018-06-09T12:29:10.500", "head_block_producer": "eosio", "virtual_block_cpu_limit": 2675279111, "virtual_block_net_limit": 42941084, "block_cpu_limit": 100000000, "block_net_limit": 1048576 }
能够将上面信息中的head_block_num
与eospark上的最新区块号对比, 便可得知同步进度。当二者一致后,表示节点与EOS主网达成同步。
有时可能由于种种缘由须要从新启动nodeos,切记不要强制杀掉nodeos,让它 有喘息清理的机会。应当用以下的命令通知nodeos退出:
~$ pkill nodeos
这样关闭的nodeos不会有历史垃圾,所以再次启动时会很顺利:
~/eos-main$ nodeos --config-dir . --data-dir .
注意,在第二次以及之后的启动中,必定__不要__再用__--delete-all-blocks__参数,不然 你会一遍遍的从零开始!
若是必须强制杀掉nodeos,好比使用pkill -9
或者直接运行中从新启动机器, 那么再次启动nodeos时会失败并收到这个提示:
... database dirty flag set (likely due to unclean shutdown): replay required
这时咱们要么删掉所有区块(使用--delete-all-blocks
参数)从新来过,要么重放交易,好比 硬重放:
~/eos-main$ nodeos nodeos --config-dir . --data-dir . --hard-replay-blockchain
重放问题就是,它也会花掉很长的时间....,虽然比删掉所有区块要好一点。
因此,在关闭nodeos的时候,记得必定温柔一点。