Run a Mainnet Node

Running a node is the same as any other Cosmos SDK chain. If you encounter any issues during the setup process, you can also refer to other Cosmos SDK node documentation, such as "Cosmos SDK - Running a Nodearrow-up-right" or "Cosmos Tutorials - Run in Production documentationarrow-up-right."

Below are some links to get you started. If you are unfamiliar with setup, I'd recommend following a guide and/or asking for help in the #validators channel of our Discord. We have plenty of great validators maintaining the network, and many have detailed guides to help you get started. LLMs are also a good resource and can help you get set up.

Note that as a validator, you are responsible for the security of the network. Take necessary precautions for uptime and security in order to avoid slashing or losing staked funds.

Discord

Our main communication method is via Discord:

  • #validators channel is a great resource for help. Ping @trevormil to give you the Validator role.

  • #announcements and #chain-upgrades are where we announce the latest plans to upgrade. We use the x/upgrade module from Cosmos SDK. We recommend Cosmovisor for handling upgrades.

Guides + Setup w/ Snapshots

Releases / Instructions

Genesis File

Explorer

BitBadges RPC

  • https://rpc.bitbadges.io

Running a Relayer?

  • See the official IBC connections in the Cosmos chain registry that we support.

Configuration

Most node parameters are flexible and you can set up according to your preferences. Here are some that should be the same as the rest of the network.

  • chain_id: bitbadges-1

  • timeout_commit: 2s

EVM JSON-RPC Configuration

If you want to expose Ethereum-compatible JSON-RPC endpoints (for MetaMask, ethers.js, etc.), you need to configure the EVM settings in your app.toml:

Critical: EVM Chain ID

⚠️ IMPORTANT: You must set the evm-chain-id in app.toml to match the network:

Why this matters: The evm-chain-id setting is used by the net_version RPC method for EIP-155 signature verification. If this doesn't match eth_chainId (which reads from chain state), MetaMask and other wallets will fail with error: incorrect chain-id; expected 262144, got 50024.

JSON-RPC Server Options

Configure the JSON-RPC server in app.toml:

Full Command-Line Options

All JSON-RPC options can also be passed as command-line flags:

Flag
Default
Description

--json-rpc.enable

false

Enable JSON-RPC server

--json-rpc.address

127.0.0.1:8545

HTTP server address

--json-rpc.ws-address

127.0.0.1:8546

WebSocket server address

--json-rpc.api

eth,net,web3

Enabled API namespaces

--json-rpc.enable-indexer

false

Enable custom tx indexer

--json-rpc.evm-timeout

5s

Timeout for eth_call

--json-rpc.gas-cap

25000000

Gas cap for calls

--json-rpc.txfee-cap

1.0

Transaction fee cap

--json-rpc.filter-cap

200

Max active filters

--json-rpc.block-range-cap

10000

Max block range for logs

--json-rpc.logs-cap

10000

Max log results

--json-rpc.batch-request-limit

1000

Max batch requests

--json-rpc.batch-response-max-size

25000000

Max response size

--json-rpc.http-timeout

30s

HTTP read/write timeout

--json-rpc.http-idle-timeout

2m0s

HTTP idle timeout

--json-rpc.max-open-connections

0

Max connections

--json-rpc.allow-unprotected-txs

false

Allow non-EIP155 txs

--json-rpc.ws-origins

127.0.0.1,localhost

WebSocket allowed origins

Production Recommendations

For production nodes serving EVM RPC:

  1. Use a reverse proxy (nginx, caddy) in front of the JSON-RPC server for TLS termination and rate limiting

  2. Set appropriate gas/fee caps to prevent resource exhaustion

  3. Enable the indexer (--json-rpc.enable-indexer) for better query performance

  4. Configure WebSocket origins if accepting external WS connections

  5. Monitor resource usage - JSON-RPC can be resource-intensive under load

Last updated