Только в образовательных целях; не является инвестиционной, юридической или информационно-безопасностной рекомендацией. Ошибка ротации может передать контроль, аннулировать ожидающие подтверждения или навсегда заблокировать счёт с мультиподписью.
Краткий ответ
Ротация подписантов мультиподписи меняет счета, уполномоченные подтверждать транзакции. Обычно для неё не нужен новый адрес кошелька или перевод активов: привилегированная транзакция меняет набор владельцев счёта, а иногда и порог подтверждения. Реализации различаются, поэтому проверяйте развёрнутый контракт и текущее состояние в сети, а не предполагайте, что подписи интерфейса точно описывают полномочия.
Безопасная ротация сначала доказывает контроль над каждым новым подписантом, сохраняет исполнимый, но не концентрированный кворум на протяжении изменения, удаляет старого подписанта и проверяет конечное состояние в сети. Потеря необходимого кворума до исполнения может сделать обычную ротацию владельцев невозможной; снижение порога ради удобства способно создать окно для захвата контроля.
Человек, устройство для подписи, закрытый ключ и адрес владельца в сети — отдельные записи. Зафиксируйте точный адрес, хранителя, независимый домен контроля, состояние резервной копии и причину ротации. Законная ротация никогда не требует раскрывать seed-фразу или закрытый ключ.
Как это работает
- Инвентаризируйте текущие полномочия. По независимо проверенным сети и адресу счёта прочитайте развёрнутую реализацию, список владельцев, порог, nonce, включённые модули, guards, fallback handler, путь восстановления и все timelocks. Модуль или механизм восстановления может исполнять действия вне обычного порога владельцев, а ограничивающий guard может заблокировать в остальном корректную ротацию.
- Определите целевое состояние до подписания. Запишите точный набор владельцев и порог после изменения. Убедитесь, что порог не превышает число владельцев и что как минимум столько же независимых подписантов останутся работоспособными. Географическое разделение не означает независимость, если один человек, хранилище паролей, облачная учётная запись или администратор контролирует все устройства.
- Зарегистрируйте и аутентифицируйте нового подписанта. Создайте или восстановите новый ключ в предназначенной для него среде хранения, проверьте адрес на доверенном устройстве и докажите контроль согласованным заданием или тестовой подписью. Подтвердите адрес по второму аутентифицированному каналу; не полагайтесь только на скопированный текст чата или интерфейс кошелька.
- Выберите порядок с безопасными промежуточными состояниями. Некоторые контракты могут атомарно заменить одного владельца. Например, Safe предоставляет
swapOwner, а такжеaddOwnerWithThreshold,removeOwnerиchangeThreshold. Если реализации нужны несколько транзакций, анализируйте набор владельцев и порог после каждого шага. Добавьте и проверьте возможности до их удаления, если только активная компрометация не делает такой порядок опасным. - Декодируйте и смоделируйте точную транзакцию. Независимо проверьте chain ID, адрес счёта, target, селектор функции, старый и новый адреса владельца, итоговый порог, nonce, value и тип операции. Рассматривайте
delegatecall, пакетное исполнение, изменения модулей и изменения guard как отдельные эффекты высокого риска. Каждый подписант должен одобрить один и тот же декодированный payload и хеш транзакции. - Исполните с существующими полномочиями. Текущий действующий кворум разрешает ротацию, если документированный путь восстановления не предусматривает иное. В экстренной ситуации координируйтесь только через аутентифицированные контакты и используйте нескомпрометированных подписантов. Если недоступны и обычный кворум, и заранее настроенные полномочия восстановления, стандартный вызов управления владельцами не сможет восстановить доступ.
- Проверьте и завершите изменение. После подтверждения напрямую запросите набор владельцев и порог, проверьте созданные события или трассировки в зависимости от реализации и убедитесь, что старый адрес больше не уполномочен. Новый подписант должен участвовать в одобренной транзакции низкого риска или с нулевой стоимостью, требующей заданного порога. Проверьте ожидающие транзакции, отзовите внесетевой доступ и резервные копии прежнего подписанта и сохраните предложение, подписи, хеш транзакции, блок и конечное состояние.
Практический пример
Предположим, у счёта 3-of-5 есть владельцы A, B, C, D и E, а B нужно заменить на F. Сначала команда проверяет, что F контролирует точный предложенный адрес и остаётся независимым от других владельцев. Для совместимого развёртывания Safe она готовит swapOwner(prevOwner, B, F). Этот вызов сам является транзакцией Safe и поэтому требует 3 действительных подтверждения от текущего набора владельцев. Декодированный результат должен сохранить число владельцев 5 и порог 3.
После подтверждения транзакции команда читает getOwners и getThreshold, убеждается, что B отсутствует, а F присутствует, и проводит с участием F и двух других владельцев одобренный тест со стоимостью 0. Она также проверяет ожидающие транзакции: подпись или предварительное одобрение от B после удаления может больше не проходить проверку владельца, поэтому затронутые предложения нужно отменить или создать заново, а не считать исполнимыми.
Если B мог быть скомпрометирован, команда не просит его одобрить удаление. Три других нескомпрометированных владельца исполняют замену, а затем проверяют модули, разрешения восстановления, allowances, session keys и уже исполненные транзакции, поскольку удаление B не отменяет прежние действия и не отзывает полномочия, выданные другим путём. Если доступны менее 3 нескомпрометированных владельцев, помочь может только заранее настроенный путь восстановления или администрирования; передача seed-фраз или доверие незапрошенному сервису «восстановления» не заменяет кворум.
Риски и меры контроля
- Неверный счёт или адрес. Проверьте chain ID, адрес мультиподписи, реализацию и адрес нового владельца на независимых устройствах и по независимым источникам. Отравление адреса и ошибки копирования могут передать контроль злоумышленнику.
- Потеря кворума. Смоделируйте каждое промежуточное состояние. Слишком раннее удаление владельца, повышение порога выше числа доступных подписантов или одновременная ротация нескольких связанных устройств может сделать счёт непригодным.
- Временная концентрация. Более низкий порог или недавно добавленный подписант может создать период, когда счёт контролирует меньше сторон. Предпочитайте атомарную замену, если она поддерживается, и не снижайте порог лишь для упрощения процедуры.
- Связанное хранение. Разные адреса не независимы, если их seed-фразы, устройства, резервные копии, коммуникации или администраторы имеют общий домен отказа. Тестируйте восстановление без централизации секретов.
- Скрытые полномочия. Модули, guards, fallback handlers, session keys, timelocks и контракты восстановления могут обойти или заблокировать путь владельцев. Инвентаризируйте и проверяйте их до и после ротации.
- Гонка со скомпрометированным подписантом. До подтверждения удаления подозрительный подписант может опередить транзакцию, вывести активы, изменить конфигурацию или одобрить другую транзакцию. Используйте процедуры реагирования, приватную доставку транзакций, когда это уместно, и непрерывный мониторинг состояния; не считайте, что отправленная транзакция уже выиграла гонку.
- Устаревшие ожидающие одобрения. Изменения владельцев и порога могут сделать собранные подписи недействительными или поменять набор достаточных подтверждений. Повторно оцените каждую транзакцию в очереди по конечному состоянию и отмените устаревшие предложения.
- Ложное завершение. Уведомление интерфейса об успехе не доказывает заданное состояние. Дождитесь требуемой политики подтверждения, затем прочитайте состояние контракта и проверьте payload транзакции, события и результат исполнения.
- Неполное отключение доступа. Удаление владельца в сети не стирает скопированные ключи, организационный доступ, учётные данные relayer, записи в хранилище паролей или полномочия в других контрактах и сетях. Отзовите каждый элемент отдельно и сохраните аудиторский след.
Распространённые заблуждения
- «Ротация означает перевод всех активов в новый кошелёк». Многие мультиподписи на основе смарт-счетов обновляют владельцев по тому же адресу счёта. Миграция — другая операция, которая может требоваться только конкретной реализацией или планом реагирования.
- «Сначала добавить нового подписанта всегда безопасно». Это защищает доступность, но может временно расширить набор уполномоченных. При активной компрометации атомарная замена или другой экстренный порядок могут быть безопаснее.
- «Порог
3-of-5означает, что доступны любые три названных человека». Контракт считает действительные счета владельцев, а не людей, отделы или устройства. Совместное хранение и недоступные ключи уменьшают фактическую независимость и доступность. - «Удаление скомпрометированного владельца отменяет ущерб». После подтверждения удаление предотвращает дальнейшее использование этого пути владельца; оно не отменяет исполненные транзакции и не отзывает разрешения, созданные в другом месте.
- «Интерфейса кошелька достаточно как доказательства». Интерфейсы и службы индексирования могут быть устаревшими, неверно настроенными или вредоносными. Декодируйте транзакцию и прочитайте конечное состояние контракта через независимо проверенный endpoint.
- «Без кворума поддержка может сбросить кошелёк». У самостоятельно хранимой мультиподписи есть только закодированные или заранее настроенные в сети пути полномочий. Без действующего кворума или пути восстановления доступ может быть потерян навсегда.
Похожие темы
- Аппаратный кошелёк
- Кошелёк с мультиподписью
- Управление закрытыми ключами
- Риск восстановления владельца смарт-счёта
- Симуляция транзакций
Источники
- Как работают смарт-счета Safe? - Safe Documentation (дата обращения: 2026-08-21)
- addOwnerWithThreshold - Safe Documentation (дата обращения: 2026-08-21)
- removeOwner - Safe Documentation (дата обращения: 2026-08-21)
- swapOwner - Safe Documentation (дата обращения: 2026-08-21)
- changeThreshold - Safe Documentation (дата обращения: 2026-08-21)
- OwnerManager.sol - Safe Ecosystem Foundation (дата обращения: 2026-08-21)
- Рекомендации по управлению ключами: часть 1 - общие положения - NIST (дата обращения: 2026-08-21)