Evm
EVM-клиент только для чтения: кошельки, токены, газ на 8 сетях.
Метаданные навыка
| Источник | Optional — hermes skills install official/blockchain/evm |
| Путь | optional-skills/blockchain/evm |
| Версия | 1.0.0 |
| Автор | Mibayy (@Mibayy), youssefea (@youssefea), ethernet8023 (@ethernet8023), Hermes Agent |
| Лицензия | MIT |
| Платформы | linux, macos, windows |
| Теги | EVM, Ethereum, BNB, BSC, Base, Arbitrum, Polygon, Optimism, Avalanche, zkSync, Blockchain, Crypto, Web3, DeFi, NFT, ENS, Whale, Security |
| Связанные навыки | solana |
Справочник: полный SKILL.md
Ниже — полное определение навыка, которое Hermes загружает при его активации. Именно это агент видит как инструкции, когда навык включён.
EVM Blockchain Skill
Запрос данных EVM-совместимых блокчейнов на 8 сетях с ценами в USD. 14 команд: портфолио кошелька, информация о токене, транзакции, история активности, трекер газа, статистика сети, поиск цены, мультичейн-скан, обнаружение китов, разрешение ENS, проверка аппрувов, инспектор контрактов и декодирование транзакций.
Поддерживает 8 сетей: Ethereum, BNB Chain (BSC), Base, Arbitrum One, Polygon, Optimism, Avalanche (C-Chain), zkSync Era.
API-ключ не нужен. Никаких внешних зависимостей — только стандартная библиотека Python (urllib, json, argparse, threading).
Заменяет отдельный навык
base. Токены, специфичные для Base (AERO, DEGEN, TOSHI, BRETT, WELL, cbETH, cbBTC, wstETH, rETH), и весь RPC-функционал Base, ранее находившийся вoptional-skills/blockchain/base/, теперь включены в этот навык. Для работы с Base передавайте--chain baseв любую команду.
Когда использовать
- Пользователь запрашивает баланс или портфолио кошелька на любой EVM-сети
- Пользователь хочет проверить один и тот же кошелёк сразу на всех сетях
- Пользователь хочет изучить транзакцию по хешу (или декодировать, что она сделала)
- Пользователь хочет получить метаданные ERC-20 токена, цену, общее предложение или рыночную капитализацию
- Пользователь хочет посмотреть историю последних транзакций для адреса
- Пользователь хочет узнать текущие цены на газ или сравнить комиссии по сетям
- Пользователь хочет найти крупные переводы китов в последних блоках
- Пользователь хочет разрешить ENS-имя (vitalik.eth) или обратно найти имя по адресу
- Пользователь хочет проверить, есть ли у контракта опасные разрешения на токены
- Пользователь хочет изучить смарт-контракт (прокси? ERC-20? ERC-721? размер байткода?)
- Пользователь хочет сравнить стоимость газа по сетям перед транзакцией
Требования
Только стандартная библиотека Python 3.8+. Установка через pip не нужна. Котировки: бесплатный API CoinGecko (ограничение запросов ~10–30 в минуту). ENS: публичный API ensideas.com. Декодирование транзакций: публичный API 4byte.directory.
Переопределение RPC-эндпоинта: export EVM_RPC_URL=https://your-rpc.com
Путь к вспомогательному скрипту: ~/.hermes/skills/blockchain/evm/scripts/evm_client.py
Быстрый справочник
SCRIPT=~/.hermes/skills/blockchain/evm/scripts/evm_client.py
# Network & prices
python $SCRIPT stats # Ethereum stats
python $SCRIPT stats --chain arbitrum # Arbitrum stats
python $SCRIPT compare # Gas + prices ALL 8 chains
# Wallet
python $SCRIPT wallet 0xd8dA...96045 # Portfolio (ETH + ERC-20)
python $SCRIPT wallet 0xd8dA...96045 --chain bsc
python $SCRIPT multichain 0xd8dA...96045 # Same wallet on ALL chains
# Tokens & prices
python $SCRIPT price ETH
python $SCRIPT price 0xdAC1...1ec7 # By contract address
python $SCRIPT token 0xdAC1...1ec7 # ERC-20 metadata + market cap
# Transactions
python $SCRIPT tx 0x5c50...f060 # Transaction details
python $SCRIPT decode 0x5c50...f060 # Decode input data (4byte.directory)
python $SCRIPT activity 0xd8dA...96045 # Recent transactions
# Gas
python $SCRIPT gas # Gas prices + cost estimates
python $SCRIPT gas --chain optimism
# Security
python $SCRIPT allowance 0xd8dA...96045 # Dangerous ERC-20 approvals
python $SCRIPT contract 0xdAC1...1ec7 # Contract inspection (proxy? standards?)
# ENS
python $SCRIPT ens vitalik.eth # Name -> address + profile
python $SCRIPT ens 0xd8dA...96045 # Address -> ENS name
# Whale detection
python $SCRIPT whale # Large transfers (last 20 blocks, >$10k)
python $SCRIPT whale --blocks 50 --min-usd 100000 --chain arbitrum
Порядок работы
0. Проверка установки
python --version # 3.8+ required
python ~/.hermes/skills/blockchain/evm/scripts/evm_client.py stats
1. Портфолио кошелька
Нативный баланс + известные ERC-20 токены, отсортированные по стоимости в USD.
python $SCRIPT wallet 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
python $SCRIPT wallet 0xd8dA... --chain bsc --no-prices # faster
2. Мультичейн-скан
Сканирует все 8 сетей одновременно для одного адреса — параллельно, в потоках.
python $SCRIPT multichain 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
Вывод: нативный баланс + токены по каждой сети + итоговая сумма в USD.
3. Сравнение (газ + цены)
Все 8 сетей запрашиваются параллельно. Показывает самую дешёвую и самую дорогую сеть.
python $SCRIPT compare
4. Детали и декодирование транзакций
python $SCRIPT tx 0x5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060
python $SCRIPT decode 0x5c504ed... # Выводит сигнатуру функции в читаемом виде
Декодирование использует 4byte.directory для перевода 0xa9059cbb -> transfer(address,uint256).
5. Разрешение ENS
python $SCRIPT ens vitalik.eth # -> 0xd8dA... + avatar + social links
python $SCRIPT ens 0xd8dA...96045 # -> vitalik.eth
6. Проверка аппрувов (безопасность)
Проверяет ERC-20 аппрувы, выданные известным контрактам DEX и мостов.
python $SCRIPT allowance 0xYourWallet
Неограниченные аппрувы помечаются как HIGH risk.
7. Инспектор контрактов
python $SCRIPT contract 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 # USDC (proxy)
python $SCRIPT contract 0xdAC17F958D2ee523a2206206994597C13D831ec7 # USDT (ERC-20)
Определяет: прокси (EIP-1967/EIP-1167), ERC-20, ERC-721, ERC-165. Выводит размер байткода и адрес реализации для прокси.
8. Обнаружение китов
python $SCRIPT whale # ETH, last 20 blocks, >$10k
python $SCRIPT whale --blocks 50 --min-usd 50000 --chain bsc
9. Трекер газа
python $SCRIPT gas
python $SCRIPT gas --chain polygon
Показывает цену в gwei + стоимость в USD для: обычного перевода, перевода ERC-20, approve, swap, минта NFT, перевода NFT.
Поддерживаемые сети
| Ключ | Название | Нативный | 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 |
Подводные камни
- Бесплатный тариф CoinGecko: ~10–30 запросов в минуту. Используйте
--no-pricesдля ускорения сканирования кошельков. - Публичные RPC могут ограничивать частоту запросов. Для продакшена задайте EVM_RPC_URL с приватным эндпоинтом.
walletиallowanceпроверяют только известный список токенов (~30 на сеть). Для полного обнаружения токенов используйте блок-эксплорер.activityсканирует только последние блоки (максимум 200). Для полной истории нужен Etherscan API.multichainзапускает 8 параллельных потоков — на публичных RPC это может вызвать ограничение частоты запросов.- Разрешение ENS зависит от единственного публичного эндпоинта (ensideas.com / ens.vitalik.ca) без запасного варианта. Если он недоступен, команда
ensзавершится ошибкой — попробуйте позже или воспользуйтесь блок-эксплорером. - Декодирование транзакций зависит от единственного публичного эндпоинта (4byte.directory) без запасного варианта. Селекторы, которых нет в их базе, отображаются как
unknown. - Оценки газа для L2 — только L2-выполнение. На роллапах Base, Arbitrum, Optimism и zkSync реальная стоимость транзакции включает также комиссию за публикацию данных на L1, которая зависит от размера calldata и текущей цены газа на L1. Команда
gasне учитывает эту L1-составляющую. Для Base конкретно смотрите оракул комиссий L1 (контракт0x420000000000000000000000000000000000000F). - Адреса и хеши транзакций проверяются на наличие префикса 0x, правильную длину и hex-символы, однако соответствие контрольной сумме EIP-55 не проверяется (RPC-эндпоинты принимают hex в любом регистре).
Проверка работоспособности
# Должно вывести текущий блок, цену газа и цену ETH
python ~/.hermes/skills/blockchain/evm/scripts/evm_client.py stats
# Должно разрешить vitalik.eth в 0xd8dA...
python ~/.hermes/skills/blockchain/evm/scripts/evm_client.py ens vitalik.eth