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 Node" or "Cosmos Tutorials - Run in Production documentation."
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
Note that most validators have their own guides. Choose whichever one works best for you.
Releases / Instructions
Genesis File
https://github.com/BitBadges/bitbadgeschain/blob/master/genesis-711316.json (Note this is post 711316 hard fork)
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:
--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:
Use a reverse proxy (nginx, caddy) in front of the JSON-RPC server for TLS termination and rate limiting
Set appropriate gas/fee caps to prevent resource exhaustion
Enable the indexer (
--json-rpc.enable-indexer) for better query performanceConfigure WebSocket origins if accepting external WS connections
Monitor resource usage - JSON-RPC can be resource-intensive under load
Last updated