# Strategies with Validator Nodes - Babylon Chain

By [0xOuterGod](https://paragraph.com/@0xoutergod) · 2024-01-01

---

In the crypto world, there are several strategies that can be applied to be eligible for an airdrop:

*   **_farming in DeFi_**, as with Arbitrum or the one coming up on [LayerZero](https://mirror.xyz/0xb6f7E524D55672C10634D0dA7AED9cB738022274/x9k-hAF7KmIpeAKMK3-mLiLjepYr5S2KSsAI-hqhdW8);
    
*   **_staking in the Cosmos ecosystem_**, particularly **$ATOM** and **$OSMO**;
    
*   **_being a tester on a testnet_**, specifically by serving as a dApp beta tester or validator node.
    

Today I talk about the third category, that is, operations in testnet via validator nodes.

What, however, are validator nodes?
-----------------------------------

Validator nodes in a distributed network based on the **Proof-of-Stake consensus** algorithm are entities that stake a certain amount of coins and the protocol will randomly assign them the right to validate a block in order to obtain transaction fees and eventual economic incentives.

The _probability of being chosen_ changes from chain to chain, but is usually **proportional to the amount of coins** held: the more coins there are in stakes, the greater the probability of validating the next block.

However, when a project is also under development, it needs time to be tested and it is not always easy to detect any vulnerabilities. For this reason, many make use of **incentivized testnets**, i.e., test networks with dummy coins in order to detect any problems or vulnerabilities.

Once the project launches in the mainnet, those who participated in the testnet receive a **reward for their work**. This has been the case for many successful projects:

*   **$TIA** airdrop, +10’000$
    
*   **$MINA** airdrop, +80’000$
    
*   **$GRT** airdrop, +25’000$
    
*   **$APT** airdrop, +7’500$
    

Today in this article I tell you about some of the most interesting projects of the moment and which are likely to reward their users with an allocation in airdrop.

**Let's start!**

Babylon Chain - Bitcoin Staking Protocol
----------------------------------------

![](https://storage.googleapis.com/papyrus_images/925ea1441551728fd1233a6b32ab82de5992d6e17817cf69844e55a7f691e402.webp)

Babylon Chain is a new project in the Cosmos ecosystem, which intends to use **BTC as a staking capital** to validate Proof-of-Stake chains and generate a yield. The goal of Babylon Chain is to create a stack, which will also be usable by other projects interested in using a shared security protocol.

For more details regarding how Babylon Chain works, I recommend that you refer to their [**litepaper**](https://docs.babylonchain.io/assets/files/btc_staking_litepaper-32bfea0c243773f0bfac63e148387aef.pdf)**.**

> _Don’t forget to subscribe on Mirror to stay tuned to all future articles._

[Subscribe](null)

### Babylon Node Installation - Step-by-Step Guide

![](https://storage.googleapis.com/papyrus_images/9d4d441c3c2a918d4a066723df4df7439790e9e0d6f18c16fd74d08bac9c3960.jpg)

To begin the procedure, you need a computer with any Linux distro installed, Ubuntu 20.04 or later will do, an SSD with +200 GB and a fast Internet connection.

For those without resources capable of supporting a validator node at home, you can fall back on **VPS (Virtual Private Server)** solutions, that is, you can rent a virtual server.

There are several solutions, which I recommend below:

*   [**Contabo**](https://contabo.com/en/vps/), I recommend the **Cloud VPS M model**, with 6 vCPU Cores, 16 GB RAM, 400 GB SSD SATA3;
    
*   [**Aeza**](https://aeza.net/?ref=432182), I recommend at least the **VIEs-3** or **PARs-3** model, with 4 vCPU Cores, 8 GB RAM, 120 GB NVMe. This is a Russian VPS service and payment by credit/debit card is not possible from many Western countries, but payments in crypto (BTC, BEP20, ERC20, TRC20, DASH, LTC, XMR...) are possible.
    

After payment is made, you will receive the **IP address** to access.

![Contabo doesn't pay me in advertising them...yet. Referral link is possible? 👉🏻👈🏻](https://storage.googleapis.com/papyrus_images/ce955069c6e5becac5334e686ddec0cfb6de6ee5161fb5bb44a2ce3357a848dc.png)

Contabo doesn't pay me in advertising them...yet. Referral link is possible? 👉🏻👈🏻

If operating from Windows, download the [PuTTy](https://www.putty.org/) app - SSH and telnet client - and enter the IP address of the VPS. A Linux terminal screen will open for you.

Enter the **username** (usually _root_) and **password** you chose at the time of purchase. If you have done everything correctly, the following screen will appear:

![After login on PuTTy on VPS provided by Contabo (let them know I sent you though lol)](https://storage.googleapis.com/papyrus_images/de3453100b6b0dd5434f1930ffb4d9e296cbff21e1dd4bf0c7cf575bff61ca02.png)

After login on PuTTy on VPS provided by Contabo (let them know I sent you though lol)

> ⚠️ **_Disclaimer_** ⚠️: Launch every command one by one. Entering more commands together could break the installation process or bring to fatal errors.

Now enter the following commands and execute them:

    sudo apt -y update
    sudo apt -y upgrade
    sudo apt -y install curl git jq lz4 build-essential
    sudo apt autoremove
    

Set the name you want to give to your validator node, in my case `outergod`:

    MONIKER=”outergod”
    

Be sure to install Golang in the correct way, otherwise you may run into malfunctions. In my case, I installed version 1.21.5, but from their [website](https://go.dev/doc/install) make sure it is the latest version available

    sudo rm -rf /usr/local/go 
    curl -Ls https://go.dev/dl/go1.21.5.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local 
    eval $(echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee /etc/profile.d/golang.sh) 
    eval $(echo 'export PATH=$PATH:$HOME/go/bin' | tee -a $HOME/.profile)
    
    go version
    

Executing `go version` should bring you back a message similar to the following:

![In my case, I have the version 1.2.1.5](https://storage.googleapis.com/papyrus_images/3797a09fd5cf8e43078013eaa587a315c495cc859e81ebf4b385bddb31676a14.png)

In my case, I have the version 1.2.1.5

At this point we are ready to install the actual Babylon Chain node. Copy and paste the following commands one at a time:

    git clone https://github.com/babylonchain/babylon.git
    cd babylon/
    git checkout v0.7.2
    

Refer to their Github to find out what the [latest release](https://github.com/babylonchain/babylon/releases) is, which right now is 0.7.2.

    make install
    make build
    mkdir -p $HOME/.babylond/cosmovisor/genesis/bin 
    mv build/babylond $HOME/.babylond/cosmovisor/genesis/bin/ 
    rm -rf build 
    

    sudo ln -s $HOME/.babylond/cosmovisor/genesis $HOME/.babylond/cosmovisor/current -f 
    
    sudo ln -s $HOME/.babylond/cosmovisor/current/bin/babylond /usr/local/bin/babylond -f
    

We now install Cosmovisor and create the service:

    go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.5.0
    

Launch the following block all together:

    sudo tee /etc/systemd/system/babylon.service > /dev/null << EOF
    [Unit]
    Description=babylon node service
    After=network-online.target
    
    [Service]
    User=$USER
    ExecStart=$(which babylond) start
    Restart=on-failure
    RestartSec=10
    LimitNOFILE=65535
    Environment="DAEMON_HOME=$HOME/.babylond"
    Environment="DAEMON_NAME=babylond"
    Environment="UNSAFE_SKIP_BACKUP=true"
    Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:$HOME/.babylond/cosmovisor/current/bin"
    
    [Install]
    WantedBy=multi-user.target
    EOF
    

Then enable the `babylon.service`:

    sudo systemctl daemon-reload
    sudo systemctl enable babylon.service
    

Let's configure the node and initialize it:

    babylond config chain-id bbn-test-2
    babylond config keyring-backend test
    babylond config node tcp://localhost:16457
    
    babylond init $MONIKER --chain-id bbn-test-2
    
    curl -L https://snapshots-testnet.nodejumper.io/babylon-testnet/genesis.json > $HOME/.babylond/config/genesis.json
    
    curl -L https://snapshots-testnet.nodejumper.io/babylon-testnet/addrbook.json > $HOME/.babylond/config/addrbook.json
    
    sed -i \
      -e 's|^seeds *=.*|seeds = ""|' \
      -e 's|^peers *=.*|peers = "03ce5e1b5be3c9a81517d415f65378943996c864@18.207.168.204:26656,a5fabac19c732bf7d814cf22e7ffc23113dc9606@34.238.169.221:26656,ade4d8bc8cbe014af6ebdf3cb7b1e9ad36f412c0@testnet-seeds.polkachu.com:20656"|' \
      $HOME/.babylond/config/config.toml
    
    sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.00001ubbn\"|" $HOME/.babylond/config/app.toml
    

    sed -i \
      -e 's|^pruning *=.*|pruning = "custom"|' \
      -e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \
      -e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \
      -e 's|^pruning-interval *=.*|pruning-interval = "19"|' \
      $HOME/.babylond/config/app.toml
    

    sed -i 's|^network *=.*|network = "mainnet"|g' $HOME/.babylond/config/app.toml
    

Download the most recent snapshot:

    curl "https://snapshots-testnet.nodejumper.io/babylon-testnet/babylon-testnet_latest.tar.lz4" | lz4 -dc - | tar -xf - -C "$HOME/.babylond"
    

Activate the node and check the logs.

    sudo systemctl start babylon.service && sudo journalctl -u babylon.service -f --no-hostname -o cat
    

If the logs report no fatal errors, the node installation should have been successfully achieved!

Now let's make the node capable of validating blocks.

### Becoming a Validator on Babylon Chain - Step-by-Step Guide

Nodes in order to be chain validators require to have funds for two reasons:

*   Being able to **self-delegate coins**;
    
*   Being able to **pay tx fees related to BLS signatures**. Babylon currently supports only test keyring backends, but in the future other types of encrypted backends provided by the Cosmos SDK will be supported.
    

This requires creating a new Cosmos wallet, which we can generate by running the following command:

    babylond keys add wallet
    

**Save the 24 generated words in a safe offline place**, which can be a notebook, and keep the generated public address in an easily accessible place on your PC, which you will need to make the request to the faucet present on the official Babylon Discord group.

**Create** at this point **a BLS key** so that you can sign transactions at the end of each epoch. To do this, run the command:

    babylond create-bls-key $(babylond keys show wallet -a)
    

After creating the BLS key, do a restart of the node:

    sudo systemctl stop babylon.service
    sudo systemctl start babylon.service
    

Having restarted the node, we need to specify the key name to be used by the validator node for BLS tx signatures contained in `$HOME/.babylond/config/app.toml` file.

    sed -i -e "s|^key-name *=.*|key-name = \"wallet\"|" $HOME/.babylond/config/app.toml
    

It is recommended to change the configuration, increasing the `timeout_commit` to 10 seconds between blocks, which is the waiting time required for a validator before committing a block. I report the related code:

    sed -i -e "s|^timeout_commit *=.*|timeout_commit = \"10s\"|" $HOME/.babylond/config/config.toml
    

We are ready to request a faucet on [**Babylon’s Discord**](https://discord.com/invite/babylonglobal) by typing `!faucet <public address>`. Their faucet can be used once every 24 hours, not hourly!

To actually create the validator, we run the command `babylond tx checkpointing create-validator`. To give context:

*   in `--moniker` put`$MONIKER` in case you have initialized the moniker variable as indicated at the beginning of the guide;
    
*   in `--identity` report the Keybase or uPort ID of your website, in case you have one or are interested in adding that information. If you do not have it, delete the line for identity;
    
*   `--details` and `--website` are also optional information that can be added later.
    

    babylond tx checkpointing create-validator \
    --amount 1000000ubbn \
    --pubkey $(babylond tendermint show-validator) \
    --moniker "YOUR_MONIKER_NAME" \
    --identity "YOUR_KEYBASE_ID" \
    --details "YOUR_DETAILS" \
    --website "YOUR_WEBSITE_URL" \
    --chain-id bbn-test-2 \
    --commission-rate 0.05 \
    --commission-max-rate 0.20 \
    --commission-max-change-rate 0.01 \
    --min-self-delegation 1 \
    --from wallet \
    --gas-adjustment 1.4 \
    --gas auto \
    --gas-prices 0.00001ubbn \
    -y
    

To change the validator node parameters, use the following command, reporting the change you are interested in:

    babylond tx staking edit-validator --new-moniker "NewName" --from wallet --chain-id bbn-test-2 --fees 100ubbn -y
    

**Congratulations, you have successfully completed the installation of your node!**

![](https://storage.googleapis.com/papyrus_images/c393c8e1ebc173aadcbc079be6aa781cf63e288c8538927157389f0f417c4a4e.png)

I now leave you with a set of useful commands for monitoring your validator node.

    # Query wallet balance
    babylond q bank balances $(babylond keys show wallet -a)
    

    # Query validator details
    babylond q staking validator $(babylond keys show wallet --bech val -a)
    

    # Unjail validator
    babylond tx slashing unjail --from wallet --chain-id bbn-test-2 --gas-adjustment 1.4 --gas auto --fees 10ubbn -y
    

    # Jail reason
    babylond query slashing signing-info $(babylond tendermint show-validator)
    

_The guide you read is for educational purposes. Babylon has not released any information about its tokenomics nor airdrop, so this is an educational content. If you like my work, I suggest you to subscribe and mint the entry in order to support my work._

[**_Here_**](https://babylon.explorers.guru/validator/bbnvaloper1gzrm6rl9qkxnqf5fgh7qj3gm3nzn3lajzcejp9) _you can find my node validator on the Babylon Chain testnet. You can also support me by delegating your testnet tokens to my node._

---

*Originally published on [0xOuterGod](https://paragraph.com/@0xoutergod/strategies-with-validator-nodes-babylon-chain)*
