Мультиподпись и таймлок: как управлять контрактом без единой точки отказа
Что такое мультиподпись (m из n) и таймлок, как работают кошельки вроде Safe, какие риски они закрывают, а какие нет, и как применять их для владельца и гаранта.
В этой статье
Один закрытый ключ - это одна точка отказа: его можно потерять, украсть, или владелец может поступить недобросовестно. Для личных сумм это приемлемо, но для того, кто контролирует чужие деньги (владелец контракта, гарант, казна проекта) - нет. Решение: мультиподпись и таймлок. Основы ключей - в статье криптография с открытым ключом.
Мультиподпись: m из n
Мультиподпись (multisig) - это адрес-смарт-контракт, который выполняет действия только если их одобрили минимум m из n назначенных участников.
Примеры схем:
| Схема | Смысл |
|---|---|
| 2 из 3 | три ключа, для действия нужны любые два |
| 3 из 5 | пять ключей, нужны три |
| 1 из 2 | любой из двух (редко, это не защита, а удобство) |
Выбор числа - баланс. Чем больше требуется подписей, тем сложнее взломать, но и сложнее провести действие.
Как это выглядит на практике
Самый распространённый инструмент - Safe (ранее Gnosis Safe). Процесс:
- Один из участников предлагает транзакцию (например, «вызвать
pause()»). - Остальные просматривают и подписывают её своими кошельками. Подписи собираются вне сети и бесплатно.
- Когда подписей достаточно, любой участник исполняет транзакцию в сети, платя газ.
Для внешнего мира мультиподпись - просто адрес. Другие контракты видят msg.sender как адрес Safe.
Что мультиподпись защищает
- Кража одного ключа. Злоумышленник с одним ключом ничего не сможет сделать.
- Потеря одного ключа. Остальные участники смогут заменить потерянный.
- Недобросовестность одного участника. Нужны согласованные действия нескольких.
- Ошибки. Второй взгляд на транзакцию перед исполнением.
Что не защищает
- Сговор m участников.
- Фишинг группы. Если подписанты слепо подписывают то, что им прислали, схема бессмысленна (как действуют мошенники).
- Общая точка отказа. Все ключи на одном компьютере или у одного человека - это один ключ в маске.
- Ошибочные настройки. Неверный порог (например, 1 из 5) сводит защиту к нулю.
Таймлок: задержка как защита
Таймлок (timelock) - контракт, который не исполняет административное действие сразу, а откладывает на фиксированное время (например, 48 часов). Действие сначала ставится в очередь, а исполнить его можно только по истечении задержки.
Зачем:
- у пользователей есть время заметить изменение и принять решение: вывести деньги, прекратить пользоваться сервисом;
- у владельцев есть время отменить ошибочное действие;
- даже взломанный ключ не может мгновенно нанести ущерб.
Таймлок особенно важен для прокси-контрактов, логику которых можно заменить: без задержки обновление может быть вредоносным и мгновенным.
Мультиподпись + таймлок
Надёжная схема управления: мультиподпись ставит действие в очередь таймлока, через задержку оно исполняется. Так даже при компрометации нескольких ключей пользователи успевают отреагировать.
Применение в экосистеме Coin-Trust
Владелец контракта. В контракте есть административные функции: разрешить токен, приостановить создание сделок, вывести комиссии (полный список). Разработчики контракта рекомендуют использовать для владельца именно мультиподпись. Это снижает риск потери и злоупотребления. Важно: эти функции не дают доступа к деньгам активных сделок (почему).
Гарант. Организация, которая выступает гарантом, может использовать мультиподпись: решение по спору принимают несколько человек и исполняют одной транзакцией. Это повышает надёжность и снижает риск «потерянного ключа», а значит, аварийного выхода 50/50 (почему он критичен).
Пример
Команда из 5 человек управляет казной. Схема - 3 из 5 через Safe. Нужно вывести комиссии платформы. Бухгалтер предлагает транзакцию, трое независимо проверяют сумму и адрес получателя, подписывают, и четвёртый исполняет. Если у одного из подписантов украдут ноутбук, злоумышленник с его ключом бессилен.
Что почитать дальше
Узнайте, какие шаблоны контроля доступа есть в коде: шаблоны контроля доступа. Или как устроены обновляемые контракты: прокси и обновляемость.
Читайте также
- 3 · Под капотом
Шаблоны контроля доступа в смарт-контрактах: owner, роли и стороны сделки
Как контракты решают, кому что можно: Ownable и Ownable2Step, роли, проверка сторон сделки, паузы и минимальные права. Разбор на примере эскроу.
3 мин чтения - 3 · Под капотом
Прокси и обновляемые контракты: delegatecall, UUPS и цена гибкости
Как устроены прокси-контракты, что делает delegatecall, чем отличаются Transparent и UUPS, зачем слоты EIP-1967 и почему Coin-Trust выбрал неизменяемый контракт.
4 мин чтения
Упоминается в статьях
- Словарь терминов: блокчейн, кошельки, смарт-контракты и эскроу от A до Я
- Как проверить смарт-контракт перед использованием: пошаговая инструкция
- Как выбрать гаранта: критерии, ставки и красные флаги
- Хеш-обязательство: как зафиксировать условия сделки, не раскрывая их
- Подписи в Ethereum: ECDSA, ecrecover, personal_sign и EIP-712
- Шаблоны контроля доступа в смарт-контрактах: owner, роли и стороны сделки
- Каталог уязвимостей смарт-контрактов: 12 классических ошибок и защита от них
- Прокси и обновляемые контракты: delegatecall, UUPS и цена гибкости
- Абстракция аккаунтов (ERC-4337): умные кошельки и спонсирование газа
Готовы попробовать?
Создайте первую сделку за пару минут. Деньги блокируются в смарт-контракте и выплачиваются по правилам, которые видны заранее.

