DeFi-протоколу нужно отложенное исполнение административных действий. Без таймлок-контракта аудиторы забракуют проект — это базовая гарантия безопасности. После серии взломов DeFi-платформ в начале десятилетия таймлок стал обязательным требованием для листинга на централизованных биржах. Мы разрабатываем такие контракты под ключ: от простой интеграции OpenZeppelin до кастомных решений с гибкой задержкой и контрольными ролями. За 5 лет работы мы реализовали 10+ DeFi-протоколов с разной архитектурой управления. Команда имеет 7+ лет опыта в разработке смарт-контрактов и провела аудит для 15 проектов.
Compound Finance ввёл таймлок-контракт в мейнстрим. Их Timelock.sol — двухдневная задержка перед исполнением любых изменений протокола — стал стандартом после того, как несколько DeFi-протоколов потеряли средства из-за мгновенных admin-операций. Сейчас таймлок — это базовое требование любого аудитора и первый вопрос на листинге.
Как настроить таймлок-контракт за 5 шагов
- Определите операции, требующие задержки (изменение комиссий, смена owner, обновление контрактов).
- Выберите задержку для каждой операции (мин. 48 часов для production).
- Выберите платформу: OpenZeppelin TimelockController или кастомный контракт.
- Интегрируйте с Governor или мультисигом.
- Напишите тесты и проведите аудит.
OpenZeppelin TimelockController позволяет настроить таймлок в 2 раза быстрее, чем написание кастомного решения, и проверен тысячами проектов.
Как мы реализуем таймлок-контракты?
Мы используем два подхода — выбор зависит от архитектуры протокола и потребностей в управлении.
| Характеристика |
OpenZeppelin TimelockController |
Кастомный таймлок |
| Готовность |
Мгновенно, обширные тесты |
Пишется под задачу, 2–3 дня |
| Гибкость задержек |
Одна задержка на все операции |
Разные задержки для разных ролей/функций |
| Интеграция с Governor |
Встроенная (GovernorTimelockControl) |
Ручная настройка |
| Экстренный bypass |
Нет встроенного |
Реализуется через Pausable + отдельная роль |
| Аудит |
Многократно проверен |
Требуется отдельный аудит |
Для нового протокола мы рекомендуем начинать с TimelockController — он покрывает 80% случаев. Кастомный таймлок оправдан, когда нужны разные задержки для изменения fee (48 часов) и смены admin (7 дней), или интеграция с мультисигом без Governor.
Детали реализации bypass-механизма
В экстренных случаях, например при обнаружении уязвимости, используется Pausable контракт с отдельной ролью. Паузатор только останавливает протокол, не меняя логику. Важно, чтобы bypass был ограничен: он не должен позволять выполнять обычные admin-операции вне очереди.
Почему важна минимальная задержка?
48 часов — минимум для production-протокола. Меньше — пользователи не успевают вывести ликвидность или отозвать одобрения. Стандарт DeFi-протоколов: 24–72 часа для параметров, 7 дней для смены owner. Мы всегда проверяем, чтобы задержка была достаточной: клиенты часто просят 1 час из соображений удобства — это грубая ошибка.
uint256 public constant MIN_DELAY = 2 days;
uint256 public constant MAX_DELAY = 30 days;
Критичные детали реализации
Предотвращение replay-атак
Каждая операция идентифицируется хэшем параметров плюс salt. Без salt одна и та же операция (например, setFee(100)) может быть поставлена в очередь только один раз. С salt — любое количество раз. Убеждаемся, что клиент понимает это поведение.
Экстренные функции
Почти всегда нужен bypass для критических ситуаций — если найдена уязвимость, нельзя ждать 48 часов. Паузатор (Pausable) с отдельной ролью — стандартное решение. Но паузатор, в свою очередь, должен быть ограничен: он только останавливает, не меняет логику.
Базовые настройки таймлока
| Параметр |
Рекомендуемое значение |
| Минимальная задержка |
48 часов |
| Максимальная задержка |
30 дней |
| Роль Proposer |
Адрес губернатора |
| Роль Executor |
Любой (открытый) |
| Роль Canceller |
Мультисиг |
Что входит в работу?
- Анализ архитектуры протокола и требований к задержкам
- Выбор и настройка OpenZeppelin TimelockController или написание кастомного контракта
- Интеграция с существующим Governor или мультисигом
- Написание unit-тестов (coverage >95%) и fuzzing-тестов
- Публикация с верификацией на Etherscan
- Документация для команды (описание ролей, процедур отмены)
- Поддержка в течение 30 дней после деплоя
Интеграция с Governor
Для полноценного on-chain управления цепочка выглядит так: Governor → TimelockController → Protocol. Голосование проходит в Governor, победившее предложение ставится в очередь TimelockController, после задержки исполняется. Главная ошибка — дать TimelockController прямой admin-доступ к протоколу, минуя Governor. Это делает голосование декоративным.
Сроки
Деплой TimelockController с конфигурацией ролей — 1 день. Кастомный таймлок с несколькими уровнями задержки — 2–3 дня. Интеграция с существующим Governor — 1–2 дня в зависимости от архитектуры протокола. Тесты и документация включены в оценку.
Свяжитесь с нами для оценки вашего проекта — мы подберём оптимальную архитектуру таймлок-контракта и гарантируем прохождение аудита. Закажите разработку таймлок-контракта для вашего протокола уже сегодня.
Разработка смарт-контрактов
Мы столкнулись с ситуацией: контракт задеплоен, через две недели приходит сообщение — пул дренирован на $800k. Смотрим транзакцию в Tenderly: атакующий вызвал deposit(), внутри callback на ERC-777 повторно вызвал withdraw() — баланс обновился только после второго выхода. Классическая reentrancy, но не через ETH transfer, а через хук ERC-777. ReentrancyGuard стоял только на withdraw().
Такие случаи — не редкость. Смарт-контракт — это финансовая логика без возможности пропатчить её ночью. Наша команда разрабатывает контракты под ключ, встраивая защиту от reentrancy, MEV и gas-атак на ранних этапах.
Как мы разрабатываем смарт-контракты под ключ
Начинаем с аудита бизнес-логики и выбора стека. Solidity 0.8.x — стандарт для EVM-совместимых чейнов: Ethereum, Arbitrum, Optimism, Polygon, BSC, Avalanche C-Chain. Для Solana используем Rust и Anchor: модель аккаунтов и программ требует явного объявления всех ресурсов. Для проектов с формальной верификацией подходит Move (Aptos, Sui) — линейные типы языка исключают копирование ресурсов на уровне компилятора. Vyper выбираем для контрактов, где критична простота аудита (Curve Finance).
| Язык |
Модель исполнения |
Типичная область |
Риски |
| Solidity 0.8.x |
EVM, последовательное исполнение |
DeFi, NFT, токены |
Reentrancy, переполнение (unchecked) |
| Rust (Anchor) |
Solana, параллельное |
Высоконагруженные DEX, игры |
Неправильное объявление аккаунтов |
| Move |
Aptos/Sui, ресурсная |
Крупные протоколы |
Сложность экосистемы |
| Vyper |
EVM, ограниченный синтаксис |
Критические контракты (Curve) |
Зависимость от стабильности компилятора |
Gas optimization — не преждевременная оптимизация, а архитектурное решение. На Ethereum mainnet деплой плохо спроектированного контракта может стоить 2–5 ETH только из-за неоптимального storage layout. Переупаковка структуры Proposal с 7 слотов до 4 сэкономила 18k gas на каждом голосовании — около $1.5 при gas price 30 gwei. Экономия на масштабе протокола с тысячами голосований в день даёт ощутимую годовую выгоду.
Типичные ошибки в gas: передача массивов через memory вместо calldata в external функциях (дороже в 2–3 раза); использование require с длинными строками вместо custom error error InsufficientBalance(...). Кастомные ошибки дешевле на 50–200 gas на revert и передают структурированные данные фронтенду.
Почему аудит смарт-контрактов критичен для безопасности
Аудит — не разовая проверка, а встроенный этап разработки. Используем три уровня:
-
Статический анализ —
Slither (30 секунд в CI) выявляет reentrancy, неинициализированные переменные, опасный delegatecall.
-
Фаззинг и invariant тесты —
Foundry с --fuzz-runs 50000 находит edge cases, которые пропускают сотни unit-тестов. Реальный кейс: AMM контракт с кастомной математикой после 150 тестов в Hardhat — Foundry нашёл integer division truncation, позволявший пылевой атаке копить dust на контракте. Echidna проверяет инварианты («сумма всех балансов ≤ totalSupply»).
-
Ручной code review — наши инженеры с опытом 10+ лет в блокчейне выявляют логические ошибки, которые не ловят инструменты. Для протоколов с TVL > $1M обязателен внешний аудит со стороны Trail of Bits, Consensys Diligence или OpenZeppelin. Срок — 2–4 недели.
Любой апгрейдируемый протокол должен иметь timelock. TimelockController из OpenZeppelin: операция предлагается → ждёт минимальный delay (48–72 часа) → выполняется. Без timelock один скомпрометированный deployer wallet = потеря всего пула.
Какие паттерны апгрейда выбираем
| Паттерн |
Механизм |
Риск |
Когда использовать |
Наш опыт |
| Transparent Proxy (OZ) |
admin vs user разделение |
Storage collision, centralization |
Стандартные проекты |
15+ реализаций |
| UUPS |
Логика апгрейда в implementation |
Забыть _authorizeUpgrade → контракт навсегда сломан |
Газ-оптимизированные проекты |
7 проектов |
| Diamond (EIP-2535) |
Множество facets |
Сложность аудита |
Крупные протоколы с 10+ контрактами |
3 внедрения |
| Beacon Proxy |
Один beacon для множества proxies |
Beacon = single point of failure |
Фабрики однотипных контрактов |
5 фабрик |
Storage collision — главная опасность прокси. Implementation v2 не должен добавлять переменные перед существующими. OpenZeppelin Upgrades plugin для Hardhat и Foundry проверяет это автоматически, но только при использовании его API.
Как защитить контракт от MEV и front-running
На Ethereum mainnet транзакции в mempool видны всем. MEV-боты проводят sandwich-атаки на DEX, фронтраннинги минтинга и governance. Решение: commit-reveal scheme для аукционов, приватная отправка через Flashbots PROTECT RPC. EIP-7702 и PBS (proposer-builder separation) меняют картину, но пока не массово.
Процесс разработки
-
Аналитика — спецификация функций, диаграмма вызовов, анализ edge cases. Без этого кодинг начинается впустую.
-
Разработка — Solidity/Rust с тестами параллельно. Тест → код → рефакторинг. Используем Foundry для fuzz и invariant тестов.
-
Внутренний аудит — Slither + Echidna + ручной code review. Foundry invariant tests для протокольных инвариантов.
-
Внешний аудит — для проектов с реальными деньгами. Срок: 2–4 недели.
-
Деплой — Foundry scripts или Hardhat Ignition с verify на Etherscan. Gnosis Safe для ownership transfer сразу после деплоя.
-
Мониторинг — Tenderly alerts, OpenZeppelin Defender, Forta Network.
Что входит в работу
- Документация на архитектуру и спецификацию контракта (NatSpec).
- Исходный код с репозиторием и CI (Slither, Foundry, coverage).
- Развёрнутая версия контракта с verify на блокчейн-эксплорере.
- Результаты аудита (внутреннего и внешнего по запросу).
- Доступы к мониторингу и управлению (Gnosis Safe).
- Гарантия на код: фиксы критических багов в течение месяца после деплоя.
- Консультация по интеграции с веб-интерфейсом (wagmi, RainbowKit).
Сроки ориентировочно
- ERC-20 token с базовыми функциями: 1–2 недели
- Vesting контракт с cliff/linear schedule: 2–3 недели
- NFT ERC-721/1155 с маркетплейсом: 4–6 недель
- AMM или lending протокол: 2–4 месяца
- Мультичейн протокол с bridge: 4–7 месяцев
Аудит добавляет 3–6 недель и идёт параллельно с финальным тестированием где возможно. Стоимость рассчитывается индивидуально — свяжитесь с нами, и мы оценим ваш проект бесплатно.
Закажите разработку смарт-контракта — получите консультацию по архитектуре и защите от reentrancy, MEV и gas-атак. Хотите обсудить детали? Напишите нам — мы подберём оптимальный стек под вашу задачу.