Welcome Zstake Service
0G Labs
Validator
This guide was partially excerpted from the guides by itrocket, JosephTran, and ValidatorVN.
⌨️
1source <(curl -s https://itrocket.net/api/testnet/og/autoinstall/)
Install
⌨️
1sudo apt update
2sudo apt install curl git jq build-essential gcc unzip wget lz4 -y
Text
1cd $HOME && \
2ver="1.23.3" && \
3wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" && \
4sudo rm -rf /usr/local/go && \
5sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" && \
6rm "go$ver.linux-amd64.tar.gz" && \
7echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile && \
8source $HOME/.bash_profile && \
9go version
Text
1# Update or add MONIKER
2grep -q '^export MONIKER=' ~/.bash_profile && \
3 sed -i 's/export MONIKER="[^"]*"/export MONIKER="zstake"/' ~/.bash_profile || \
4 echo 'export MONIKER="zstake"' >> ~/.bash_profile
5
6# Update or add CHAIN_ID
7grep -q '^export CHAIN_ID=' ~/.bash_profile && \
8 sed -i 's/export CHAIN_ID="[^"]*"/export CHAIN_ID="zgtendermint_16600-2"/' ~/.bash_profile || \
9 echo 'export CHAIN_ID="zgtendermint_16600-2"' >> ~/.bash_profile
10
11# Update or add WALLET_NAME
12grep -q '^export WALLET_NAME=' ~/.bash_profile && \
13 sed -i 's/export WALLET_NAME="[^"]*"/export WALLET_NAME="wallet"/' ~/.bash_profile || \
14 echo 'export WALLET_NAME="wallet"' >> ~/.bash_profile
15
16# Update or add RPC_PORT
17grep -q '^export RPC_PORT=' ~/.bash_profile && \
18 sed -i 's/export RPC_PORT="[^"]*"/export RPC_PORT="26657"/' ~/.bash_profile || \
19 echo 'export RPC_PORT="26657"' >> ~/.bash_profile
20
21# Update or add 0G_HOME
22grep -q '^export OG_HOME=' ~/.bash_profile && \
23 sed -i 's/export OG_HOME="[^"]*"/export OG_HOME="$HOME/.0gchain"/' ~/.bash_profile || \
24 echo 'export OG_HOME="$HOME/.0gchain"' >> ~/.bash_profile
25
26source ~/.bash_profile
- Git install
Text
1cd $HOME
2rm -rf 0g-chain
3git clone https://github.com/0glabs/0g-chain.git
4cd 0g-chain
5git checkout v0.3.1
6git submodule update --init
7make install
80gchaind version
- 0gchain Install
Text
10gchaind config keyring-backend os
20gchaind config chain-id zgtendermint_16600-2
30gchaind init "zstake" --chain-id zgtendermint_16600-2
40gchaind config node tcp://localhost:26657
Text
1rm ~/.0gchain/config/genesis.json
2wget -P ~/.0gchain/config https://vps4.josephtran.xyz/0g/genesis.json
Text
1SEEDS="[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:26656,8f21742ea5487da6e0697ba7d7b36961d3599567@og-testnet-seed.itrocket.net:47656"
2PEERS="80fa309afab4a35323018ac70a40a446d3ae9caf@og-testnet-peer.itrocket.net:11656,[email protected]:12656,[email protected]:12656,[email protected]:12656,[email protected]:12656,[email protected]:12656,[email protected]:12656,[email protected]:12656,[email protected]:12656,[email protected]:12656,[email protected]:12656,[email protected]:12656,[email protected]:12656,[email protected]:12656,[email protected]:12656,[email protected]:12656,[email protected]:12656"
3sed -i -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*seeds *=.*/seeds = \"$SEEDS\"/}" \
4 -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*persistent_peers *=.*/persistent_peers = \"$PEERS\"/}" $HOME/.0gchain/config/config.toml
Text
1sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.0gchain/config/app.toml
2sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.0gchain/config/app.toml
3sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"50\"/" $HOME/.0gchain/config/app.toml
Text
1sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "0.00025ua0gi"|g' $HOME/.0gchain/config/app.toml
2sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.0gchain/config/config.toml
3sed -i -e "s/^indexer *=.*/indexer = \"kv"/" $HOME/.0gchain/config/config.toml
Text
1sed -i 's|^\s*#\?\s*laddr\s*=\s*"tcp://127.0.0.1:26657"|laddr = "tcp://0.0.0.0:26657"|' $HOME/.0gchain/config/config.toml
Text
1sed -i 's|^\s*#\?\s*api\s*=.*|api = "eth,txpool,personal,net,debug,web3"|' $HOME/.0gchain/config/app.toml
Text
1sed -i 's|^\s*#\?\s*address\s*=\s*"127.0.0.1:8545"|address = "0.0.0.0:8545"|' $HOME/.0gchain/config/app.toml
Text
1sed -i 's|^\s*#\?\s*ws-address\s*=\s*"127.0.0.1:8546"|ws-address = "0.0.0.0:8546"|' $HOME/.0gchain/config/app.toml
0gchain Service create
Text
1sudo tee /etc/systemd/system/0gd.service > /dev/null <<EOF
2[Unit]
3Description=0G Node
4After=network.target
5[Service]
6User=$USER
7Type=simple
8ExecStart=$(which 0gchaind) start --home $HOME/.0gchain
9Restart=on-failure
10LimitNOFILE=65535
11[Install]
12WantedBy=multi-user.target
13EOF
- Snapshot Download
Text
1sudo systemctl stop 0gd
2cp $HOME/.0gchain/data/priv_validator_state.json $HOME/.0gchain/priv_validator_state.json.backup
3rm -rf $HOME/.0gchain/data
40gchaind tendermint unsafe-reset-all --home ~/.0gchain/ --keep-addr-book
5curl https://snapshot.validatorvn.com/0g/data.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.0gchain
6mv $HOME/.0gchain/priv_validator_state.json.backup $HOME/.0gchain/data/priv_validator_state.json
7sudo systemctl restart 0gd && sudo journalctl -u 0gd -f -o cat
- This is a service provided by ValidatorVN. Thank you again.
addrbook Download
Text
1wget -O $HOME/.0gchain/config/addrbook.json https://server-5.itrocket.net/testnet/og/addrbook.json
0gd Service Restart
Text
1sudo systemctl daemon-reload && \
2sudo systemctl enable 0gd && \
3sudo systemctl restart 0gd && sudo systemctl status 0gd
Log Check
Text
1tail -f /root/.0gchain/log/chain.log
Block Sync Check
Text
10gchaind status --home /.0gchain | jq '{ latest_block_height: .sync_info.latest_block_height, catching_up: .sync_info.catching_up }'