Таймлок-контракты: OpenZeppelin и кастомные решения с аудитом

DeFi-протоколу нужно отложенное исполнение административных действий. Без таймлок-контракта аудиторы забракуют проект — это базовая гарантия безопасности. После серии взломов DeFi-платформ в начале десятилетия таймлок стал обязательным требованием для листинга на централизованных биржах. Мы разрабат

Направления блокчейн-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1003

DeFi-протоколу нужно отложенное исполнение административных действий. Без таймлок-контракта аудиторы забракуют проект — это базовая гарантия безопасности. После серии взломов DeFi-платформ в начале десятилетия таймлок стал обязательным требованием для листинга на централизованных биржах. Мы разрабатываем такие контракты под ключ: от простой интеграции OpenZeppelin до кастомных решений с гибкой задержкой и контрольными ролями. За 5 лет работы мы реализовали 10+ DeFi-протоколов с разной архитектурой управления. Команда имеет 7+ лет опыта в разработке смарт-контрактов и провела аудит для 15 проектов.

Compound Finance ввёл таймлок-контракт в мейнстрим. Их Timelock.sol — двухдневная задержка перед исполнением любых изменений протокола — стал стандартом после того, как несколько DeFi-протоколов потеряли средства из-за мгновенных admin-операций. Сейчас таймлок — это базовое требование любого аудитора и первый вопрос на листинге.

Как настроить таймлок-контракт за 5 шагов

  1. Определите операции, требующие задержки (изменение комиссий, смена owner, обновление контрактов).
  2. Выберите задержку для каждой операции (мин. 48 часов для production).
  3. Выберите платформу: OpenZeppelin TimelockController или кастомный контракт.
  4. Интегрируйте с Governor или мультисигом.
  5. Напишите тесты и проведите аудит.

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 дня в зависимости от архитектуры протокола. Тесты и документация включены в оценку.

Свяжитесь с нами для оценки вашего проекта — мы подберём оптимальную архитектуру таймлок-контракта и гарантируем прохождение аудита. Закажите разработку таймлок-контракта для вашего протокола уже сегодня.