环境要求
- 内存:16-32 GB
- CPU:4-8核CPU(t3 xLarge)
- 存储:至少 650GB SSD(确保它是可扩展的)
安装环境依赖
安装编译环境
~# sudo apt-get install build-essential -y
安装go
~# wget https://dl.google.com/go/go1.17.5.linux-amd64.tar.gz
~# tar xf go1.17.5.linux-amd64.tar.gz -C /usr/local/
~# echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile
~# . /etc/profile
~# go version
go version go1.19 linux/amd64
heimdall
安装heimdall
~# git clone https://github.com/maticnetwork/heimdall
~# cd heimdall/
~/heimdall# git checkout v0.3.0
~/heimdall# make install
# ls -l go/bin/
total 107752
-rwxr-xr-x 1 root root 45106296 Jan 20 16:50 heimdallcli
-rwxr-xr-x 1 root root 65221904 Jan 20 16:50 heimdalld
# cp /root/go/bin/heimdall* /usr/bin/
创建heimdall数据目录
# mkdir /data/polygon/heimdall -pv
Initialize Heimdall configs
# heimdalld init --chain=mainnet --home /data/polygon/heimdall/
# ls -l /data/polygon/heimdall/
total 0
drwx------ 2 root root 169 Jan 20 16:04 config
drwx------ 2 root root 47 Jan 20 16:04 data
# ls -l /data/polygon/heimdall/config/
total 52
-rw-r--r-- 1 root root 957 Jan 20 16:04 app.toml
-rw-r--r-- 1 root root 10558 Jan 20 16:04 config.toml
-rw-r--r-- 1 root root 21417 Jan 20 16:04 genesis.json
-rw-r--r-- 1 root root 1033 Jan 20 16:04 heimdall-config.toml
-rw------- 1 root root 148 Jan 20 16:04 node_key.json
-rw------- 1 root root 349 Jan 20 16:04 priv_validator_key.json
# ls -l /data/polygon/heimdall/data/
total 4
-rw------- 1 root root 48 Jan 20 16:04 priv_validator_state.json
修改配置文件
moniker
# grep moniker /data/polygon/heimdall/config/config.toml
moniker = "polygon-01"
prometheus
# sed -i 's@prometheus = false@prometheus = true@g' /data/polygon/heimdall/config/config.toml
heimdalld.service
[Unit]
Description=heimdalld
StartLimitIntervalSec=500
StartLimitBurst=5
[Service]
Restart=on-failure
RestartSec=5s
WorkingDirectory=/data/polygon/heimdall
ExecStart=/usr/bin/heimdalld start --home "/data/polygon/heimdall" --chain=mainnet --rest-server
Type=simple
LimitNOFILE=65536
User=heimdall
[Install]
WantedBy=multi-user.target
bor
安装bor
~# git clone https://github.com/maticnetwork/bor
~# cd bor
~# git checkout v0.3.3
~# make bor
~# cp bor/build/bin/bor /usr/bin/
创建bor数据目录
# mkdir -pv /data/polygon/bor/data/bor/chaindata
bor.service
[Unit]
Description=bor
StartLimitIntervalSec=500
StartLimitBurst=5
[Service]
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/bor server -config "/data/polygon/bor/config.toml"
Type=simple
KillSignal=SIGINT
User=bor
TimeoutStopSec=120
[Install]
WantedBy=multi-user.target
config.toml
旧版本升级新版本可以使用scripts/getconfig.sh脚本将start.sh参数转换为config.toml文件
chain = "mainnet"
# identity = "node_name"
# log-level = "INFO"
datadir = "/data/polygon/bor/data"
# ancient = ""
# keystore = ""
syncmode = "full"
# gcmode = "full"
gcmode "archive"
# snapshot = true
# ethstats = ""
# ["eth.requiredblocks"]
[p2p]
maxpeers = 50
port = 30303
# maxpendpeers = 50
# bind = "0.0.0.0"
# nodiscover = false
# nat = "any"
# [p2p.discovery]
# v5disc = false
# bootnodes = []
# bootnodesv4 = []
# bootnodesv5 = []
# static-nodes = []
# trusted-nodes = []
# dns = []
# [heimdall]
# url = "http://localhost:1317"
# "bor.without" = false
# grpc-address = ""
[txpool]
nolocals = true
pricelimit = 30000000000
accountslots = 16
globalslots = 32768
accountqueue = 16
globalqueue = 32768
lifetime = "1h30m0s"
# locals = []
# journal = ""
# rejournal = "1h0m0s"
# pricebump = 10
[miner]
gaslimit = 30000000
gasprice = "30000000000"
# mine = false
# etherbase = ""
# extradata = ""
[jsonrpc]
ipcpath = "/data/polygon/bor/bor.ipc"
# ipcdisable = false
# gascap = 50000000
# txfeecap = 5.0
[jsonrpc.http]
enabled = true
port = 8545
host = "0.0.0.0"
api = ["eth", "net", "web3", "txpool", "bor"]
vhosts = ["*"]
corsdomain = ["*"]
# prefix = ""
[jsonrpc.ws]
enabled = false
port = 8546
corsdomain = ["*"]
# prefix = ""
host = "0.0.0.0"
# api = ["web3", "net"]
origins = ["*"]
# [jsonrpc.graphql]
# enabled = false
# port = 0
# prefix = ""
# host = ""
# vhosts = ["*"]
# corsdomain = ["*"]
# [jsonrpc.timeouts]
# read = "30s"
# write = "30s"
# idle = "2m0s"
[gpo]
# blocks = 20
# percentile = 60
# maxprice = "5000000000000"
ignoreprice = "30000000000"
[telemetry]
metrics = true
# expensive = false
# prometheus-addr = ""
# opencollector-endpoint = ""
# [telemetry.influx]
# influxdb = false
# endpoint = ""
# database = ""
# username = ""
# password = ""
# influxdbv2 = false
# token = ""
# bucket = ""
# organization = ""
# [telemetry.influx.tags]
[cache]
cache = 4096
# gc = 25
# snapshot = 10
# database = 50
# trie = 15
# journal = "triecache"
# rejournal = "1h0m0s"
# noprefetch = false
# preimages = false
# txlookuplimit = 2350000
# timeout = "1h0m0s"
# [accounts]
# unlock = []
# password = ""
# allow-insecure-unlock = false
# lightkdf = false
# disable-bor-wallet = false
# [grpc]
# addr = ":3131"
# [developer]
# dev = false
# period = 0
Polygon Chains Snapshots
Chains Snapshots 下载
https://snapshots.matic.today/
Heimdall Snapshots
# wget -c https://matic-blockchain-snapshots.s3-accelerate.amazonaws.com/matic-mainnet/heimdall-snapshot-2023-01-17.tar.gz -O - | tar -xzf - -C /data/polygon/heimdalld/data/
bor Snapshots
# wget -c https://matic-blockchain-snapshots.s3-accelerate.amazonaws.com/matic-mainnet/bor-fullnode-snapshot-2023-01-17.tar.gz -O - | tar -xzf - -C /data/polygon/bor/data/bor/chaindata
Start services
启动heimdall
# systemctl enable heimdalld && systemctl start heimdalld
启动bor
# systemctl enable bor && systemctl start bor
查看服务日志
heimdall服务日志
# journalctl -u heimdalld.service -f
bor服务日志
# journalctl -u bor.service -f
查看Heimdall区块同步状态
使用以下命令检查节点的同步状态:
# curl localhost:26657/status
如果节点已完成同步,将看到响应:
"catching_up": false
参考文档
snapshot: https://snapshot.polygon.technology/
polygon: https://wiki.polygon.technology/docs/develop/network-details/full-node-binaries
标签:false,polygon,mainnet,data,bor,heimdall,root,0.3 From: https://www.cnblogs.com/wangguishe/p/17059829.html