Join Barra
Barra is our new testnet, currently available only to selected validators. It's a vanilla Cosmos chain with EVM support.
Overview
This tutorial explains how to run the Warden binary, wardend
, and join the Barra testnet.
Prerequisites
Before you start, complete the following prerequisites:
- Install Go 1.25 or higher.
- Make sure you have the following shell tools installed:
wget
,sed
,curl
,jq
. - We recommend running public testnet nodes on machines with the following characteristics:
- at least 4 cores
- 16GB of RAM
- 300GB of disk space
1. Install the binary
To be able to interact with the node, install wardend
(the Warden binary) and configure it:
-
Download the binary for your platform from the release page and unzip it. The archive contains the
wardend
binary. -
Navigate to the directory containing the binary and initialize the node, specifying a custom chain moniker:
./wardend init CHAIN_MONIKER
2. Configure the binary
To configure wardend
, update files in $HOME/.warden/config/
.
The following list shows the files and fields you need to adjust. You can do it manually or use the CLI commands below.
app.toml
Set the minimum gas price and the EVM chain ID:minimum-gas-prices = "10award"
evm-chain-id = 9191
client.toml
Set the chain ID:chain-id = "barra_9191-1"
config.toml
Add seed nodes and adjust consensus parameters:seeds = "[email protected]:26656,[email protected]:26656"
timeout_propose = "1s"
timeout_propose_delta = "200ms"
timeout_prevote = "500ms"
timeout_prevote_delta = "200ms"
timeout_precommit = "500ms"
timeout_precommit_delta = "200ms"
timeout_commit = "2s"
create_empty_blocks = truegenesis.json
Replace its contents with the correct genesis settings.
To update the files automatically, you can use the following commands:
cd $HOME/.warden/config
sed -i.bak 's|^\s*minimum-gas-prices\s*=.*|minimum-gas-prices = "10award"|' app.toml
sed -i.bak 's|^\s*evm-chain-id\s*=.*|evm-chain-id = 9191|' app.toml
sed -i.bak 's|^\s*chain-id\s*=.*|chain-id = "barra_9191-1"|' client.toml
sed -i.bak 's|^\s*seeds\s*=.*|seeds = "[email protected]:26656,[email protected]:26656"|' config.toml
sed -i.bak 's|^\s*timeout_propose\s*=.*|timeout_propose = "1s"|' config.toml
sed -i.bak 's|^\s*timeout_propose_delta\s*=.*|timeout_propose_delta = "200ms"|' config.toml
sed -i.bak 's|^\s*timeout_prevote\s*=.*|timeout_prevote = "500ms"|' config.toml
sed -i.bak 's|^\s*timeout_prevote_delta\s*=.*|timeout_prevote_delta = "200ms"|' config.toml
sed -i.bak 's|^\s*timeout_precommit\s*=.*|timeout_precommit = "500ms"|' config.toml
sed -i.bak 's|^\s*timeout_precommit_delta\s*=.*|timeout_precommit_delta = "200ms"|' config.toml
sed -i.bak 's|^\s*timeout_commit\s*=.*|timeout_commit = "2s"|' config.toml
sed -i.bak 's|^\s*create_empty_blocks\s*=.*|create_empty_blocks = true|' config.toml
rm genesis.json
wget https://raw.githubusercontent.com/warden-protocol/networks/main/testnets/barra/genesis.json
3. Sync the node
This step is recommended but optional.
To speed up the initial sync, you can use the state sync feature. This will allow you to download the state at a specific height from a trusted node and after that only download the blocks from the network.
You'll need to use a trusted RPC endpoint—for example, the following:
https://rpc.barra.wardenprotocol.org
-
From this RPC endpoint, you can get the trusted block height and hash:
export SNAP_RPC_SERVERS="https://rpc.barra.wardenprotocol.org:443,https://rpc.barra.wardenprotocol.org:443"
export LATEST_HEIGHT=$(curl -s "https://rpc.barra.wardenprotocol.org/block" | jq -r .result.block.header.height)
export BLOCK_HEIGHT=$((LATEST_HEIGHT - 2000))
export TRUST_HASH=$(curl -s "https://rpc.barra.wardenprotocol.org/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash) -
Check that all variables have been set correctly:
echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH
The output should be similar to this:
70694 68694 6AF4938885598EA10C0BD493D267EF363B067101B6F81D1210B27EBE0B32FA2A
-
Add the state sync configuration to the
config.toml
file, under[statesync]
:enable = true # enable the state sync
rpc_servers = "SNAP_RPC_SERVERS"
trust_height = BLOCK_HEIGHT
trust_hash = "TRUST_HASH"
You can also do it automatically:
sed -i.bak -E \
's|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ;
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1"'"$SNAP_RPC_SERVERS"'"| ;
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1'"$BLOCK_HEIGHT"'| ;
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1"'"$TRUST_HASH"'"|' \
"$HOME/.warden/config/config.toml"
4. Start the node
Now you can start the node using the following command:
wardend start
If needed, add the path to the binary before the command:
path-to-binary/wardend start
It'll connect to the configured seed nodes and start downloading blocks. You can check the logs to see the progress.
We recommend using Cosmovisor for running a node. It's a utility for managing binary versions of Cosmos SDK-based chains, allowing you to enable binary upgrades without manual intervention.
Next steps
After joining Barra, you can take these steps:
- If you want to create a validator, follow the instructions in the Create a validator guide.
- To learn more about
wardend
commands for interacting with the node, see Node commands. - Don't forget to join our community in Discord.