Junø
WebDiscordGithubTwitter
  • Juno
    • Intro
    • Home of CosmWasm
    • Contributors - Core Software
    • Brand Identity
    • Security Disclosures
    • Economic Overview
      • Disclaimer
      • Native Asset (JUNO)
      • Incentive structure
      • Supply API - Data
  • Developer Guides
    • CosmWasm Contracts
      • Compile a Contract
      • Deploy a Contract
      • Guide: How to Upload a Smart Contract on the Juno Chain
      • Use Cw-orchestrator to speed-up your development
      • Query A Contract
      • Send Tokens to a Contract
    • Miscellaneous
      • Conversions
      • Multi Message Transaction
      • Get & Decode Transactions
      • Get Token Prices
      • Get Account Transactions
      • IBC Transfer
      • State Export / Airdrop
    • Juno Modules
      • FeeShare
      • TokenFactory
    • API Endpoints
      • Cosmos
        • Tx
          • V1beta1
            • Simulate
            • Txs
              • Block
        • Params
          • V1beta1
            • Params
        • Bank
          • V1beta1
            • Balances
              • By denom
            • Denoms metadata
            • Params
            • Spendable balances
            • Supply
        • Upgrade
          • V1beta1
            • Applied plan
            • Current plan
            • Module versions
            • Upgraded consensus state
        • Auth
          • V1beta1
            • Accounts
            • Module accounts
            • Params
        • Staking
          • V1beta1
            • Delegations
            • Historical info
            • Params
            • Pool
            • Validators
              • Delegations
                • Unbonding delegation
              • Unbonding delegations
            • Delegators
              • Redelegations
              • Unbonding delegations
              • Validators
        • Evidence
          • V1beta1
            • Evidence
        • Mint
          • V1beta1
            • Annual provisions
            • Inflation
            • Params
        • Feegrant
          • V1beta1
            • Allowance
            • Allowances
            • Issued
        • Gov
          • V1beta1
            • Params
            • Proposals
              • Deposits
              • Tally
              • Votes
        • Distribution
          • V1beta1
            • Community pool
            • Params
            • Delegators
              • Rewards
              • Validators
              • Withdraw address
            • Validators
              • Commission
              • Outstanding rewards
              • Slashes
        • Slashing
          • V1beta1
            • Params
            • Signing infos
        • Authz
          • V1beta1
            • Grants
              • Grantee
              • Granter
        • Base
          • Tendermint
            • V1beta1
              • Blocks
                • Latest
              • Node info
              • Syncing
              • Validatorsets
                • Latest
          • Node
            • V1beta1
              • Config
      • Cosmwasm
        • Wasm
          • V1
            • Code
              • Contracts
            • Contract
              • History
              • Raw
              • Smart
              • State
            • Codes
              • Params
              • Pinned
            • Contracts
              • Creator
      • Juno
        • Feeshare
          • V1
            • Fee shares
            • Params
        • Tokenfactory
          • V1beta1
            • Denoms from creator
            • Params
            • Denoms
              • Authority metadata
      • Ibc
        • Apps
          • Router
            • V1
              • Params
      • API Specification
    • Local Interchain
      • Local Interchain Rust Example
    • Junod Local Dev Setup
    • Integrate Leap wallet
    • SubQuery Indexer
  • Governance
    • Before submitting a proposal
    • Submitting a Proposal (CLI)
      • Formatting Proposal Markdown
  • Command-Line Interface (CLI)
    • Introduction
    • Useful CLI Commands
    • Module Reference
      • bank
      • distribution
      • gov
      • keys
      • params
      • slashing
      • staking
      • status
      • tendermint
      • upgrade
      • wasm
  • Nodes & Validators
    • Junod Installation and setup
    • Setting up Cosmovisor
    • Mainnet Setup and Tooling
    • Joining Mainnet
      • Sync from Snapshot
      • Sync with state-sync
      • Mainnet Upgrades
    • Joining Testnet
    • Relaying
    • Juno Delegations Program
Powered by GitBook
On this page
  • Junod Installation
  • Mainnet binary version
  • Recommended Minimum Hardware
  • Configuration of Shell Variables
  • Choose the required mainnet chain-id
  • Set your moniker name
  • Setting up the Node
  • Initialize the chain
  • Download the genesis file
  • Set seeds
  • Set minimum gas prices
  • Create (or restore) a local key pair
  • Get some Juno tokens
  • Setup cosmovisor and start the node
  • Syncing the node
  • From genesis
  • Upgrade to a validator
  • Backup critical files

Was this helpful?

  1. Nodes & Validators

Joining Mainnet

General instructions to join the Juno mainnet after network genesis.

PreviousMainnet Setup and ToolingNextSync from Snapshot

Last updated 2 years ago

Was this helpful?

Junod Installation

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

Mainnet binary version

The Juno Network has undergone several upgrades since the network inception on October 1st 2021. There was a hard fork after the network was attaked with a smart contract vulnerability on July 28th 2022.

The second is the current mainnet "Juno Phoenix 2" which raised Juno from the ashes on July 28th 2022.

The correct version of the binary for mainnet at genesis (Phoenix) was v9.0.0.

Releases after genesis can be found in the mainnet repo.

To find the current version of the binary, go to the and find the most recent upgrade.

If you plan to use a snapshot or state sync to sync your node, you will need the latest binary. Check for the latest upgraded binary version.

Recommended Minimum Hardware

The minimum recommended hardware requirements for running a validator for the Juno mainnet are:

Requirements
  • 4 Cores (modern CPU's)

  • 32GB RAM

  • 1TB of storage (SSD or NVME)

These specifications are the minimum recommended. As Juno Network is a smart contract platform, it can at times be very demanding on hardware. Low spec validators WILL get stuck on difficult to process blocks.

If you are running less than 32GB RAM, we recommend adding a swap on NVME storage to help process large and complex blocks.

Note that the mainnet will accumulate data as the blockchain continues. This means that you will need to expand your storage as the blockchain database gets larger with time.

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 the required mainnet chain-id

The current Juno Network chain-id is juno-1. Set the CHAIN_ID:

CHAIN_ID=juno-1

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:

MONIKER_NAME=<moniker-name>

# Example
MONIKER_NAME="Validatron 9000"

Setting up the Node

These instructions will direct you on how to initialize your node, synchronize to the network and upgrade your node to a validator.

Initialize the chain

junod init "$MONIKER_NAME" --chain-id $CHAIN_ID

This will generate the following files in ~/.juno/config/

  • genesis.json

  • node_key.json

  • priv_validator_key.json

Download the genesis file

# Download genesis.json file
rm ~/.juno/config/genesis.json
wget https://download.dimi.sh/juno-phoenix2-genesis.tar.gz
tar -xvf juno-phoenix2-genesis.tar.gz
mv juno-phoenix2-genesis.json $HOME/.juno/config/genesis.json

This will replace the genesis file created using junod init command with the mainnet genesis.json.

Set seeds

We can set the seeds by retrieving the list of seeds from the cosmoscontracts/mainnet repo and using sed to inject into ~/.juno/config/config.toml:

# Set the base repo URL for mainnet & retrieve seeds
CHAIN_REPO="https://raw.githubusercontent.com/CosmosContracts/mainnet/main/$CHAIN_ID" && \
export SEEDS="$(curl -sL "$CHAIN_REPO/seeds.txt")"

# Add seeds to config.toml
sed -i.bak -e "s/^seeds *=.*/seeds = \"$SEEDS\"/" ~/.juno/config/config.toml

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.

Set minimum gas prices

For RPC nodes and Validator nodes we recommend setting the following minimum-gas-prices. As we are a permissionless wasm chain, this setting will help protect against contract spam and potential wasm contract attack vectors.

In $HOME/.juno/config/app.toml, set minimum gas prices:

sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.0025ujuno,0.001ibc\/C4CFF46FD6DE35CA4CF4CE031E643C8FDC9BA4B99AE598E9B0ED98FE3A2319F9\"/" ~/.juno/config/app.toml

The above configuration will set the validator to accept both ujuno and IBC Atom as fees for transactions. This is the recommended configuration.

Create (or restore) a local key pair

Either create a new key pair, or restore an existing wallet for your validator:

# Create new keypair
junod keys add <key-name>

# OR

# Restore existing juno wallet with mnemonic seed phrase.
# You will be prompted to enter mnemonic seed.
junod keys add <key-name> --recover

# Query the keystore for your public address
junod keys show <key-name> -a

Replace <key-name> with a key name of your choosing.

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 Juno tokens

You will require some Juno tokens to bond to your validator. To be in the active set you will need to have enough tokens to be in the top 150 validators by delegation weight.

Setup cosmovisor and start the node

Using cosmovisor is completely optional. If you choose not to use cosmovisor, you will need to be sure to attend network upgrades to ensure your validator does not have downtime and get jailed.

If syncing a node from the "Phoenix 2" genesis, the initial "invariant checks" will take many hours to complete. If you want to skip invariant checks, thart the node with --x-crisis-skip-assert-invariants flag. This will still take around 30+ minutes to start the node.

Syncing the node

There are methods to sync a node to the network:

  1. From genesis and following the Mainnet Upgrades path

  2. Sync from Snapshot

  3. Sync with state-sync

From genesis

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 and the current size of the blockchain, but could take a very long time. To query the status of your node:

# Query via the RPC (default port: 26657)
curl http://localhost:26657/status | jq .result.sync_info.catching_up

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.

When syncing from genesis, you will need to perform upgrades while catching up to the head. juno-1 upgrades are detailed in Mainnet Upgrades along with a description of each type of upgrade.

Binary Upgrades

Upgrade to a validator

Do not attempt to upgrade your node to a validator until the node is fully in sync as per the previous step.

To upgrade the node to a validator, you will need to submit a create-validator transaction:

junod tx staking create-validator \
  --amount 1000000ujuno \
  --commission-max-change-rate "0.1" \
  --commission-max-rate "0.20" \
  --commission-rate "0.1" \
  --min-self-delegation "1" \
  --details "validators write bios too" \
  --pubkey=$(junod tendermint show-validator) \
  --moniker "$MONIKER_NAME" \
  --chain-id $CHAIN_ID \
  --gas-prices 0.025ujuno \
  --from <key-name>

The above transaction is just an example. There are many more flags that can be set to customise your validator, such as your validator website, or keybase.io id, etc. To see a full list:

junod tx staking create-validator --help

Backup critical files

There are certain files that you need to backup to be able to restore your validator if, for some reason, it damaged or lost in some way. Please make a secure backup of the following files located in ~/.juno/config/:

  • priv_validator_key.json

  • node_key.json

It is recommended that you encrypt the backup of these files.

Download the the "Phoenix" geneis file. The following instructions download the genesis file hosted by .

If you do not have any Juno tokens for you validator you can purchase tokens on , , or .

Follow instructions to setup cosmovisor and start the node.

During the syncing process you will need to install binary upgrades at the correct height. Please refer to for further information.

Dimi
Osmosis
WyndDex
kado.money
these
Mainnet Upgrades
here
mainnet repo
Mainnet Upgrades
Page cover image