Аудит смарт-контрактов

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Аудит смарт-контрактов
Средняя
~3-5 рабочих дней
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1056
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Аудит смарт-контрактов

Аудит смарт-контрактов — это не формальная галочка перед mainnet. Это единственная реальная возможность найти уязвимости до того, как их найдут атакующие. Уязвимости в контрактах не патчатся незаметно: эксплойт публичен, потери — мгновенные, репутационный ущерб — постоянный. Ronin Bridge ($625M), Wormhole ($320M), Euler Finance ($197M) — все эти взломы произошли в кодовых базах, которые просматривались командой разработчиков. Свежий взгляд профессиональных аудиторов — это не роскошь.

Что включает полноценный аудит

Аудит — это не просто запуск автоматических анализаторов. Механические инструменты (Slither, Mythril, Echidna) находят до 30–40% уязвимостей, остальное требует ручного анализа логики.

Ручной code review: построчный анализ каждой функции, проверка бизнес-логики на соответствие спецификации. Большинство критических уязвимостей — это не технические паттерны вроде reentrancy, а логические ошибки.

Автоматический анализ: Slither (статический анализ), Mythril (symbolic execution), Echidna (fuzzing). Формирует базу для ручного анализа, находит low-hanging fruit.

Тест-кейсы для уязвимостей: для каждой найденной проблемы формируется Proof of Concept — код, воспроизводящий эксплойт.

Gas optimization: параллельно с безопасностью — анализ неэффективных паттернов (storage vs memory, лишние SLOAD/SSTORE, избыточные events).

Классификация уязвимостей

Критичность Примеры Требует
Critical Reentrancy, arbitrary call, integer overflow Немедленного исправления до deploy
High Access control bypass, price manipulation Исправления до mainnet
Medium Centralization risk, front-running Оценки и часто исправления
Low Gas inefficiency, missing events Рекомендации
Informational Code style, documentation По желанию

Топ уязвимостей 2023–2024

Reentrancy: классика, но встречается до сих пор. Внешний вызов до обновления state позволяет рекурсивно дренировать контракт. Паттерн checks-effects-interactions + ReentrancyGuard.

Price oracle manipulation: флеш-займы позволяют манипулировать спотовой ценой AMM. Использование TWAP (time-weighted average price) вместо spot price — обязательная защита для любого lending протокола.

Access control: onlyOwner вместо role-based access control, отсутствие timelock на критических функциях, неправильная проверка msg.sender в proxy patterns.

Signature replay: подпись, предназначенная для одного контракта/сети, используется в другом. EIP-712 domain separator + nonce — стандартная защита.

// Пример уязвимого кода — signature без nonce и domain
function claimReward(bytes memory signature, uint256 amount) external {
    bytes32 hash = keccak256(abi.encodePacked(msg.sender, amount));
    require(recoverSigner(hash, signature) == trustedSigner, "Invalid sig");
    token.transfer(msg.sender, amount);
    // УЯЗВИМОСТЬ: нет nonce, та же подпись работает повторно
    // УЯЗВИМОСТЬ: нет domain, подпись переносима на другой контракт
}

// Исправленная версия с EIP-712
function claimReward(bytes memory signature, uint256 amount, uint256 nonce) external {
    require(!usedNonces[nonce], "Nonce used");
    
    bytes32 structHash = keccak256(abi.encode(
        CLAIM_TYPEHASH,
        msg.sender,
        amount,
        nonce
    ));
    bytes32 digest = _hashTypedDataV4(structHash);  // EIP-712 domain included
    require(ECDSA.recover(digest, signature) == trustedSigner, "Invalid sig");
    
    usedNonces[nonce] = true;
    token.transfer(msg.sender, amount);
}

Процесс аудита

Phase 1 — Onboarding (1–2 дня): документация от команды (спецификация, архитектурные схемы, описание бизнес-логики). Чем лучше документация — тем эффективнее аудит.

Phase 2 — Manual review (5–10 дней): аудиторы погружаются в код. Минимум два независимых ревьювера на один контракт.

Phase 3 — Automated analysis (параллельно): Slither, Mythril, кастомные Echidna properties.

Phase 4 — Draft report (2–3 дня): формирование предварительного отчёта со всеми находками.

Phase 5 — Remediation review (3–5 дней): команда исправляет, аудиторы верифицируют исправления. Критичные находки требуют повторной проверки.

Phase 6 — Final report: публичный отчёт с описанием всех находок и статусами исправлений.

Стоимость и сроки

Стоимость аудита зависит от объёма кода (строк Solidity), сложности логики и репутации аудитора. Топ-тир аудиторы (Trail of Bits, OpenZeppelin, Spearbit, Code4rena) — $30,000–200,000+ за проект. Средний уровень — $10,000–40,000. Сроки: 1–4 недели.

Соревновательные аудиты (Code4rena, Sherlock, Cantina) — альтернатива или дополнение: публичное соревнование, сотни аудиторов, но неравномерное покрытие и нет гарантии глубины анализа критических функций.

Для большинства DeFi проектов оптимально: один полноценный приватный аудит + публичный contest для широкого покрытия.