C4E Node setup
March 11th, 2023

Prepare server

sudo apt update && sudo apt upgrade -y 
sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential bsdmainutils git make ncdu gcc git jq chrony liblz4-tool -y

Install Go

ver="1.19" && wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" && sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" && rm "go$ver.linux-amd64.tar.gz" && echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile && source  

Install C4E

 cd $HOME 
git clone https://github.com/chain4energy/c4e-chain 
cd c4e-chain 
git checkout v1.1.0 
make install

Init validator

c4ed init validator --chain-id perun-1
c4ed config chain-id perun-1 

Create wallet

c4ed keys add <walletname> 

Download Genesis

wget https://raw.githubusercontent.com/chain4energy/c4e-chains/main/perun-1-pre-mainnet/genesis.json -O $HOME/.c4e-chain/config/genesis.json 

Set minimum gas price and peers

6c736993a681a6759d3ec41550995fe04f48dd332d03375d879f3b464c6ceabf
sed -i -e "s/^minimum-gas-prices =./minimum-gas-prices = "0uc4e"/" $HOME/.c4e-chain/config/app.toml sed -i -e "s/^filter_peers =./filter_peers = "true"/" $HOME/.c4e-chain/config/config.toml external_address=$(wget -qO- eth0.me) sed -i.bak -e "s/^external_address =./external_address = "$external_address:26656"/" $HOME/.c4e-chain/config/config.toml peers="" sed -i.bak -e "s/^persistent_peers =./persistent_peers = "$peers"/" $HOME/.c4e-chain/config/config.toml seeds="" sed -i.bak -e "s/^seeds =./seeds = "$seeds"/" $HOME/.c4e-chain/config/config.toml sed -i 's/max_num_inbound_peers =./max_num_inbound_peers = 50/g' $HOME/.c4e-chain/config/config.toml sed -i 's/max_num_outbound_peers =.*/max_num_outbound_peers = 50/g' $HOME/.c4e-chain/config/config.toml 

Set Pruning

pruning="custom" && pruning_keep_recent="100" && pruning_keep_every="0" && pruning_interval="10" && sed -i -e "s/^pruning =./pruning = "$pruning"/" ~/.c4e-chain/config/app.toml && sed -i -e "s/^pruning-keep-recent =./pruning-keep-recent = "$pruning_keep_recent"/" ~/.c4e-chain/config/app.toml && sed -i -e "s/^pruning-keep-every =./pruning-keep-every = "$pruning_keep_every"/" ~/.c4e-chain/config/app.toml && sed -i -e "s/^pruning-interval =./pruning-interval = "$pruning_interval"/" ~/.c4e-chain/config/app.toml

Edit Indexer

indexer="null" && sed -i -e "s/^indexer =./indexer = "$indexer"/" $HOME/.c4e-chain/config/config.toml

StateSync

SNAP_RPC= http://65.21.129.95:26657 
peers="e3d0b136495c3f4382ac801fbc89083d32625ff8@c4e.peer.stavr.tech:17096" sed -i.bak -e "s/^persistent_peers =./persistent_peers = "$peers"/" $HOME/.c4e-chain/config/config.toml LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); BLOCK_HEIGHT=$((LATEST_HEIGHT - 100)); TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash)
echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH
sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).$|\1true| ; s|^(rpc_servers[[:space:]]+=[[:space:]]+).$|\1"$SNAP_RPC,$SNAP_RPC"| ; s|^(trust_height[[:space:]]+=[[:space:]]+).$|\1$BLOCK_HEIGHT| ; s|^(trust_hash[[:space:]]+=[[:space:]]+).$|\1"$TRUST_HASH"| ; s|^(seeds[[:space:]]+=[[:space:]]+).*$|\1""|" $HOME/.c4e-chain/config/config.toml
c4ed tendermint unsafe-reset-all --home /root/.c4e-chain --keep-addr-book sudo systemctl

restart c4ed && journalctl -u c4ed -f -o cat 

Create a service file

sudo tee /etc/systemd/system/c4ed.service > /dev/null <<EOF
[Unit] 
Description=c4e After=network-online.target
[Service] 
User=$USER 
ExecStart=$(which c4ed) start 
Restart=on-failure RestartSec=3 LimitNOFILE=65535 
[Install] 
WantedBy=multi-user.target EOF

Start node and check your logs

sudo systemctl daemon-reload 
sudo systemctl enable c4ed 
sudo systemctl restart c4ed && sudo journalctl -u c4ed -f -o cat

Create your validator

c4ed tx staking create-validator --amount 1000000uc4e --from <walletName> --commission-max-change-rate "0.1" --commission-max-rate "0.2" --commission-rate "0.1" --min-self-delegation "1" --pubkey  $(c4ed tendermint show-validator) --moniker validator --chain-id perun-1 --identity="" --details="" --website="" -y

Check sync

c4ed status 2>&1 | jq .SyncInfo 
Subscribe to cyberG|DVS
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.
More from cyberG|DVS

Skeleton

Skeleton

Skeleton