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