hermes-agent/optional-skills/blockchain/evm/SKILL.md
Mibayy aa1e2edd35 feat: add EVM multi-chain skill (8 chains, 14 commands)
Adds a comprehensive EVM blockchain skill with 14 commands:
- stats, wallet, tx, token, activity, gas, price (core queries)
- compare: gas + prices across all 8 chains simultaneously
- whale: scan recent blocks for large transfers (configurable min USD)
- multichain: scan same wallet across all 8 chains in parallel
- allowance: check dangerous ERC-20 approvals (Permit2, Uniswap, 1inch...)
- decode: decode tx input data via 4byte.directory
- ens: resolve ENS names <-> addresses (bidirectional)
- contract: inspect contracts (proxy detection, ERC-20/721, bytecode size)

Chains: Ethereum, BNB Chain, Base, Arbitrum One, Polygon, Optimism, Avalanche, zkSync Era

Zero external dependencies. Python stdlib only (urllib, json, argparse, threading).

Co-authored-by: Mibayy <mibay@clawhub.io>
2026-05-13 17:18:39 -07:00

7.3 KiB

name description version author license metadata
evm Query EVM blockchain data across 8 chains — wallet portfolios, ERC-20 tokens, transactions, gas tracker, whale detection, multi-chain scan, ENS resolution, allowance checker, contract inspection, and tx decoder. Supports Ethereum, BNB Chain, Base, Arbitrum, Polygon, Optimism, Avalanche, zkSync. Uses public RPCs + CoinGecko. No API key required. 1.0.0 Mibayy MIT
hermes
tags category related_skills requires_toolsets
EVM
Ethereum
BNB
BSC
Base
Arbitrum
Polygon
Optimism
Avalanche
zkSync
Blockchain
Crypto
Web3
DeFi
NFT
ENS
Whale
Security
blockchain
solana
terminal

EVM Blockchain Skill

Query EVM-compatible blockchain data across 8 chains with USD pricing. 14 commands: wallet portfolio, token info, transactions, activity, gas tracker, network stats, price lookup, multi-chain scan, whale detection, ENS resolution, allowance checker, contract inspector, and transaction decoder.

Supports 8 chains: Ethereum, BNB Chain (BSC), Base, Arbitrum One, Polygon, Optimism, Avalanche (C-Chain), zkSync Era.

No API key needed. Zero external dependencies — Python standard library only (urllib, json, argparse, threading).


When to Use

  • User asks for a wallet balance or portfolio on any EVM chain
  • User wants to check the same wallet across ALL chains at once
  • User wants to inspect a transaction by hash (or decode what it did)
  • User wants ERC-20 token metadata, price, supply, or market cap
  • User wants recent transaction history for an address
  • User wants current gas prices or to compare fees across chains
  • User wants to find large whale transfers in recent blocks
  • User asks to resolve an ENS name (vitalik.eth) or reverse-lookup an address
  • User wants to check if a contract has dangerous token approvals
  • User wants to inspect a smart contract (proxy? ERC-20? ERC-721? bytecode size?)
  • User wants to compare gas costs across chains before a transaction

Prerequisites

Python 3.8+ standard library only. No pip installs required. Pricing: CoinGecko free API (rate-limited, ~10-30 req/min). ENS: ensideas.com public API. Tx decoding: 4byte.directory public API.

Override RPC endpoint: export EVM_RPC_URL=https://your-rpc.com

Helper script path: ~/.hermes/skills/blockchain/evm/scripts/evm_client.py


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

Key Name Native Chain ID
ethereum Ethereum ETH 1
bsc BNB Chain BNB 56
base Base ETH 8453
arbitrum Arbitrum One ETH 42161
polygon Polygon POL 137
optimism Optimism ETH 10
avalanche Avalanche C AVAX 43114
zksync zkSync Era ETH 324

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 requires internet access to ensideas.com.
  • Tx decode requires internet access to 4byte.directory.

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