Node Operators Guide

This guide covers the detailed operational aspects of running an ENI node, including configuration management, maintenance procedures, and best practices for stable and efficient operation.

Configuration Management

Directory Structure

The configuration for an ENI node is stored in the ~/.eni/config/ directory:

~/.eni/config/
├── app.toml          # Application configuration (gas fees, API settings, pruning, etc.)
├── client.toml       # CLI and client-related settings
├── config.toml       # Core Tendermint settings (network, consensus, and RPC)
├── genesis.json      # Genesis file for the chain, defining the initial state
├── node_key.json     # Unique node identity key for peer-to-peer (P2P) networking
└── priv_validator_key.json  # Validator private signing key (if running as a validator)

Key Configuration Parameters

Network Settings (config.toml)

[p2p]
# Public IP for other nodes to reach you
external_address = "your-public-ip:26656"
# Local address to listen for incoming P2P connections
laddr = "tcp://0.0.0.0:26656"
# Allowed number of peers
max_num_inbound_peers = 40
max_num_outbound_peers = 20
# Network bandwidth limits to prevent congestion
send_rate = 20480000  # 20MB/s
recv_rate = 20480000  # 20MB/s

[rpc]
# RPC listening address
laddr = "tcp://0.0.0.0:26657"
# Maximum concurrent connections
max_open_connections = 900
# Transaction confirmation timeout
timeout_broadcast_tx_commit = "10s"

Application Settings (app.toml)

Database Management

Database Types

ENI supports two database backends:

  1. ENI-DB (Recommended)

  • Optimized for performance and sync time

  • Reduced resource usage

  • Suitable for all nodes

  1. Traditional IAVL DB

  • Standard Cosmos SDK database

  • More extensively tested

ENI-DB Configuration

Setting a very small [more frequent] pruning interval may cause conflicts with automatic snapshots. A very large [less frequent] pruning interval means longer total pruning time, which could lead to missed blocks and extended resync times.

Database Maintenance

The database is generally stable and can run without intervention, but occasional attention may be required:

Service Management

Systemd Commands

Log Management

Enable log rotation to prevent logs from consuming excessive disk space:

Update Procedures

Minor Updates

For minor updates that do not break consensus:

Major Updates

For major upgrades introducing state-breaking changes:

  1. Wait for the specified upgrade block height [visible in the upgrade proposal’s 'plan']

  2. The node will stop automatically.

  3. Update/replace the binary

  4. Restart the node.

Tip - Build the upgrade before the halt height so it can be quickly swapped in, minimizing downtime.

Performance Optimization

The effectiveness of performance optimizations may vary depending on system hardware, workload, and network conditions. Research and test any changes in a controlled environment before implementation to ensure compatibility with your specific configuration and requirements. Always back up critical data before making modifications.

Memory Management (sysctl Tuning)

Optimizing memory management settings can improve performance and stability, especially for high-load nodes. These settings control swap usage and the handling of dirty pages in RAM.

Network Stack Optimization

Tuning the network stack can improve packet handling efficiency and throughput, particularly for nodes handling many peers and high transaction volumes.

Storage Optimization

Optimizing storage settings can significantly reduce write latency and improve database performance, especially for nodes using NVMe SSDs.

Backup and Recovery

Regular Backups

Automate backups to prevent data loss:

Recovery Procedure

Restore from a backup in case of corruption or accidental deletion:

Troubleshooting

Common Issues and Solutions

  1. Synchronization Issues

  • Check available disk space (df -h)

  • Ensure proper peer connections (enid net info)

  • Verify firewall settings (port 26656 open)

  1. Performance Issues

  • Monitor system resources (htop or iotop)

  • Check disk I/O performance (iostat)

  • Analyze network traffic (iftop)

  1. Database Issues

  • Run a database integrity check with:

If errors are detected, consider restoring from a recent backup.

  • Consider pruning excessive historical data by adjusting ss-keep-recent in app.toml, or run:

Alternatively, manually delete old state snapshots to free up space:

Diagnostic Commands

Security Considerations

  • Use a firewall and rate limiting to prevent attacks

  • Keep the system and node software updated

  • Secure SSH access with key-based authentication

  • Protect validator keys with offline storage or a hardware security module (HSM)

For more in-depth system and configuration guidance, refer to the [Advanced Configuration and Monitoring Guide](./advanced-config-monitoring).

Last updated