最近一直都在处理 EOS 同步相关的事情,刚好今天有空,就将最近整理的资料发布出来。
使用 nodeos 快速做一个 EOS RPC 节点
1.下载 nodeos
1
| wget https://github.com/EOSIO/eos/releases/download/v1.5.3/eosio_1.5.3-1-ubuntu-18.04_amd64.deb
|
1
| sudo apt install ./eosio_1.5.3-1-ubuntu-18.04_amd64.deb
|
查看当前 nodeos 版本
2.下载logs文件
1
| wget $(wget --quiet "https://eosnode.tools/api/blocks?limit=1" -O- | jq -r '.data[0].s3') -O blocks_backup.tar.gz
|
1
| tar xvzf blocks_backup.tar.gz
|
3.配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| agent-name = EOSNODE
chain-state-db-size-mb = 10240 reversible-blocks-db-size-mb = 340
http-server-address = 0.0.0.0:8870
http-validate-host = false verbose-http-errors = true abi-serializer-max-time-ms = 2000
access-control-allow-origin = * allowed-connection = any
max-clients = 2 connection-cleanup-period = 30 network-version-match = 1 sync-fetch-span = 2000 enable-stale-production = true
max-implicit-request = 1500 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::chain_plugin
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| p2p-peer-address = 185.253.188.1:19876 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
|
4.启动
执行以下命令,进行 EOS 同步:
1
| nodeos --data-dir /blockData/blocks --config-dir /blockData --hard-replay --wasm-runtime wabt
|
执行完命令后,数据将进行replay。replay 结束后,节点将正常进行同步。
后期启动节点时,只需要执行:
1
| nodeos --data-dir /blockData/blocks --config-dir /blockData
|
EOS 使用快照快速启动
1. 下载快照文件:
快照备份地址
目录结构:
.
├── config.ini
├── node-data
│ ├── blocks
│ ├── snapshots
│ └── state
└── snapshot.sh
- 注意:使用快照备份的方式启动时,需要删除 blocks/state 这两个文件夹
2. 配置文件:
vim config.ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| agent-name = EOSNODEOS
chain-state-db-size-mb = 10240 reversible-blocks-db-size-mb = 1024
http-server-address = 0.0.0.0:8870
http-validate-host = false verbose-http-errors = true abi-serializer-max-time-ms = 2000
access-control-allow-origin = * allowed-connection = any
max-clients = 2 sync-fetch-span = 3000 connection-cleanup-period = 30 enable-stale-production = false
plugin = eosio::chain_api_plugin plugin = eosio::chain_plugin
p2p-peer-address = bp.cryptolions.io:9876 p2p-peer-address = p2p.mainnet.eosgermany.online:9876 p2p-peer-address = mainnet.eospay.host:19876 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 = p.jeda.one:3322 p2p-peer-address = peering.eosio.cr:1976 p2p-peer-address = eos.nodepacific.com:9876 p2p-peer-address = eu1.eosdac.io:49876 p2p-peer-address = pub1.eostheworld.io:9876 p2p-peer-address = 807534da.eosnodeone.io:19872 p2p-peer-address = mainnet.eoseco.com:10010
|
3. 初次启动脚本:
1
| nodeos --config-dir ./ --data-dir ./node-data --snapshot ./node-data/snapshots/snapshot-023e5e8813f687c6c5ffcf6eae853eb24f78d90b475dac4fb94face8c8308e4f.bin
|
4. 再次启动:
1
| nodeos --config-dir ./ --data-dir ./node-data
|
5. 验证:
1 2 3 4 5 6 7 8 9 10 11 12 13
| const FIBOS = require("fibos.js"); const fibos = FIBOS({ chainId: "aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906", httpEndpoint: "http://127.0.0.1:8871", keyProvider: "", logger: { log: null, error: null } });
let r = fibos.getBlockSync("最新快高度"); console.log(r);
|
6.生成快照
1. 添加插件
在 config.ini 中添加:
1
| plugin = eosio::producer_api_plugin
|
- 注意: 开启该插件后,请确保你的节点放置在内网无法被其他地方访问到。
2. 设置备份目录
启动时添加参数:
1
| --snapshots-dir ../snapshots-backups
|
3. 创建快照
1
| curl http://curl http://127.0.0.1:8870/v1/producer/create_snapshot
|
按照目前EOS的大小,这一步大约需要耗时 10~15 分钟。快照创建结束后,在 snapshots-backups 目录下,便生成相应的快照文件。
7. 总结:
优点:
- 使用快照方式能够快速启动节点同时保证和主网同步。
- 使用快照的方式能够节省磁盘空间。
缺点
- 使用快照启动的节点,快照高度之前的区块数据无法获取。