# SCV — Smart Contract Verification (полная документация для машин) SCV — платный HTTP API для ИИ-агентов: проверка EVM-смарт-контрактов на rug-pull паттерны. Отчёт — машинночитаемый JSON: скор 0-100, вердикт, флаги риска, детальные проверки. Оплата x402 (HTTP 402), USDC, без API-ключей и регистрации — агент платит со своего кошелька. ## Основное - Базовый адрес: https://scv-agent.online - Цена: $0.005 за контракт (батч до 50: цена x количество) - Сети сканирования: arbitrum, base, bsc, eth, polygon - Оплата: x402 v2, схема exact (EIP-3009), USDC, сеть eip155:8453 - Фасилитатор: https://api.cdp.coinbase.com/platform/v2/x402 - Движок: vector-fast-path v2.1.0, ~35 мс на контракт ## Бесплатные маршруты (без оплаты) - GET /health — статус сервиса, версия, цена, сети (проверка живости) - GET /price — цена и пошаговое описание x402-платежа - GET /example — пример НАСТОЯЩЕГО отчёта (каким будет результат) - GET /openapi.json — спецификация OpenAPI 3.1 - GET /llms.txt — краткая справка; этот файл — полная документация - GET /.well-known/x402.json — манифест оплаты - GET /.well-known/x402 — то же самое без .json (алиас, его просят краулеры) - GET /.well-known/agent.json — A2A Agent Card - GET /.well-known/mcp.json — манифест MCP-сервера (SEP-2127 Server Card) - GET /.well-known/mcp/server-card.json — тот же Server Card, путь по SEP-2127 (новые MCP-клиенты пробуют его первым) - GET /.well-known/agent-registration.json — ERC-8004 domain verification - GET /sitemap.xml — карта сайта для поисковых ботов - GET /.well-known/security.txt — контакты по безопасности ## Платный маршрут - GET /scan?address=0x{40 hex}&network={eth|bsc|polygon|arbitrum|base} - POST /scan {"addresses": ["0x..", ..], "network": "eth"} — батч до 50 - Опционально verify=0 — не проверять исходники (быстрее). - GET /honeypot?address=0x{40 hex}&network=... — honeypot-профиль: скор 0-100 (больше = опаснее) и вердикт HONEYPOT_LIKELY / SUSPICIOUS / CAUTION / UNLIKELY. ## Honeypot-проверка (детали) Движок vector-honeypot: 1-2 batch-POST к RPC-ноде + локальный анализ байткода (bytes.find по 40+ селекторам и revert-строкам ловушек). На цепочке читает owner(), totalSupply(), decimals(), symbol(), tradingOpen() и проверяет isBlacklisted(случайный адрес). Симуляции сделки нет (v2); для полного отчёта используйте /scan. ## MCP (Model Context Protocol) - POST /mcp (алиасы /mcp/v1 и /sse) — JSON-RPC 2.0, Streamable HTTP. - Методы: initialize, ping, tools/list, tools/call. - Инструменты: scv_scan, scv_feed, scv_wallet_risk, scv_approvals, scv_honeypot (те же данные и цены, что у HTTP-маршрутов). - Оплата x402 внутри MCP: неоплаченный tools/call -> result.isError=true с требованиями в content[0].text + заголовок PAYMENT-REQUIRED; подпишите платёж EIP-3009 и повторите тот же вызов с заголовком PAYMENT-SIGNATURE (base64-JSON PaymentPayload). - Манифест: /.well-known/mcp.json (Server Card по SEP-2127). Тот же документ: /.well-known/mcp/server-card.json — именно его пробуют новые MCP-клиенты перед подключением. ## Протокол оплаты x402 v2 (шаг за шагом) 1. Агент вызывает GET /scan?address=0x.. — получает HTTP 402 c заголовком PAYMENT-REQUIRED: base64-JSON (x402Version, resource, accepts со схемой exact, network, amount, asset, payTo; extensions.bazaar с inputSchema). Всё то же самое есть и в теле ответа. 2. Агент подписывает EIP-3009 transferWithAuthorization (USDC): from = кошелёк агента, to = payTo, value = amount (атомарные единицы, 6 знаков), nonce = случайные 32 байта, validAfter/validBefore — окно действия. EIP-712 домен: name из extra 402 (mainnet Base: "USD Coin"), version="2", verifyingContract=asset, chainId из network. 3. Агент повторяет ТОТ ЖЕ запрос с заголовком PAYMENT-SIGNATURE: base64-JSON (x402Version, accepted из 402, payload с signature и authorization). 4. Сервер проверяет платёж у фасилитатора (/verify), выполняет скан, затем фасилитатор проводит перевод (/settle). Ответ 200: отчёт JSON + PAYMENT-RESPONSE (чек с хэшем транзакции). Если скан не удался — деньги НЕ списываются (verify -> ресурс -> settle). Готовые SDK: TypeScript x402-fetch, Python x402-requests/HTTPXTransport. ## Что проверяется (флаги риска) - mint — может ли owner чеканить токены (разводнение) - pause — можно ли заморозить переводы - blacklist — чёрные списки адресов (заморозка купленного) - tax — налоги на перевод (buy/sell tax) - honeypot — симуляция покупки/продажи (продаётся ли вообще) - proxy — обновляемый прокси (код может измениться) - ownership — владелец EOA или контракт, renounced ли - verified_source — проверены ли исходники в эксплорере ## Формат отчёта (GET /scan, 200) service, engine, scan (request: address/chain/chain_name; risk_score 0-100; risk_verdict; flags[]; checks{...}), payment (payer, transaction, network, amount_atomic, asset), timing (scan_ms, total_ms). POST /scan (батч): results[] — список отчётов, stats — статистика. ## Коды ошибок - 400 — неверный адрес/сеть/параметры (платёж не требуется) - 402 — нет или неверен PAYMENT-SIGNATURE (в теле причина) - 502 — скан не выполнен, оплата НЕ списана - 503 — фасилитатор недоступен, попробуйте позже ## Быстрый старт (curl) curl -i "https://scv-agent.online/scan?address=0xdAC17F958D2ee523a2206206994597C13D831ec7&network=eth" # -> 402 + PAYMENT-REQUIRED: подпишите платёж и повторите с PAYMENT-SIGNATURE.