6.6 KiB
Validator Guide for laconic_81337-4 Testnet
Hardware Prerequisites
Supported
- Operating System (OS): Ubuntu 20.04
- CPU: 1 core
- RAM: 2GB
- Storage: 25GB SSD
Recommended
- Operating System (OS): Ubuntu 20.04
- CPU: 2 core
- RAM: 4GB
- Storage: 50GB SSD
Network Prerequisites
- TCP 26656 for Peer-to-Peer Network Communication
- TCP 26660 for Prometheus Metrics (doesn't have to be exposed publicly)
Validator Setup
Install required software packages
# Update Ubuntu
sudo apt update
sudo apt upgrade -y
# Install required software packages
sudo apt install git curl build-essential make jq -y
Install Go
# Remove any existing installation of `go`
sudo rm -rf /usr/local/go
# Install Go version 1.17.2
curl https://dl.google.com/go/go1.17.2.linux-amd64.tar.gz | sudo tar -C/usr/local -zxvf -
# Update env variables to include go
cat <<'EOF' >>$HOME/.profile
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export GO111MODULE=on
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin
EOF
source $HOME/.profile
Check the version of go installed
go version
# Should return something like: go version go1.17.2 linux/amd64
Install laconic
git clone https://github.com/cerc-io/laconicd.git
cd laconicd
# Checkout main branch
git fetch --all
git checkout main
# Build and install laconic
make install
Verify your installation
laconicd version --long
On running the above command, you should see a similar response like this. Make sure that the version and commit hash are accurate
name: laconic
server_name: laconicd
Initialize Validator Node
Not required if you have already initialized before
# Initialize the validator node
laconicd init <your-node-moniker> --chain-id laconic_81337-4
Running the above commands will initialize the validator node with default configuration. The config files will be saved in the default location (~/.laconicd/config
).
NOTE: Backup your node and validator keys. You will need to use these keys at a later point in time.
Overwrite Validator Initialization from previous testnet
Required for laconic_81337-4
First we have to reset the previous genesis state (only because the laconic_81337-3
testnet failed) whereafter we can initialize the validator node for laconic_81337-4
# Stop your node (in case it was still running)
systemctl stop laconicd
# Keep a backup of your old validator directory
cp -a ~/.laconicd ~/backup-laconic_81337-2
# Reset the state of your validator
laconicd tendermint unsafe-reset-all --home $HOME/.laconicd
# Remove your previous genesis transactions
rm $HOME/.laconicd/config/gentx/gentx*.json
# Overwrite your genesis state with the new chain-id
laconicd init --overwrite <your-node-moniker> --chain-id laconic_81337-4
Running the above commands will re-initialize the validator node with default configuration. The config files will be saved in the default location (~/.laconicd/config
).
NOTE: Backup your node and validator keys. You will need to use these keys at a later point in time.
Create Account keys
If you have participated in a previous testnet and have a mnemonic phrase, use below command to recover your account:
laconicd keys add <key-name> --recover
To create a new account use:
laconicd keys add <key-name>
NOTE: Save the mnemonic
and related account details (public key). You will need to use the mnemonic and / or private key to recover accounts at a later point in time.
Add Genesis Account
NOTE: Don't add more than 12,900 CHK , if you add more than that, your gentx will be ignored.
laconicd add-genesis-account <key-name> 12900000000000000000000achk --keyring-backend os
Create Your gentx
transaction file
laconicd gentx <key-name> 12900000000000000000000achk \
--pubkey=$(laconicd tendermint show-validator) \
--chain-id="laconic_81337-4" \
--moniker="<your-moniker-name>" \
--website="<your-validator-website>" \
--details="<your-validator-description>" \
--identity="<your-keybase-public-key>" \
--commission-rate="0.10" \
--commission-max-rate="0.20" \
--commission-max-change-rate="0.01" \
--min-self-delegation="1"
NOTE:
<key-name>
andchain-id
are required. other flags are optional- Don't change the amount value while creating your gentx
- Genesis transaction file will be saved in
~/.laconicd/config/gentx
folder
Submit Your gentx
Submit your gentx
file to the https://github.com/cerc-io/laconic-testnet repository in the following format:
<validator-moniker>-gentx.json
NOTE: (Do NOT use spaces in the file name)
To submit the gentx file, follow the below process:
- Fork the https://github.com/cerc-io/laconic-testnet repository
- Upload your gentx file in the
laconic_81337-4/config/gentxs
folder - Submit Pull Request to https://github.com/cerc-io/laconic-testnet with name
ADD <your-moniker> gentx
The genesis file will be published in the laconic_81337-4/config/
folder within the https://github.com/cerc-io/laconic-testnet repository.
CONTINUE WITH BELOW STEPS ONLY AFTER GENESIS FILE HAS BEEN PUBLISHED
Adjust validator node configuration
# Set seed & peers variable
seeds="<seeds node list here>"
peers="<peers node list here>"
# Update seeds, persistent_peers and prometheus parameters in config.toml
sed -i.bak -e "s/^seeds *=.*/seeds = \"$seeds\"/; s/^persistent_peers *=.*/persistent_peers = \"$peers\"/; s/^prometheus *=.*/prometheus = true/" $HOME/.laconicd/config/config.toml
# Create systemd validator service
sudo tee /etc/systemd/system/laconicd.service > /dev/null <<EOF
[Unit]
Description=laconicd Daemon
After=network-online.target
[Service]
User=$USER
ExecStart=$(which laconicd) start --mode validator --gql-playground --gql-server --log_level=warn
Restart=always
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
#Reload systemd and start the validator node
sudo systemctl daemon-reload
sudo systemctl enable laconicd
sudo systemctl start laconicd
Check status of service
sudo systemctl status laconicd
Helpful Commands
# Check logs
journalctl -u laconicd
# Most recent logs
journalctl -xeu laconicd
# Logs from previous day
journalctl --since "1 day ago" -u laconicd
# Check logs with follow flag
journalctl -f -u laconicd
# Check discovered peers
curl http://localhost:26657/net_info
# Check network consensus state
curl http://localhost:26657/consensus_state
# Check the sync status of your validator node
laconicd status | jq .SyncInfo