К основному содержимому

Введите слово из вопроса или названия статьи.

2 · Практика

Мультиподпись и таймлок: как управлять контрактом без единой точки отказа

Что такое мультиподпись (m из n) и таймлок, как работают кошельки вроде Safe, какие риски они закрывают, а какие нет, и как применять их для владельца и гаранта.

3 мин чтенияОбновлено:
В этой статье

Один закрытый ключ - это одна точка отказа: его можно потерять, украсть, или владелец может поступить недобросовестно. Для личных сумм это приемлемо, но для того, кто контролирует чужие деньги (владелец контракта, гарант, казна проекта) - нет. Решение: мультиподпись и таймлок. Основы ключей - в статье криптография с открытым ключом.

Мультиподпись: m из n

Мультиподпись (multisig) - это адрес-смарт-контракт, который выполняет действия только если их одобрили минимум m из n назначенных участников.

Примеры схем:

СхемаСмысл
2 из 3три ключа, для действия нужны любые два
3 из 5пять ключей, нужны три
1 из 2любой из двух (редко, это не защита, а удобство)

Выбор числа - баланс. Чем больше требуется подписей, тем сложнее взломать, но и сложнее провести действие.

Как это выглядит на практике

Самый распространённый инструмент - Safe (ранее Gnosis Safe). Процесс:

  1. Один из участников предлагает транзакцию (например, «вызвать pause()»).
  2. Остальные просматривают и подписывают её своими кошельками. Подписи собираются вне сети и бесплатно.
  3. Когда подписей достаточно, любой участник исполняет транзакцию в сети, платя газ.

Для внешнего мира мультиподпись - просто адрес. Другие контракты видят msg.sender как адрес Safe.

Что мультиподпись защищает

  • Кража одного ключа. Злоумышленник с одним ключом ничего не сможет сделать.
  • Потеря одного ключа. Остальные участники смогут заменить потерянный.
  • Недобросовестность одного участника. Нужны согласованные действия нескольких.
  • Ошибки. Второй взгляд на транзакцию перед исполнением.

Что не защищает

  • Сговор m участников.
  • Фишинг группы. Если подписанты слепо подписывают то, что им прислали, схема бессмысленна (как действуют мошенники).
  • Общая точка отказа. Все ключи на одном компьютере или у одного человека - это один ключ в маске.
  • Ошибочные настройки. Неверный порог (например, 1 из 5) сводит защиту к нулю.

Таймлок: задержка как защита

Таймлок (timelock) - контракт, который не исполняет административное действие сразу, а откладывает на фиксированное время (например, 48 часов). Действие сначала ставится в очередь, а исполнить его можно только по истечении задержки.

Зачем:

  • у пользователей есть время заметить изменение и принять решение: вывести деньги, прекратить пользоваться сервисом;
  • у владельцев есть время отменить ошибочное действие;
  • даже взломанный ключ не может мгновенно нанести ущерб.

Таймлок особенно важен для прокси-контрактов, логику которых можно заменить: без задержки обновление может быть вредоносным и мгновенным.

Мультиподпись + таймлок

Надёжная схема управления: мультиподпись ставит действие в очередь таймлока, через задержку оно исполняется. Так даже при компрометации нескольких ключей пользователи успевают отреагировать.

Применение в экосистеме Coin-Trust

Владелец контракта. В контракте есть административные функции: разрешить токен, приостановить создание сделок, вывести комиссии (полный список). Разработчики контракта рекомендуют использовать для владельца именно мультиподпись. Это снижает риск потери и злоупотребления. Важно: эти функции не дают доступа к деньгам активных сделок (почему).

Гарант. Организация, которая выступает гарантом, может использовать мультиподпись: решение по спору принимают несколько человек и исполняют одной транзакцией. Это повышает надёжность и снижает риск «потерянного ключа», а значит, аварийного выхода 50/50 (почему он критичен).

Пример

Команда из 5 человек управляет казной. Схема - 3 из 5 через Safe. Нужно вывести комиссии платформы. Бухгалтер предлагает транзакцию, трое независимо проверяют сумму и адрес получателя, подписывают, и четвёртый исполняет. Если у одного из подписантов украдут ноутбук, злоумышленник с его ключом бессилен.

Что почитать дальше

Узнайте, какие шаблоны контроля доступа есть в коде: шаблоны контроля доступа. Или как устроены обновляемые контракты: прокси и обновляемость.

Упоминается в статьях

Готовы попробовать?

Создайте первую сделку за пару минут. Деньги блокируются в смарт-контракте и выплачиваются по правилам, которые видны заранее.