Chains Configuration Guide
The Chains repository contains configuration files, network parameters, and chain specifications for the Mezo ecosystem. This guide covers how to configure, deploy, and manage Mezo chains.
Overview
Section titled “Overview”The Chains repository provides:
- Network Configurations: Mainnet, testnet, and local configurations
- Genesis Files: Initial blockchain state and parameters
- Chain Specifications: Technical parameters and constants
- Deployment Scripts: Automated chain deployment tools
- Monitoring Configs: Observability and monitoring setups
Repository Structure
Section titled “Repository Structure”The Chains repository structure:
chains/├── configs/ # Network configuration files├── genesis/ # Genesis files for different networks├── scripts/ # Deployment and management scripts├── monitoring/ # Monitoring and observability configs├── docs/ # Documentation and guides└── tools/ # Utility tools and helpersNetwork Configurations
Section titled “Network Configurations”Mainnet Configuration
Section titled “Mainnet Configuration”Network Details:
- Chain ID:
mezo-mainnet - RPC Endpoint:
https://rpc.mezo.org - WebSocket:
wss://rpc.mezo.org/websocket - Explorer:
https://explorer.mezo.org
Genesis Configuration:
{ "chain_id": "mezo-mainnet", "genesis_time": "2024-01-01T00:00:00Z", "consensus_params": { "block": { "max_bytes": "22020096", "max_gas": "-1" }, "evidence": { "max_age_num_blocks": "100000", "max_age_duration": "172800000000000" } }}Testnet Configuration
Section titled “Testnet Configuration”Network Details:
- Chain ID:
mezo-testnet - RPC Endpoint:
https://testnet-rpc.mezo.org - WebSocket:
wss://testnet-rpc.mezo.org/websocket - Explorer:
https://testnet-explorer.mezo.org
Local Development Configuration
Section titled “Local Development Configuration”Network Details:
- Chain ID:
mezo-local - RPC Endpoint:
http://localhost:26657 - WebSocket:
ws://localhost:26657/websocket
Chain Parameters
Section titled “Chain Parameters”Consensus Parameters
Section titled “Consensus Parameters”[consensus]timeout_commit = "1s"timeout_propose = "3s"timeout_propose_delta = "500ms"timeout_prevote = "1s"timeout_prevote_delta = "500ms"timeout_precommit = "1s"timeout_precommit_delta = "500ms"P2P Configuration
Section titled “P2P Configuration”[p2p]laddr = "tcp://0.0.0.0:26656"external_address = "YOUR_EXTERNAL_IP:26656"persistent_peers = "peer1@ip1:26656,peer2@ip2:26656"unconditional_peer_ids = ""API Configuration
Section titled “API Configuration”[api]enable = trueswagger = falseaddress = "tcp://0.0.0.0:1317"max_open_connections = 1000rpc_read_timeout = "10s"rpc_write_timeout = "10s"rpc_max_body_bytes = 1000000EVM Configuration
Section titled “EVM Configuration”Ethereum Compatibility Settings
Section titled “Ethereum Compatibility Settings”[evm]rpc_address = "0.0.0.0:8545"ws_address = "0.0.0.0:8546"api_address = "0.0.0.0:1317"max_gas_price = "1000000000000"min_gas_price = "1000000000"Gas Configuration
Section titled “Gas Configuration”[evm.gas]base_fee = "1000000000"min_gas_price = "1000000000"max_gas_price = "1000000000000"Deployment Scripts
Section titled “Deployment Scripts”Automated Deployment
Section titled “Automated Deployment”#!/bin/bashset -e
CHAIN_ID=${1:-"mezo-testnet"}NODE_TYPE=${2:-"validator"}
echo "Deploying $NODE_TYPE node for chain $CHAIN_ID"
# Clone chains repositorygit clone https://github.com/mezo-org/chains.gitcd chains
# Copy configurationcp configs/$CHAIN_ID/config.toml ~/.mezod/config/cp configs/$CHAIN_ID/app.toml ~/.mezod/config/
# Initialize nodemezod init $NODE_TYPE --chain-id $CHAIN_ID
# Start nodemezod startDocker Deployment
Section titled “Docker Deployment”version: '3.8'
services: mezod: image: mezod:latest container_name: mezod-node ports: - "26656:26656" - "26657:26657" - "1317:1317" - "8545:8545" volumes: - ./config:/root/.mezod/config - ./data:/root/.mezod/data environment: - CHAIN_ID=mezo-testnet - NODE_TYPE=validator command: mezod startConfiguration Management
Section titled “Configuration Management”Environment-Specific Configs
Section titled “Environment-Specific Configs”# Production configurationexport CHAIN_ID="mezo-mainnet"export RPC_ENDPOINT="https://rpc.mezo.org"export EXPLORER_URL="https://explorer.mezo.org"
# Testnet configurationexport CHAIN_ID="mezo-testnet"export RPC_ENDPOINT="https://testnet-rpc.mezo.org"export EXPLORER_URL="https://testnet-explorer.mezo.org"
# Local developmentexport CHAIN_ID="mezo-local"export RPC_ENDPOINT="http://localhost:26657"export EXPLORER_URL="http://localhost:1317"Configuration Templates
Section titled “Configuration Templates”# config.toml template[consensus]timeout_commit = "{{ .ConsensusTimeoutCommit }}"timeout_propose = "{{ .ConsensusTimeoutPropose }}"
[p2p]laddr = "{{ .P2PAddress }}"external_address = "{{ .ExternalAddress }}"persistent_peers = "{{ .PersistentPeers }}"
[api]enable = {{ .APIEnabled }}address = "{{ .APIAddress }}"Network Management
Section titled “Network Management”Adding New Networks
Section titled “Adding New Networks”- Create Configuration Directory:
mkdir -p configs/new-network- Add Network Config:
[consensus]timeout_commit = "1s"
[p2p]laddr = "tcp://0.0.0.0:26656"- Add Genesis File:
{ "chain_id": "new-network", "genesis_time": "2024-01-01T00:00:00Z"}Updating Network Parameters
Section titled “Updating Network Parameters”# Update consensus parameters via governancemezod tx gov submit-proposal param-change proposal.json
# Vote on proposalmezod tx gov vote 1 yes --from validatorMonitoring Configuration
Section titled “Monitoring Configuration”Prometheus Setup
Section titled “Prometheus Setup”global: scrape_interval: 15s
scrape_configs: - job_name: 'mezod-mainnet' static_configs: - targets: ['rpc.mezo.org:26660'] metrics_path: /metrics
- job_name: 'mezod-testnet' static_configs: - targets: ['testnet-rpc.mezo.org:26660'] metrics_path: /metricsGrafana Dashboards
Section titled “Grafana Dashboards”{ "dashboard": { "title": "Mezo Chain Monitoring", "panels": [ { "title": "Block Height", "type": "graph", "targets": [ { "expr": "mezod_block_height", "legendFormat": "{{chain_id}}" } ] } ] }}Security Configuration
Section titled “Security Configuration”Network Security
Section titled “Network Security”# Firewall rulesufw allow 26656/tcp # P2Pufw allow 26657/tcp # RPCufw allow 1317/tcp # APIufw allow 8545/tcp # EVM RPC
# Restrict accessiptables -A INPUT -p tcp --dport 26657 -s TRUSTED_IP -j ACCEPTiptables -A INPUT -p tcp --dport 26657 -j DROPSSL/TLS Configuration
Section titled “SSL/TLS Configuration”[api]tls_cert_file = "/path/to/cert.pem"tls_key_file = "/path/to/key.pem"Development Tools
Section titled “Development Tools”Chain Configuration CLI
Section titled “Chain Configuration CLI”# List available networks# (Check repository for specific CLI tool)
# Get network configurationcat configs/mezo-mainnet/config.toml
# Validate configurationmezod config validateConfiguration Validation
Section titled “Configuration Validation”#!/bin/bashCONFIG_FILE=$1
if [ -z "$CONFIG_FILE" ]; then echo "Usage: $0 <config-file>" exit 1fi
# Validate TOML syntaxif ! python3 -c "import toml; toml.load('$CONFIG_FILE')"; then echo "Invalid TOML syntax" exit 1fi
echo "Configuration is valid"Troubleshooting
Section titled “Troubleshooting”Common Issues
Section titled “Common Issues”- Configuration Errors:
# Check configuration syntaxmezod config validate
# Test configurationmezod start --dry-run- Network Connectivity:
# Test RPC connectivitycurl -s http://localhost:26657/status | jq
# Check peer connectionsmezod tendermint show-peers- Genesis Issues:
# Validate genesis filemezod validate-genesis
# Reset with new genesismezod tendermint unsafe-reset-allBest Practices
Section titled “Best Practices”Configuration Management
Section titled “Configuration Management”- Version Control: Keep configurations in version control
- Environment Separation: Use separate configs for different environments
- Documentation: Document all custom parameters
- Validation: Always validate configurations before deployment
Security Considerations
Section titled “Security Considerations”- Access Control: Restrict RPC and API access
- Key Management: Secure validator keys
- Network Security: Use firewalls and VPNs
- Monitoring: Set up comprehensive monitoring
Additional Resources
Section titled “Additional Resources”- Chains Repository - Configuration repository
- Mezod Documentation - Chain client documentation
- Validator Kit - Validator setup guide
- Cosmos SDK Configuration - Cosmos SDK docs
Support
Section titled “Support”For configuration support:
- Join the Mezo Discord
- Check the GitHub Issues
- Review the FAQ