Skip to content

Latest commit

 

History

History
273 lines (204 loc) · 8.24 KB

testnet_instructions.md

File metadata and controls

273 lines (204 loc) · 8.24 KB

Distributed Validators School Testnet

Quick Links

Genesis: https://raw.githubusercontent.com/Distributed-Validators-Synctems/sputnik-school-testnet-4.1/master/genesis.json

Block explorer: https://sputnik-testnet-4.nodejumper.io/sputnik-testnet-4

Peers: TBD

Chain Id: sputnik-testnet-4

Hardware Requirements

Here are the minimal hardware configs required for running a validator/sentry node

  • 4GB RAM
  • 2vCPUs
  • 80GB Disk space

Software Requirements

Before start

Follow these steps to update your server and install some usefull packages:

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y make git build-essential jq mc btop

Install GO v1.21.13

Download the Go 1.21.13 binary archive using wget:

wget https://go.dev/dl/go1.21.13.linux-amd64.tar.gz

If you have a previous installation of Go, remove it to avoid conflicts:

rm -rf /usr/local/go  

Extract the downloaded archive to /usr/local:

sudo tar -C /usr/local -xzf go1.21.13.linux-amd64.tar.gz

Use the following command to append the Go path to the end of your .profile file:

echo 'export PATH=$PATH:/usr/local/go/bin' >> .profile
source .profile

Install sputnikd, Generate Wallet and Submit GenTx

Sputnik app-chain binaries installation (sputnikd)

Sputnik app testnet binary repo https://github.com/Distributed-Validators-Synctems/sputnik-app-chain-practice

commit: d3ed2906478c1558e4be1a2e0f98305f7be46832
cosmos_sdk_version: v0.47.13-ics-lsm
go: go version go1.21.9 linux/amd64
name: sputnik
server_name: sputnik
version: main-d3ed2906478c1558e4be1a2e0f98305f7be46832

Sputnik installation (gude for begginers)

git clone https://github.com/Distributed-Validators-Synctems/sputnik-app-chain-practice.git
cd sputnik-app-chain-practice
make install

Update your .profile to include both global and local Go binaries in your PATH. This ensures that you can easily run Go tools and binaries installed in both /usr/local/go/bin and $HOME/go/bin from any terminal session.

sed -i 's|export PATH=$PATH:/usr/local/go/bin|export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin|' $HOME/.profile
source .profile

In this step, we'll navigate to the directory containing the binary file and rename it from gaiad to sputnikd since we'll be referring to it by this name in the following instructions.

cd ~/go/bin
mv gaiad sputnikd

Network init

cd ~
sputnikd init "<moniker-name>" --chain-id sputnik-testnet-4

example:

sputnikd init course-participant-1 --chain-id dvs-course-testnet

Create Validator Key

It's very important that after you run this command that you save the seed phrase that is generated. If you do not save you phrase, you will not be able to recover this account.

sputnikd keys add <your validator key name>

or restore existing wallet with mnemonic seed phrase. You will be prompted to enter mnemonic seed.

sputnikd keys add <key-name> --recover

or add keys using ledger

sputnikd keys add <key-name> --ledger

Check your key:

sputnikd keys show <key-name> -a

Create account to genesis

This command will help you to create account in your local genesis file. It will add funds to your address. Otherwise sputnikd getntx command will fail because of lack of funds.

sputnikd genesis add-genesis-account <key-name> 20000000stake

Create GenTX

Create the gentx file. Note, your gentx will be rejected if you use any amount greater than 10000000stake.

sputnikd genesis gentx <key-name> 10000000stake \
  --chain-id=sputnik-testnet-4 \
  --moniker="<moniker-name>" \
  --website="<your-node-website>" \
  --details="<your-node-details>" \
  --commission-rate="0.10" \
  --commission-max-rate="0.20" \
  --commission-max-change-rate="0.01"

After gentx will be ready you can find it in the ~/.gaia/config/gentx directory. After that you will be required to upload it into gentxs directory of this repository. Please name it using following template gentx-<validator name>.json.

In order to upload this file you will need to create fork of this repository. Please click on “Fork” button in the top right corner of this page, and name it somehow or leave repository name unchanged. After that you can upload gentx file into appropriate directory of your repository. Next, you will need to create a PR (Pull request) to add changes from your cloned repository into main repository. Please go into root directory of your repository and click on “Contribute” button. You will see this popup window.

Please “Open pull request”, check data, put some description into text box field and click on “Create pull request” inside it. Congratulations you have created your first pull request!

Create validator after genesis

sputnikd tx staking create-validator \
  --amount=10000000stake \
  --pubkey=$(sputnikd tendermint show-validator) \
  --chain-id=sputnik-testnet-4 \
  --moniker="<moniker-name>" \
  --website="<your-node-website>"\
  --commission-rate="0.10" \
  --commission-max-rate="0.20" \
  --commission-max-change-rate="0.01" \
  --gas="auto" \
  --gas-adjustment=1.3 \
  --gas-prices="0.1stake" \
  --from=<key_name>

Run node

Install curl

sudo apt install curl -y

Download genesis

To download genesis.json file

curl https://raw.githubusercontent.com/Distributed-Validators-Synctems/sputnik-school-testnet-4.1/master/genesis.json > ~/.gaia/config/genesis.json

After downloading you need to verify your genesis.json checksum

sha256sum ~/.gaia/config/genesis.json

you should see d088d19e2a3f885b2a5c7bcd71b0e26f590041e6639ce5ab9e8fc9b71d5952b9 in the output.

Set the seeds

SEEDS="[email protected]:26656"
sed -i 's|^seeds *=.*|seeds = "'$SEEDS'"|' $HOME/.gaia/config/config.toml

Set minimum-gas-prices to .gaia/config/app.toml

MIN_GAS_PRICES=0.001stake
sed -i 's|^minimum-gas-prices *=.*|minimum-gas-prices = "'$MIN_GAS_PRICES'"|' $HOME/.gaia/config/app.toml

Set Up Cosmovisor

Set up cosmovisor to ensure any future upgrades happen flawlessly. To install Cosmovisor

go install cosmossdk.io/tools/cosmovisor/cmd/[email protected]

Create the required directories and files

mkdir -p ~/.gaia/cosmovisor/genesis/bin
mkdir -p ~/.gaia/cosmovisor/upgrades

After directories will be ready please copy sputnikd binaries created in the “Cosmos Hub binaries installation (sputnikd)” section into ~/.gaiad/cosmovisor/genesis/bin directory. You can do it using next command

cp ~/go/bin/sputnikd ~/.gaia/cosmovisor/genesis/bin/sputnikd

Set Up sputnikd Service

Set up a service to allow cosmovisor to run in the background as well as restart automatically if it runs into any problems:

sudo tee /etc/systemd/system/sputnikd.service > /dev/null << EOF
[Unit]
Description=Sputnik app chain daemon
After=network-online.target
[Service]
Environment="DAEMON_NAME=sputnikd"
Environment="DAEMON_HOME=${HOME}/.gaia"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=true"
Environment="DAEMON_LOG_BUFFER_SIZE=512"
Environment="UNSAFE_SKIP_BACKUP=true"
User=$USER
ExecStart=${HOME}/go/bin/cosmovisor run start
Restart=always
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF

And start service:

sudo systemctl daemon-reload
sudo systemctl enable sputnikd 
sudo systemctl restart sputnikd

How you can check the logs

sudo journalctl -u sputnikd -f

Set chain-id to sputnik-testnet-4 (for CLI)

sputnikd config chain-id sputnik-testnet-4

More about validators

Please refer to the Cosmos Hub documentation on validators for a general overview of running a validator. We are using the exact same validator model and software, but with slightly different parameters and other functionality specific to the Cosmic Horizon Network.