Hardware requirements
Characteristic | Specification |
---|---|
Operating System | Ubuntu 18.04 or later LTS |
Number of CPUs | 8 |
RAM | 64GB |
Storage | 1TB NVMe SSD |
Bandwidth | 00mps for Download / Upload |
System updates
sudo apt update
sudo apt install curl git make jq build-essential gcc unzip wget lz4 aria2 -y
Download Galileo folder
wget -O galileo.tar.gz https://github.com/0glabs/0gchain-NG/releases/download/v1.1.1/galileo-v1.1.1.tar.gz
Unzip
tar -xzvf galileo.tar.gz -C $HOME
Copy home directory and set permission
sudo chmod 777 $HOME/galileo/bin/geth
sudo chmod 777 $HOME/galileo/bin/0gchaind
cp $HOME/galileo/bin/geth $HOME/go/bin/geth
cp $HOME/galileo/bin/0gchaind $HOME/go/bin/0gchaind
source $HOME/.bash_profile
geth version
0gchaind version
Variable settings
Replace your Wallet name, Moniker name
echo "export WALLET='josephtran'" >> $HOME/.bash_profile
echo "export MONIKER='JosephTran'" >> $HOME/.bash_profile
echo "export OG_PORT='26'" >> $HOME/.bash_profile
source $HOME/.bash_profile
Node init
#Create and copy directory
mkdir -p $HOME/.0gchaind
cp -r $HOME/galileo/0g-home $HOME/.0gchaind
#Init Geth
geth init --datadir $HOME/.0gchaind/0g-home/geth-home $HOME/galileo/genesis.json
#Init 0gchaind
0gchaind init "JosephTran" --home $HOME/.0gchaind/tmp
# Copy node files to 0gchaind home
cp $HOME/.0gchaind/tmp/data/priv_validator_state.json $HOME/.0gchaind/0g-home/0gchaind-home/data/
cp $HOME/.0gchaind/tmp/config/node_key.json $HOME/.0gchaind/0g-home/0gchaind-home/config/
cp $HOME/.0gchaind/tmp/config/priv_validator_key.json $HOME/.0gchaind/0g-home/0gchaind-home/config/
#delete tmp folder
rm -rf $HOME/.0gchaind/tmp
Custom port setting (Optional)
sed -i -e "
s%:26658%:${OG_PORT}658%g;
s%:26657%:${OG_PORT}657%g;
s%:6060%:${OG_PORT}060%g;
s%:26656%:${OG_PORT}656%g;
s%^external_address = \"\"%external_address = \"$(wget -qO- eth0.me):${OG_PORT}656\"%;
s%:26660%:${OG_PORT}660%g
" $HOME/.0gchaind/0g-home/0gchaind-home/config/config.toml
sed -i -e "s|^node *=.*|node = \"tcp://localhost:${OG_PORT}657\"|" $HOME/.0gchaind/0g-home/0gchaind-home/config/client.toml
sed -i -e "s|^keyring-backend *=.*|keyring-backend = \"os\"|" $HOME/.0gchaind/0g-home/0gchaind-home/config/client.toml
Config pruning, set gas price, enable prometheus, disable indexer
sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.0gchaind/0g-home/0gchaind-home/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.0gchaind/0g-home/0gchaind-home/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"50\"/" $HOME/.0gchaind/0g-home/0gchaind-home/config/app.toml
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.0gchaind/0g-home/0gchaind-home/config/config.toml
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.0gchaind/0g-home/0gchaind-home/config/config.toml
Create 0gchaind service file
cat > /etc/systemd/system/0gchaind.service << EOF
[Unit]
Description=0G Chain Daemon
After=network-online.target
[Service]
User=root
ExecStart=$HOME/go/bin/0gchaind start \\
--rpc.laddr tcp://0.0.0.0:${OG_PORT}657 \\
--chain-spec devnet \\
--kzg.trusted-setup-path=$HOME/galileo/kzg-trusted-setup.json \\
--engine.jwt-secret-path=$HOME/galileo/jwt-secret.hex \\
--kzg.implementation=crate-crypto/go-kzg-4844 \\
--block-store-service.enabled \\
--node-api.enabled \\
--node-api.logging \\
--node-api.address 0.0.0.0:3500 \\
--pruning=nothing \\
--home $HOME/.0gchaind/0g-home/0gchaind-home \\
--p2p.seeds 85a9b9a1b7fa0969704db2bc37f7c100855a75d9@8.218.88.60:26656 \\
--p2p.external_address $(curl -s http://ipv4.icanhazip.com):${OG_PORT}656
Environment=CHAIN_SPEC=devnet
WorkingDirectory=$HOME/galileo
Restart=always
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
Create Geth service file
cat > /etc/systemd/system/geth.service << EOF
[Unit]
Description=Go Ethereum Client
After=network-online.target
Wants=network-online.target
[Service]
User=root
ExecStart=$HOME/go/bin/geth \\
--config $HOME/galileo/geth-config.toml \\
--datadir $HOME/.0gchaind/0g-home/geth-home \\
--networkid 16601 \\
--port 30303 \\
--http.port 8645 \\
--ws.port 8646 \\
--authrpc.port 8551
Restart=always
WorkingDirectory=$HOME/galileo
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
Reload daemon
sudo systemctl daemon-reload && \
sudo systemctl enable 0gchaind
sudo systemctl enable geth.service
Start node
sudo systemctl start 0gchaind
sudo systemctl start geth
Check status:
sudo systemctl status 0gchaind
sudo systemctl status geth
Check log:
sudo journalctl -fu 0gchaind -o cat
sudo journalctl -fu geth -o cat
Check Latest Block Height
0gchaind status | jq '{ latest_block_height: .sync_info.latest_block_height, catching_up: .sync_info.catching_up }'
Block sync status
while true; do
PORT=$(grep -A 3 '^\[rpc\]' $HOME/.0gchaind/0g-home/0gchaind-home/config/config.toml | grep -oP 'laddr = "tcp://[0-9.:]+:\K\d+')
local=$(curl -s localhost:$PORT/status | jq -r '.result.sync_info.latest_block_height//0')
network=$(curl -s http://152.53.102.226:27657/status | jq -r '.result.sync_info.latest_block_height//0')
left=$((network - local))
echo -e "Local: \033[1;34m$local\033[0m | Network: \033[1;36m$network\033[0m | Left: \033[1;31m$left\033[0m"
sleep 5
done
Remove Node:
Please, before proceeding with the next step! All chain data will be lost! Make sure you have backed up your wallet key & priv_validator_key.json!
cd $HOME
sudo systemctl stop 0gchaind geth
sudo systemctl disable 0gchaind geth
sudo rm /etc/systemd/system/0gchaind.service
sudo rm /etc/systemd/system/geth.service
sudo systemctl daemon-reload
sudo rm -f $(which 0gchaind)
sudo rm -rf $HOME/.0gchaind