OptionalBlockchainVersion 1.0.0

EVM Blockchain Skill: Query 8 Chains, Wallets, Tokens, Gas & ENS

Read-only EVM client: wallets, tokens, gas across 8 chains.

Written by Neura Market from the official Hermes Agent documentation for Evm. Commands, paths, and version numbers are reproduced from the source unchanged.

Read the official documentation

The EVM Blockchain skill gives Hermes Agent read-only access to Ethereum, BNB Chain, Base, Arbitrum One, Polygon, Optimism, Avalanche C-Chain, and zkSync Era. You get 14 commands for wallet portfolios, token metadata, transaction inspection, gas tracking, whale detection, ENS resolution, contract inspection, and allowance checking. No API key, no pip installs, no external dependencies beyond Python 3.8+. This is the skill you reach for when a user asks "what's in this wallet?" or "what did that transaction do?" across any EVM chain.

What it does

  • Wallet portfolio: native balance plus known ERC-20 tokens, sorted by USD value, on any of the 8 supported chains.
  • Multi-chain scan: same wallet on all 8 chains simultaneously, with a grand total USD.
  • Token info & price: by symbol or contract address, including market cap and supply.
  • Transaction details & decode: raw tx data plus human-readable function signature via 4byte.directory.
  • Activity: recent transactions for an address (last 200 blocks).
  • Gas tracker: gwei price plus USD cost for common operations (transfer, swap, NFT mint, etc.) on any chain.
  • Compare: gas prices and native token prices across all 8 chains in one call.
  • Whale detection: large transfers above a configurable USD threshold in recent blocks.
  • ENS resolution: forward (name to address) and reverse (address to name) with avatar and social links.
  • Allowance checker: flags ERC-20 approvals granted to known DEX/bridge contracts, marking UNLIMITED as HIGH risk.
  • Contract inspector: detects proxy patterns (EIP-1967/EIP-1167), ERC-20, ERC-721, ERC-165, and shows bytecode size and implementation address.

Supersedes the standalone base skill. Base-specific tokens (AERO, DEGEN, TOSHI, BRETT, WELL, cbETH, cbBTC, wstETH, rETH) and all Base RPC functionality previously living under optional-skills/blockchain/base/ have been folded into this skill. Pass --chain base to any command for Base coverage.

Before you start

  • Python 3.8+ is required. The skill uses only the standard library (urllib, json, argparse, threading). No pip installs.
  • Pricing data comes from CoinGecko's free API, which is rate-limited to roughly 10-30 requests per minute.
  • ENS resolution uses ensideas.com public API.
  • Transaction decoding uses 4byte.directory public API.
  • The helper script lives at ~/.hermes/skills/blockchain/evm/scripts/evm_client.py. Set the environment variable EVM_RPC_URL to override the default public RPC endpoint.
  • The skill is installed on demand (optional tier). It is available on Linux, macOS, and Windows.

Quick Reference

SCRIPT=~/.hermes/skills/blockchain/evm/scripts/evm_client.py

# Network & prices
python3 $SCRIPT stats                            # Ethereum stats
python3 $SCRIPT stats --chain arbitrum           # Arbitrum stats
python3 $SCRIPT compare                          # Gas + prices ALL 8 chains

# Wallet
python3 $SCRIPT wallet 0xd8dA...96045            # Portfolio (ETH + ERC-20)
python3 $SCRIPT wallet 0xd8dA...96045 --chain bsc
python3 $SCRIPT multichain 0xd8dA...96045        # Same wallet on ALL chains

# Tokens & prices
python3 $SCRIPT price ETH
python3 $SCRIPT price 0xdAC1...1ec7              # By contract address
python3 $SCRIPT token 0xdAC1...1ec7              # ERC-20 metadata + market cap

# Transactions
python3 $SCRIPT tx 0x5c50...f060                 # Transaction details
python3 $SCRIPT decode 0x5c50...f060             # Decode input data (4byte.directory)
python3 $SCRIPT activity 0xd8dA...96045          # Recent transactions

# Gas
python3 $SCRIPT gas                              # Gas prices + cost estimates
python3 $SCRIPT gas --chain optimism

# Security
python3 $SCRIPT allowance 0xd8dA...96045         # Dangerous ERC-20 approvals
python3 $SCRIPT contract 0xdAC1...1ec7           # Contract inspection (proxy? standards?)

# ENS
python3 $SCRIPT ens vitalik.eth                  # Name -> address + profile
python3 $SCRIPT ens 0xd8dA...96045               # Address -> ENS name

# Whale detection
python3 $SCRIPT whale                            # Large transfers (last 20 blocks, >$10k)
python3 $SCRIPT whale --blocks 50 --min-usd 100000 --chain arbitrum

Procedure

0. Setup Check

python3 --version   # 3.8+ required
python3 ~/.hermes/skills/blockchain/evm/scripts/evm_client.py stats

1. Wallet Portfolio

Native balance + known ERC-20 tokens, sorted by USD value.

python3 $SCRIPT wallet 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
python3 $SCRIPT wallet 0xd8dA... --chain bsc --no-prices   # faster

2. Multi-Chain Scan

Scans all 8 chains simultaneously for the same address using threads.

python3 $SCRIPT multichain 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045

Output: per-chain native balance + token holdings + grand total USD.

3. Compare (Gas + Prices)

All 8 chains queried in parallel. Shows cheapest/most expensive chain.

python3 $SCRIPT compare

4. Transaction Details & Decode

python3 $SCRIPT tx 0x5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060
python3 $SCRIPT decode 0x5c504ed...   # Shows human-readable function signature

Decode uses 4byte.directory to translate 0xa9059cbb -> transfer(address,uint256).

5. ENS Resolution

python3 $SCRIPT ens vitalik.eth          # -> 0xd8dA... + avatar + social links
python3 $SCRIPT ens 0xd8dA...96045       # -> vitalik.eth

6. Allowance Checker (Security)

Checks ERC-20 approvals granted to known DEX/bridge contracts.

python3 $SCRIPT allowance 0xYourWallet

Flags UNLIMITED approvals as HIGH risk.

7. Contract Inspector

python3 $SCRIPT contract 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48   # USDC (proxy)
python3 $SCRIPT contract 0xdAC17F958D2ee523a2206206994597C13D831ec7   # USDT (ERC-20)

Detects: proxy (EIP-1967/EIP-1167), ERC-20, ERC-721, ERC-165. Shows bytecode size and implementation address for proxies.

8. Whale Detection

python3 $SCRIPT whale                                    # ETH, last 20 blocks, >$10k
python3 $SCRIPT whale --blocks 50 --min-usd 50000 --chain bsc

9. Gas Tracker

python3 $SCRIPT gas
python3 $SCRIPT gas --chain polygon

Shows gwei price + USD cost for: transfer, ERC-20 transfer, approve, swap, NFT mint, NFT transfer.

Supported Chains

KeyNameNativeChain ID
ethereumEthereumETH1
bscBNB ChainBNB56
baseBaseETH8453
arbitrumArbitrum OneETH42161
polygonPolygonPOL137
optimismOptimismETH10
avalancheAvalanche CAVAX43114
zksynczkSync EraETH324

Pitfalls

  • CoinGecko free tier: ~10-30 req/min. Use --no-prices for faster wallet scans.
  • Public RPCs may throttle. Set EVM_RPC_URL to a private endpoint for production.
  • wallet and allowance only check known token list (~30 tokens per chain). Use a block explorer for complete token discovery.
  • activity scans recent blocks only (max 200). For full history, use Etherscan API.
  • multichain runs 8 parallel threads, can trigger rate limits on public RPCs.
  • ENS resolution depends on a single public endpoint (ensideas.com / ens.vitalik.ca) with no fallback. If that endpoint is down, ens will fail, re-run later or use a block explorer.
  • Tx decoding depends on a single public endpoint (4byte.directory) with no fallback. Selectors not in their database show up as unknown.
  • L2 gas estimates are L2-execution only. On rollups like Base, Arbitrum, Optimism, and zkSync, the actual transaction cost also includes an L1 data-posting fee that depends on calldata size and current L1 gas prices. The gas command does not estimate that L1 component. For Base specifically, see the network's L1 fee oracle (contract 0x420000000000000000000000000000000000000F).
  • Address / tx-hash inputs are validated for 0x-prefix + correct length + hex, but EIP-55 checksum casing is not enforced (RPC endpoints accept any-case hex).

Verification

# Should print current block, gas price, ETH price
python3 ~/.hermes/skills/blockchain/evm/scripts/evm_client.py stats

# Should resolve vitalik.eth to 0xd8dA...
python3 ~/.hermes/skills/blockchain/evm/scripts/evm_client.py ens vitalik.eth

When not to use it

If you need write capabilities (sending transactions, deploying contracts), this skill is read-only. For Solana blockchain queries, use the related solana skill instead. For complete token discovery beyond the ~30-token known list per chain, or for full historical transaction data, use a dedicated block explorer API.

Limits and gotchas

All the pitfalls listed above apply. The most common surprises: rate limits on public RPCs and CoinGecko, the L2 gas estimate caveat, and the single-point-of-failure for ENS and 4byte.directory lookups. The --no-prices flag is your friend when speed matters.

Related skills

  • solana: Solana blockchain queries, similar read-only pattern.

Skills the docs pair this with

More Blockchain skills