Install ZetaChain
0.0 System Specs
For full of official document, you can check at here
Hardware | Requirement |
---|---|
CPU | 4 Cores |
RAM | 16 GB |
Disk | 300+ GB Data Disk |
1.0 Prepare
OS: Debian/Ubuntu
bash
sudo apt-get update
sudo apt-get install -y git curl build-essential libssl-dev libc6 libc6-dev cmake ca-certificates gnupg pkg-config clang git-lfs \
snapd protobuf-compiler jq zstd lz4 lzma zip unzip \
libbz2-dev libreadline-dev liblzma-dev libsqlite3-dev \
libboost-all-dev libcap-dev \
screen htop net-tools
sudo tee /usr/bin/checkport > /dev/null <<EOF
#!/bin/sh
sudo lsof -i -P -n | grep LISTEN
EOF
sudo chmod +x /usr/bin/checkport
1.1 Install Golang
bash
sudo snap install go --classic
if ! grep -q 'export PATH=$PATH:~/go/bin' ~/.bashrc; then
echo "Adding ~/go/bin to PATH in ~/.bashrc..."
echo 'export PATH=$PATH:~/go/bin' >> ~/.bashrc
fi
source $HOME/.bashrc
2. zetacored
bash
cd ~
wget https://github.com/zeta-chain/node/releases/download/v27.0.2/zetacored-linux-amd64
sudo chmod +x zetacored-linux-amd64
sudo mv zetacored-linux-amd64 /usr/bin/zetacored
zetacored version
# 27.0.0
3.1 cosmovisor
bash
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@latest
export DAEMON_NAME="zetacored"
export DAEMON_HOME="$HOME/.zetacored"
cosmovisor init $(which zetacored)
3.2 Add upgrade (option)
https://www.zetachain.com/docs/reference/network/proposals
bash
export VERSION="v27"
export BIN_URL="https://github.com/zeta-chain/node/releases/download/$VERSION.0.4/zetacored-linux-amd64"
mkdir -p $HOME/.zetacored/cosmovisor/upgrades/$VERSION/bin
wget -O $HOME/.zetacored/cosmovisor/upgrades/$VERSION/bin/zetacored $BIN_URL
chmod +x $HOME/.zetacored/cosmovisor/upgrades/$VERSION/bin/zetacored
4. Init
Mainnet
bash
# Set node configuration
zetacored config chain-id zetachain_7000-1
zetacored config node tcp://localhost:26657
# Initialize the node
export MONIKER=p10node
zetacored init $MONIKER --chain-id zetachain_7000-1
# Download genesis and configs
wget https://raw.githubusercontent.com/zeta-chain/network-config/main/mainnet/genesis.json -O ~/.zetacored/config/genesis.json
wget https://raw.githubusercontent.com/zeta-chain/network-config/main/mainnet/client.toml -O ~/.zetacored/config/client.toml
wget https://raw.githubusercontent.com/zeta-chain/network-config/main/mainnet/config.toml -O ~/.zetacored/config/config.toml
wget https://raw.githubusercontent.com/zeta-chain/network-config/main/mainnet/app.toml -O ~/.zetacored/config/app.toml
sed -i -e "s|^moniker *=.*|moniker = \"$MONIKER\"|" $HOME/.zetacored/config/config.toml
# Add seeds
seeds="[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:27156,[email protected]:1550,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656"
sed -i -e "s|^seeds *=.*|seeds = \"$seeds\"|" $HOME/.zetacored/config/config.toml
sed -i -e "s|^persistent_peers *=.*|persistent_peers = \"$seeds\"|" $HOME/.zetacored/config/config.toml
#
curl -Ls https://files.p10node.com/zeta/addrbook.json > $HOME/.zetacored/config/addrbook.json
# Set minimum gas price
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"10aNGL\"|" $HOME/.zetacored/config/app.toml
# Set pruning
sed -i \
-e 's|^pruning *=.*|pruning = "custom"|' \
-e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "5000"|' \
-e 's|^pruning-keep-every *=.*|pruning-keep-every = "500"|' \
-e 's|^pruning-interval *=.*|pruning-interval = "10"|' \
$HOME/.zetacored/config/app.toml
# disable indexing
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.zetacored/config/config.toml
# Enable Prometheus Metrics
sed -i 's/prometheus = false/prometheus = true/g' ~/.zetacored/config/config.toml
Change File Limits
bash
sudo tee -a /etc/security/limits.conf > /dev/null <<EOF
* soft nproc 262144
* hard nproc 262144
* soft nofile 262144
* hard nofile 262144
EOF
sudo tee -a /etc/sysctl.conf > /dev/null <<EOF
fs.file-max=262144
EOF
5. Service
bash
sudo tee /etc/systemd/system/zetacored.service > /dev/null << EOF
[Unit]
Description=zetacored node service
After=network-online.target
[Service]
User=$USER
Environment="DAEMON_NAME=zetacored"
Environment="DAEMON_HOME=$HOME/.zetacored"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
Environment="UNSAFE_SKIP_BACKUP=true"
Environment="DAEMON_DATA_BACKUP_DIR=$HOME/.zetacored"
ExecStart=$(which cosmovisor) run start
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
Service Control
bash
# when change service
sudo systemctl daemon-reload
sudo systemctl enable zetacored
sudo systemctl restart zetacored
# check status
sudo systemctl status zetacored
# start service
sudo systemctl start zetacored
# stop service
sudo systemctl stop zetacored
# disable auto launch at boot
sudo systemctl disable zetacored
# check logs
sudo journalctl -u zetacored -f --no-hostname -o cat
Backup
bash
scp -r root@ngl:/root/.zetacored/config/node_key.json node_key.json
scp -r root@ngl:/root/.zetacored/config/priv_validator_key.json priv_validator_key.json
6. Snapshot
bash
# Back up priv_validator_state.json if needed
sudo systemctl stop zetacored
cp $HOME/.zetacored/data/priv_validator_state.json $HOME/.zetacored/priv_validator_state.json.backup
# Clean DB
zetacored tendermint unsafe-reset-all --home $HOME/.zetacored --keep-addr-book
# Download Latest Snapshot
curl -L https://files.p10node.com/zeta/latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.zetacored
# Replace with the backed-up priv_validator_state.json
mv $HOME/.zetacored/priv_validator_state.json.backup $HOME/.zetacored/data/priv_validator_state.json
# Restart service
sudo systemctl restart zetacored
sudo journalctl -u zetacored -f --no-hostname -o cat
7. Status
bash
curl http://localhost:26657/status | jq