本文介紹如何安裝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的時候,記得必定溫柔一點。