Joining Testnets
General instructions on how to join the Juno testnets

Current testnets

Below is the list of Juno testnets and their current status. You will need to know the version tag for installation of the junod binary.
chain-id
Github version tag
Description
Status
lucina
lucina
This testnet has an implementation of cosmwasm and is used for the hack-juno competition. This testnet will be upgraded as new versions of cosmwasm are released and will be the primary testing area for smart contract development for the Juno chain after the mainnet has launched.
ending
hera
hera
The final testnet before mainnet launch. This testnet is intended as a final test for the custom inflation module as well as other genesis parameters to ensure a smooth mainnet launch.
ended
uni
v1.0.0
This post-mainnet launch testnet is designed to test the Cosmwasm 1.0.0 API and allow smart contract developers time to test and update their contracts before CosmWasm is included in Juno.
current

Minimum Hardware Requirements

The minimum recommended hardware requirements for running a validator for the Juno testnets are:
Chain-id
Requirements
uni
    2GB RAM
    25GB of disk space
    1.4 GHz CPU
Note that the testnets accumulate data as the blockchain continues. This means that you will need to expand your storage as the blockchain database gets larger with time.

junod Installation

To get up and running with the junod binary, please follow the instructions here

Configuration of Shell Variables

For this guide, we will be using shell variables. This will enable the use of the client commands verbatim. It is important to remember that shell commands are only valid for the current shell session, and if the shell session is closed, the shell variables will need to be re-defined.
If you want variables to persist for multiple sessions, then set them explicitly in your shell .profile, as you did for the Go environment variables.
To clear a variable binding, use unset $VARIABLE_NAME . Shell variables should be named with ALL CAPS.

Choose a testnet

Choose the <chain-id> testnet you would like to join from here. Set the CHAIN_ID:
1
CHAIN_ID=<chain-id>
2
3
#Example
4
CHAIN_ID=uni
Copied!

Set your moniker name

Choose your <moniker-name>, this can be any name of your choosing and will identify your validator in the explorer. Set the MONIKER_NAME:
1
MONIKER_NAME=<moniker-name>
2
3
#Example
4
MONIKER_NAME="Validatron 9000"
Copied!

Set persistent peers

Persistent peers will be required to tell your node where to connect to other nodes and join the network. To retrieve the peers for the chosen testnet:
1
#Set the base repo URL for the testnet & retrieve peers
2
CHAIN_REPO="https://raw.githubusercontent.com/CosmosContracts/testnets/main/$CHAIN_ID" && \
3
export PEERS="$(curl -s "$CHAIN_REPO/persistent_peers.txt")"
4
5
# check it worked
6
echo $PEERS
Copied!
NB: If you are unsure about this, you can ask in discord for the current peers and explicitly set them in ~/.juno/config/config.toml instead.

Setting up the Node

Running a node is different from running a Validator. In order to run a Validator, you must create and sync a node, and then upgrade it to a Validator.
These instructions will direct you on how to initialise your node, synchronise to the network and upgrade your node to a validator.

Initialize the chain

1
junod init $MONIKER_NAME --chain-id $CHAIN_ID
Copied!
This will generate the following files in ~/.juno/config/
    genesis.json
    node_key.json
    priv_validator_key.json
Note that this means if you jumped ahead and already downloaded the genesis file, this command will replace it and you will get an error when you attempt to start the chain.

Download the genesis file

1
curl https://raw.githubusercontent.com/CosmosContracts/testnets/main/$CHAIN_ID/genesis.json > ~/.juno/config/genesis.json
Copied!
This will replace the genesis file created using junod init command with the genesis file for the testnet.

Set persistent peers

Using the peers variable we set earlier, we can set the persistent_peers in ~/.juno/config/config.toml:
1
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" ~/.juno/config/config.toml
Copied!

Create a local key pair

Create a new key pair for your validator:
1
junod keys add <key-name>
2
3
# Query the keystore for your public address
4
junod keys show <key-name> -a
Copied!
Replace <key-name> with a key name of your choosing.
If you already have a key from a previous testnet, you can recover it using the mnemonic:
1
junod keys add <key-name> --recover
Copied!
After creating a new key, the key information and seed phrase will be shown. It is essential to write this seed phrase down and keep it in a safe place. The seed phrase is the only way to restore your keys.

Get some testnet tokens

Testnet tokens can be requested from the #faucet channel on Discord.
To request tokens type $request <your-public-address> in the message field and press enter.

Setup cosmovisor

Follow these instructions to setup cosmovisor and start the node.

Syncing the node

After starting the junod daemon, the chain will begin to sync to the network. The time to sync to the network will vary depending on your setup, but could take a very long time. To query the status of your node:
1
# Query via the RPC (default port: 26657)
2
curl http://localhost:26657/status | jq .result.sync_info.catching_up
Copied!
If this command returns true then your node is still catching up. If it returns false then your node has caught up to the network current block and you are safe to proceed to upgrade to a validator node.

Upgrade to a validator

To upgrade the node to a validator, you will need to submit a create-validator transaction:
1
junod tx staking create-validator \
2
--amount 9000000ujuno \
3
--commission-max-change-rate "0.1" \
4
--commission-max-rate "0.20" \
5
--commission-rate "0.1" \
6
--min-self-delegation "1" \
7
--details "validators write bios too" \
8
--pubkey=$(junod tendermint show-validator) \
9
--moniker $MONIKER_NAME \
10
--chain-id $CHAIN_ID \
11
--gas-prices 0.025ujuno \
12
--from <key-name>
Copied!
Last modified 6d ago