EOS主網節點搭建

環境搭建

github上下載源碼,最好是2.0以後的版本,不然會有很多問題

git clone https://github.com/EOSIO/eos -b v2.0.3 --recursive
編譯
cd eos/scripts/
./eosio_build.sh

這個過程需要幾個小時的時間,完成會出現下面的內容

[100%] Built target print_floats


	 _______  _______  _______ _________ _______
	(  ____ \(  ___  )(  ____ \\__   __/(  ___  )
	| (    \/| (   ) || (    \/   ) (   | (   ) |
	| (__    | |   | || (_____    | |   | |   | |
	|  __)   | |   | |(_____  )   | |   | |   | |
	| (      | |   | |      ) |   | |   | |   | |
	| (____/\| (___) |/\____) |___) (___| (___) |
	(_______/(_______)\_______)\_______/(_______)

	EOSIO has been successfully built. 00:38:51

	To verify your installation run the following commands:

	export PATH=${HOME}/opt/mongodb/bin:$PATH
	/home/jian/opt/mongodb/bin/mongod -f /home/jian/opt/mongodb/mongod.conf &
	cd /home/jian/eos/build; make test

	For more information:
	EOSIO website: https://eos.io
	EOSIO Telegram channel @ https://t.me/EOSProject
	EOSIO resources: https://eos.io/resources/
	EOSIO Stack Exchange: https://eosio.stackexchange.com
	EOSIO wiki: https://github.com/EOSIO/eos/wiki
安裝
./eosio_install.sh

執行之後所有可執行程序會在/root/eosio/2.0/bin目錄下

設置軟連接
ln -fs /root/eosio/2.0/bin/nodeos /usr/local/bin/nodeos
ln -fs /root/eosio/2.0/bin/cleos /usr/local/bin/cleos
查看版本
nodeos -v
v1.8.11

同步區塊

EOS主網區塊數據很大,要同步所有區塊的數據需要十幾天以上,這裏分別介紹同步全節點和快照(snapshots)同步的具體步驟

全節點同步

準備工作

準備至少1TB的硬盤,最好SSD

編輯配置文件
  • 注意:配置文件中的filter-on = *參數打開的話可能會由於內存數據太大導致節點程序退出,所以最好過濾其他數據,只保留指定賬號的數據,格式是filter-on = eosio.token:transfer:,把eosio.token換成你的賬號名即可,注意後面有個冒號。

可以編輯默認的配置文件 vi ~/.local/share/eosio/nodeos/config/config.ini,也可以自定義配置文件目錄,這裏我自定義在/root目錄下,將下面的配置複製保存

#producer-name = !!!!YOUR_BP_NAME!!!!!!!!
    #signature-provider = YOUR_BLOCK_SIGN_PUB_KEY=KEY:YOUR_BLOCK_SIGN_PRIV_KEY

    agent-name = AgentName

    #blocks-dir = "blocks"
    chain-state-db-size-mb = 65536
    reversible-blocks-db-size-mb = 2048
    contracts-console = false


    http-server-address = 0.0.0.0:8888
    p2p-listen-endpoint = 0.0.0.0:9876
    p2p-server-address = !!YOUR_ENDPOINT_IP_ADDRESS!!:9876
    
    
    http-validate-host = false
    verbose-http-errors = true  
    abi-serializer-max-time-ms = 2000  

    chain-threads = 8
    http-threads = 6
    
    access-control-allow-origin = *
    access-control-allow-headers = Origin, X-Requested-With, Content-Type, Accept
    # access-control-max-age =
    # access-control-allow-credentials = false

    # wasm-runtime = wabt
    wasm-runtime = eos-vm-jit
    eos-vm-oc-enable = true

    #produce-time-offset-us = 250000
    last-block-time-offset-us = -300000


    # Safely shut down node when free space remaining in the chain state database drops below this size (in MiB). (eosio::chain_plugin)
    chain-state-db-guard-size-mb = 128 
    # Safely shut down node when free space remaining in the reverseible blocks database drops below this size (in MiB). (eosio::chain_plugin) 
    reversible-blocks-db-guard-size-mb = 2
    
    p2p-max-nodes-per-host = 150

    # actor-whitelist =
    # actor-blacklist =
    # contract-whitelist =
    # contract-blacklist =
    # filter-on =




    # SSL
    # Filename with https private key in PEM format. Required for https (eosio::http_plugin)
    # https-server-address =
    # Filename with the certificate chain to present on https connections. PEM format. Required for https. (eosio::http_plugin)
    # https-certificate-chain-file =
    # Filename with https private key in PEM format. Required for https (eosio::http_plugin)
    # https-private-key-file =


    allowed-connection = any

    max-clients = 150
    connection-cleanup-period = 30
    network-version-match = 0
    sync-fetch-span = 2000
    enable-stale-production = false

    pause-on-startup = false
    max-transaction-time = 30
    max-irreversible-block-age = -1
    txn-reference-block-lag = 0
    
    plugin = eosio::chain_api_plugin
    plugin = eosio::history_plugin
    plugin = eosio::history_api_plugin
    plugin = eosio::chain_plugin
    
    filter-on = *
    
    #plugin = net_plugin
    #plugin = net_api_plugin


    #p2p-peer-address =
    #p2p-peer-address =
    #p2p-peer-address =

    #p2p-peer-address = 172.2.0.100:9876
    #p2p-peer-address = 172.2.0.200:9876

    #Other Pub BP nodes
    #p2p-peer-address =
    #p2p-peer-address =


p2p-peer-address = bp.cryptolions.io:9876
p2p-peer-address = p2p.mainnet.eospace.io:88
p2p-peer-address = eu-west-nl.eosamsterdam.net:9876
p2p-peer-address = p2p.mainnet.eosgermany.online:9876
p2p-peer-address = 35.197.190.234:19878
p2p-peer-address = mainnet.genereos.io:9876
p2p-peer-address = mainnet.eospay.host:19876
p2p-peer-address = 130.211.59.178:9876
p2p-peer-address = 54.153.59.31:9999
p2p-peer-address = 94.130.250.22:9806
p2p-peer-address = peer.main.alohaeos.com:9876
p2p-peer-address = peer.eosn.io:9876
p2p-peer-address = prod.mainnet.eos.cybex.io:9888
p2p-peer-address = p2p-1.eosnetwork.io:9876
p2p-peer-address = p.jeda.one:3322
p2p-peer-address = eosbattles.com:9877
p2p-peer-address = 34.226.76.22:9876
p2p-peer-address = mainnet.eosoasis.io:9876
p2p-peer-address = node.eosflare.io:1883
p2p-peer-address = mainnet.eoscalgary.io:5222
p2p-peer-address = eos-p2p.worbli.io:33981
p2p-peer-address = 18.188.38.175:9876
p2p-peer-address = 18.221.255.38:9876
p2p-peer-address = eos.staked.us:9870
p2p-peer-address = peering.dutcheos.io:9876
p2p-peer-address = 18.188.4.97:9876
p2p-peer-address = 18.191.125.105:9876
p2p-peer-address = boot.eostitan.com:9876
p2p-peer-address = eosboot.chainrift.com:9876
p2p-peer-address = dc1.eosemerge.io:9876
p2p-peer-address = m.eosvibes.io:9876
p2p-peer-address = node1.eosphere.io:9876
p2p-peer-address = node2.eosphere.io:9876
p2p-peer-address = 45.33.60.65:9820
p2p-peer-address = peering.eosio.cr:1976
p2p-peer-address = peering.eosio.cr:5418
p2p-peer-address = 54.203.121.17:19866
p2p-peer-address = eosnode.fi:9888
p2p-peer-address = api.eosuk.io:12000
p2p-peer-address = fullnode.eoslaomao.com:443
p2p-peer-address = new.eoshenzhen.io:10034
p2p-peer-address = peer.eosio.sg:9876
p2p-peer-address = eos.nodepacific.com:9876
p2p-peer-address = 18.234.6.119:80
p2p-peer-address = eu1.eosdac.io:49876
p2p-peer-address = br.eosrio.io:9876
p2p-peer-address = p2p-public.hkeos.com:19875
p2p-peer-address = node.eosmeso.io:9876
p2p-peer-address = pub1.eostheworld.io:9876
p2p-peer-address = 807534da.eosnodeone.io:19872
p2p-peer-address = mainnet.eoseco.com:10010


actor-blacklist = blacklistmee

#https://eoscorearbitration.io/wp-content/uploads/2018/07/ECAF_Arbitrator_Order_2018-06-19-AO-001.pdf
actor-blacklist = ge2dmmrqgene
actor-blacklist = gu2timbsguge
actor-blacklist = ge4tsmzvgege
actor-blacklist = gezdonzygage
actor-blacklist = ha4tkobrgqge
actor-blacklist = ha4tamjtguge
actor-blacklist = gq4dkmzzhege

#https://eoscorearbitration.io/wp-content/uploads/2018/07/ECAF_Arbitrator_Order_2018-06-22-AO-002.pdf
actor-blacklist = gu2teobyg4ge
actor-blacklist = gq4demryhage
actor-blacklist = q4dfv32fxfkx
actor-blacklist = ktl2qk5h4bor
actor-blacklist = haydqnbtgene
actor-blacklist = g44dsojygyge
actor-blacklist = guzdonzugmge
actor-blacklist = ha4doojzgyge
actor-blacklist = gu4damztgyge
actor-blacklist = haytanjtgige
actor-blacklist = exchangegdax
actor-blacklist = cmod44jlp14k
actor-blacklist = 2fxfvlvkil4e
actor-blacklist = yxbdknr3hcxt
actor-blacklist = yqjltendhyjp
actor-blacklist = pm241porzybu
actor-blacklist = xkc2gnxfiswe
actor-blacklist = ic433gs42nky
actor-blacklist = fueaji11lhzg
actor-blacklist = w1ewnn4xufob
actor-blacklist = ugunxsrux2a3
actor-blacklist = gz3q24tq3r21
actor-blacklist = u5rlltjtjoeo
actor-blacklist = k5thoceysinj
actor-blacklist = ebhck31fnxbi
actor-blacklist = pvxbvdkces1x
actor-blacklist = oucjrjjvkrom

#https://eoscorearbitration.io/wp-content/uploads/2018/07/ECAF-Temporary-Freeze-Order-2018-07-13-AO-003.pdf
actor-blacklist = neverlandwal
actor-blacklist = tseol5n52kmo
actor-blacklist = potus1111111

#https://eoscorearbitration.io/wp-content/uploads/2018/07/ECAF-Order-of-Emergency-Protection-2018-07-19-AO-004.pdf
actor-blacklist = craigspys211

#https://eoscorearbitration.io/wp-content/uploads/2018/08/ECAF-Order-of-Emergency-Protection-2018-08-07-AO-005.pdf
actor-blacklist = eosfomoplay1

#https://eoscorearbitration.io/wp-content/uploads/2018/08/ECAF-Order-of-Emergency-Protection-2018-08-28-AO-006.pdf
actor-blacklist = wangfuhuahua

#https://eoscorearbitration.io/wp-content/uploads/2018/09/ECAF-Order-of-Emergency-Protection-2018-09-07-AO-008.pdf
#https://eoscorearbitration.io/wp-content/uploads/2018/09/ECAF-Order-of-Emergency-Protection-2018-09-24-AO-010.pdf
#actor-blacklist = ha4timrzguge
actor-blacklist = guytqmbuhege

#https://eoscorearbitration.io/wp-content/uploads/2018/09/ECAF-Order-of-Emergency-Protection-2018-09-09-AO-009.pdf
actor-blacklist = huobldeposit

#https://eoscorearbitration.io/wp-content/uploads/2018/09/ECAF-Order-of-Emergency-Protection-2018-09-25-AO-011.pdf
actor-blacklist = gm3dcnqgenes
actor-blacklist = gm34qnqrepqt
actor-blacklist = gt3ftnqrrpqp
actor-blacklist = gtwvtqptrpqp
actor-blacklist = gm31qndrspqr
actor-blacklist = lxl2atucpyos

#https://eoscorearbitration.io/wp-content/uploads/2018/10/ECAF-Order-of-Emergency-Protection-2018-10-05-AO-012.pdf
actor-blacklist = g4ytenbxgqge
actor-blacklist = jinwen121212
actor-blacklist = ha4tomztgage
actor-blacklist = my1steosobag
actor-blacklist = iloveyouplay
actor-blacklist = eoschinaeos2
actor-blacklist = eosholderkev
actor-blacklist = dreams12true
actor-blacklist = imarichman55

#https://eoscorearbitration.io/wp-content/uploads/2018/10/ECAF-Order-of-Emergency-Protection-2018-10-05-AO-013.pdf
actor-blacklist = gizdcnjyg4ge

#https://eoscorearbitration.io/wp-content/uploads/2018/10/ECAF-Order-of-Emergency-Protection-2018-10-12-AO-014.pdf
actor-blacklist = gyzdmmjsgige

#https://eoscorearbitration.io/wp-content/uploads/2018/10/ECAF-Order-of-Emergency-Protection-2018-10-13-AO-015.pdf
actor-blacklist = guzdanrugene
actor-blacklist = earthsop1sys

#https://eoscorearbitration.io/wp-content/uploads/2018/10/ECAF-Order-of-Emergency-Protection-2018-10-31-AO-017.pdf
actor-blacklist = refundwallet
actor-blacklist = jhonnywalker
actor-blacklist = alibabaioeos
actor-blacklist = whitegroupes
actor-blacklist = 24cryptoshop
actor-blacklist = minedtradeos

#Manual at 2019.02.22 (MainNet gropup)
actor-blacklist = newdexmobapp
actor-blacklist = ftsqfgjoscma
actor-blacklist = hpbcc4k42nxy
actor-blacklist = 3qyty1khhkhv
actor-blacklist = xzr2fbvxwtgt
actor-blacklist = myqdqdj4qbge
actor-blacklist = shprzailrazt
actor-blacklist = qkwrmqowelyu
actor-blacklist = lhjuy3gdkpq4
actor-blacklist = lmfsopxpr324
actor-blacklist = lcxunh51a1gt
actor-blacklist = geydddsfkk5e
actor-blacklist = pnsdiia1pcuy
actor-blacklist = kwmvzswquqpb
actor-blacklist = guagddoefdqu
編輯genesis.json

將下面的配置複製保存

vi genesis.json
{
  "initial_timestamp": "2018-06-08T08:08:08.888",
  "initial_key": "EOS7EarnUhcyYqmdnPon8rm7mBCTnBoot6o7fE2WzjvEX2TdggbL3",
  "initial_configuration": {
    "max_block_net_usage": 1048576,
    "target_block_net_usage_pct": 1000,
    "max_transaction_net_usage": 524288,
    "base_per_transaction_net_usage": 12,
    "net_usage_leeway": 500,
    "context_free_discount_net_usage_num": 20,
    "context_free_discount_net_usage_den": 100,
    "max_block_cpu_usage": 200000,
    "target_block_cpu_usage_pct": 1000,
    "max_transaction_cpu_usage": 150000,
    "min_transaction_cpu_usage": 100,
    "max_transaction_lifetime": 3600,
    "deferred_trx_expiration_window": 600,
    "max_transaction_delay": 3888000,
    "max_inline_action_size": 4096,
    "max_inline_action_depth": 4,
    "max_authority_depth": 6
  }
}
第一次啓動

默認端口是8888

nodeos --config-dir . --data-dir /mnt/omnidata --genesis-json genesis.json --delete-all-blocks

--config-dir:配置文件config.ini所在目錄

--data-dir:區塊數據存放目錄

--genesis-json:文件目錄

--delete-all-blocks:刪除所有舊區塊數據

再次啓動

不需要--genesis-json--delete-all-blocks命令

nodeos --config-dir . --data-dir /mnt/omnidata
停止節點

如果強制關閉nodeos,下次啓動時會報錯database dirty flag set (likely due to unclean shutdown): replay required

所以安全退出要使用下面的命令

pkill nodeos

如果出現上面的報錯,在啓動時需要加參數--hard-replay-blockchain重放區塊,會花掉很長的時間

snapshot同步

snapshot,即快照同步,當你需要快速搭建節點,不需要之前區塊的歷史數據的時候適用。快照同步不需要genesis.json文件,當快照初始化完成後,區塊會從快照備份的那個區塊開始同步數據,包括交易和區塊數據。

編輯配置文件

跟全節點同步一樣。

下載快照備份文件

從以下兩個網站可以下載到快照備份文件

  • https://proxy.eosnode.tools 【按日期】
  • http://snapshots.eossweden.org 【按區塊數】

下載完成後解壓,解壓得到一個.bin文件

tar -xzvf snapshot-106753286.bin.tar.gz
初始化快照

啓動命令加上--snapshot即可,後面是解壓出來的bin文件路徑

nodeos --config-dir . --data-dir /mnt/omnidata --snapshot /mnt/omnidata/snapshot-106753286.bin

大約10分鐘即可初始化完成,佔用硬盤約12GB

再次啓動

正常啓動即可

nodeos --config-dir . --data-dir /mnt/omnidata
停止節點
pkill nodeos
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章