VALIDEXIS Services
  • 👋 About US
  • 🌐 Supported Networks
  • 🌍 Our Validators
  • 🔐 Validator Security: Our Approach and Protection Measures
    • 🔒Enhancing SSH Security for a Validator
    • 📡 TMKMS for Remote Signing
    • 🔑 Horcrux
    • 🛡️ Protecting Validator from DDoS Attacks
    • 🧩Multi-Factor Authentication (MFA) for a Validator
  • 🚨Monitoring
    • 📊 Node-exporter + Prometheus + Grafana
    • 🕵️ TenderDuty for Node Monitoring
  • 🧵 Setting up connection to IBC with Hermes
  • 🤖CelestiaUltraBot
    • 🏆 Contest
    • 🚀 Getting started
    • 🖥️ Validator monitoring
    • 🔍 Bridge Node Monitoring
    • 👛 Wallet
    • 🛸 AI Troubleshooting
  • 🟢 MAINNETS
    • Celestia
      • 🗂️ API/RPC/gRPC/AddrBook
      • 📸 Snapshot
      • 🔗 Validator Node Installation
        • 🛠️ Upgrade
        • 📜 Useful Commands
      • 💾 Full Node Installation
        • 🛠️ Upgrade
        • 📜 Useful Commands
      • 🌉 Bridge Node Installation
        • 🛠️ Upgrade
        • 📜 Useful Commands
      • 💡 Light Node Installation
        • 🛠️ Upgrade
        • 📜 Useful Commands
    • Zetachain
      • ⚙️ Installation
      • 🛠️ Upgrade
      • 📜 Useful Commands
    • Xion
      • ⚙️ Installation
      • 🛠️ Upgrade
      • 📜 Useful Commands
    • Nibiru
      • ⚙️ Installation
      • 🛠️ Upgrade
      • 📜 Useful Commands
    • Kyve
      • ⚙️ Installation
      • 🛠️ Upgrade
      • 📜 Useful Commands
    • Juno
      • ⚙️ Installation
      • 🛠️ Upgrade
      • 📜 Useful Commands
    • Agoric
      • ⚙️ Installation
      • 🛠️ Upgrade
      • 📜 Useful Commands
    • CosmosHub
      • ⚙️ Installation
      • 🛠️ Upgrade
      • 📜 Useful Commands
    • Lava
      • ⚙️ Installation
      • 🛠️ Upgrade
      • 📜 Useful Commands
    • Uptick
      • ⚙️ Installation
      • 🛠️ Upgrade
      • 📜 Useful Commands
    • Paloma
      • ⚙️ Installation
      • 🛠️ Upgrade
      • 📜 Useful Commands
    • Kusama
      • 🗂️ API/RPC
      • 📸 Snapshot
      • ⚙️ Installation
      • 🛠️ Upgrade
      • 📜 Useful Commands
    • Polkadot
      • 🗂️ API/RPC
      • 📸 Snapshot
      • ⚙️ Installation
      • 🛠️ Upgrade
      • 📜 Useful Commands
      • 🔧 Installing a Polkadot Node Using Kagome
      • 🧪 Benchmarking a Server for Substrate/Polkadot
      • 📘 Monitoring Polkadot Nodes with Prometheus and Alertmanager
      • 🔐 UFW Security Template
    • Starknet
      • ⚙️ Installation
      • 🛠️ Upgrade
      • 📜 Useful Commands
    • NYM
      • ⚙️ Installation
      • 🛠️ Upgrade
      • 📜 Useful Commands
  • 🟡 TESTNETS
    • Celestia
      • 🗂️ API/RPC/AddrBook
      • 📸 Snapshot
      • 🔗 Validator Node Installation
        • 🛠️ Upgrade
        • 📜 Useful Commands
      • 💾 Full Node Installation
        • 🛠️ Upgrade
        • 📜 Useful Commands
      • 🌉 Bridge Node Installation
        • 🛠️ Upgrade
        • 📜 Useful Commands
      • 💡 Light Node Installation
        • 🛠️ Upgrade
        • 📜 Useful Commands
Powered by GitBook
On this page
  • Prerequisites
  • Install Hermes Relayer
  • Configure Hermes with Fee Support
  • Add Wallet Keys
  • Validate Configuration and Network Access
  • Create Clients, Connections, and Channel
  • Run Hermes Relayer
  • Setup Hermes as a systemd Service

🧵 Setting up connection to IBC with Hermes

Prerequisites

  • A Linux server (Ubuntu/Debian recommended)

  • Minimum: 4 GB RAM, 2 CPU, 100 GB SSD

  • Rust and Cargo installed

  • Access to RPC nodes for Celestia and Osmosis (or own full nodes)

  • Wallets funded with a small amount of TIA (Celestia) and OSMO (Osmosis)

Install Hermes Relayer

# Update system
sudo apt update && sudo apt upgrade -y

# Install dependencies
sudo apt install -y build-essential git curl jq pkg-config libssl-dev

# Install Rust (if not already installed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env

# Clone and install Hermes
git clone https://github.com/informalsystems/hermes.git
cd hermes
git checkout v1.13.0  # Use a stable version
cargo install --locked --path crates/relayer-cli

# Verify installation
hermes version

Configure Hermes with Fee Support

# Create config directory
mkdir -p $HOME/.hermes/keys

# Create configuration file
cat > $HOME/.hermes/config.toml << EOF
[global]
log_level = 'info'
clear_packets_interval = 100
tx_confirmation = true

[mode]
[mode.clients]
enabled = true
refresh = true
misbehaviour = true

[mode.connections]
enabled = true

[mode.channels]
enabled = true

[mode.packets]
enabled = true
clear_interval = 100
clear_on_start = true
tx_confirmation = true

[rest]
enabled = true
host = '127.0.0.1'
port = 3000

[telemetry]
enabled = true
host = '127.0.0.1'
port = 3001

[[chains]]
id = 'celestia'
type = 'CosmosSdk'
rpc_addr = 'https://rpc.celestia.org:443'
grpc_addr = 'https://grpc.celestia.org:443'
websocket_addr = 'wss://rpc.celestia.org:443/websocket'
rpc_timeout = '10s'
account_prefix = 'celestia'
key_name = 'celestia-key'
key_store_type = 'Test'
store_prefix = 'ibc'
default_gas = 100000
max_gas = 3000000
gas_price = { price = 0.025, denom = 'utia' }
gas_multiplier = 1.3
max_msg_num = 30
max_tx_size = 180000
clock_drift = '5s'
max_block_time = '30s'
trusting_period = '14days'
trust_threshold = { numerator = '1', denominator = '3' }
address_type = { derivation = 'cosmos' }

[[chains.packet_filter]]
policy = 'allow'
list = [
  ['transfer', '*'],
]

[chains.packet_filter.min_fees]
enabled = true
recv_fee = [{ amount = "100", denom = "utia" }]
ack_fee = [{ amount = "100", denom = "utia" }]
timeout_fee = [{ amount = "100", denom = "utia" }]

[[chains]]
id = 'osmosis-1'
type = 'CosmosSdk'
rpc_addr = 'https://rpc.osmosis.zone:443'
grpc_addr = 'https://grpc.osmosis.zone:443'
websocket_addr = 'wss://rpc.osmosis.zone:443/websocket'
rpc_timeout = '10s'
account_prefix = 'osmo'
key_name = 'osmo-key'
key_store_type = 'Test'
store_prefix = 'ibc'
default_gas = 100000
max_gas = 3000000
gas_price = { price = 0.025, denom = 'uosmo' }
gas_multiplier = 1.3
max_msg_num = 30
max_tx_size = 180000
clock_drift = '5s'
max_block_time = '30s'
trusting_period = '14days'
trust_threshold = { numerator = '1', denominator = '3' }
address_type = { derivation = 'cosmos' }

[[chains.packet_filter]]
policy = 'allow'
list = [
  ['transfer', '*'],
]

[chains.packet_filter.min_fees]
enabled = true
recv_fee = [{ amount = "100", denom = "uosmo" }]
ack_fee = [{ amount = "100", denom = "uosmo" }]
timeout_fee = [{ amount = "100", denom = "uosmo" }]
EOF

Add Wallet Keys

# Save your mnemonics securely
echo "your celestia mnemonic here" > $HOME/celestia_mnemonic.txt
echo "your osmosis mnemonic here" > $HOME/osmosis_mnemonic.txt
chmod 600 $HOME/celestia_mnemonic.txt $HOME/osmosis_mnemonic.txt

# Import keys
hermes keys add --chain celestia --mnemonic-file $HOME/celestia_mnemonic.txt
hermes keys add --chain osmosis-1 --mnemonic-file $HOME/osmosis_mnemonic.txt

# Check keys
hermes keys list --chain celestia
hermes keys list --chain osmosis-1

Validate Configuration and Network Access

# Validate Hermes configuration
hermes config validate

# Check network health
hermes health-check

Create Clients, Connections, and Channel

# Create clients
hermes create client --host-chain celestia --reference-chain osmosis-1
hermes create client --host-chain osmosis-1 --reference-chain celestia

# Query created clients
hermes query clients --host-chain celestia
hermes query clients --host-chain osmosis-1

# Create connection
hermes create connection --a-chain celestia --b-chain osmosis-1

# Query connections
hermes query connections --chain celestia
hermes query connections --chain osmosis-1

# Create channel for token transfers
hermes create channel --a-chain celestia --b-chain osmosis-1 --a-port transfer --b-port transfer --new-client-connection

# Query channels
hermes query channels --chain celestia
hermes query channels --chain osmosis-1

Run Hermes Relayer

# Run Hermes in background
nohup hermes start > hermes.log 2>&1 &

# Check if running
ps aux | grep hermes

# View logs
tail -f hermes.log

Setup Hermes as a systemd Service

# Create a systemd service
sudo tee /etc/systemd/system/hermes.service > /dev/null << EOF
[Unit]
Description=Hermes IBC Relayer
After=network-online.target

[Service]
User=$USER
ExecStart=$(which hermes) start
Restart=always
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

# Enable and start service
sudo systemctl daemon-reload
sudo systemctl enable hermes
sudo systemctl start hermes

# Check service status
sudo systemctl status hermes
Previous🕵️ TenderDuty for Node MonitoringNext🤖CelestiaUltraBot

Last updated 1 month ago