Разработка системы мультисиг-управления
Ronin Bridge потерял $625M в марте 2022 года — 5 из 9 validator keys оказались скомпрометированы. Sky Mavis держала 4 ключа в одном месте «для удобства». Мультисиг был, порог был. Но физическая изоляция ключей — нет. Технически корректная система мультисиг-управления требует правильного протокола хранения ключей не меньше, чем правильного смарт-контракта.
Это важно понимать до начала разработки: контракт — это одна часть системы. Вторая — организационные процедуры вокруг него.
Gnosis Safe как основа
Safe (бывший Gnosis Safe) — стандарт де-факто для мультисиг-управления в Web3. Используется Uniswap DAO, Aave, Lido, ENS и сотнями других протоколов. Аудирован многократно, открытый исходный код, модульная архитектура.
Почему Safe, а не кастомный контракт: 3+ года в production на суммах >$100B TVL — это аргумент весомее любого аудита нового контракта. Кастомный мультисиг разрабатываем только при явных ограничениях: нестандартная цепочка (не EVM), специфическая логика квorum, требования к privacy.
Архитектура Safe
Safe работает по схеме M-of-N: транзакция исполняется, когда собирает M подписей из N владельцев. Под капотом — execTransaction() с массивом подписей ECDSA в упорядоченном виде. Сигнатуры можно собирать off-chain (через Safe{Wallet}) или on-chain через approveHash().
// Формат подписи для Safe
// r (32 bytes) + s (32 bytes) + v (1 byte)
// v=1: approved hash on-chain
// v=2: eth_sign signature
// v>30: EIP-1271 contract signature
Safe Modules: расширение без кастомного контракта
Модули — это отдельные контракты с правом вызывать execTransactionFromModule() на Safe. Это позволяет добавить автоматизацию (например, ежедневные выплаты до лимита X без мультисиг) без изменения основного контракта.
Стандартные модули: Allowance Module (делегирует право на расходы до лимита), Safe{Recovery Module} (социальное восстановление доступа). Кастомные модули разрабатываем под специфику клиента.
Главный риск модулей: модуль с уязвимостью обходит весь мультисиг. Любой кастомный модуль требует аудита с той же серьёзностью, что и сам контракт казначейства.
Когда нужен кастомный мультисиг
Три случая из практики:
Нестандартные правила квorum. Протокол хочет: 2/5 подписей для транзакций до $10k, 4/5 для $10k-$1M, 5/5 для >$1M. Safe не поддерживает динамический threshold. Решение — Safe + кастомный guard (SafeGuard), который проверяет сумму транзакции и требует дополнительные подписи.
On-chain голосование по транзакциям. Если решения должны проходить через токен-голосование (snapshot + исполнение через мультисиг), стандартный Safe + Governor + Timelock работает. Если нужна схема委任 (delegate voting) с взвешенными голосами — кастомная интеграция.
Не-EVM чейны. Для Solana — программа на Anchor с логикой M-of-N через secp256k1 верификацию или нативные multisig accounts. Для Aptos/Sui — кастомные Move-модули.
Safe Guards: дополнительный уровень контроля
Safe Guard — контракт, который вызывается до и после каждой транзакции Safe. Позволяет добавить ограничения без изменения основного Safe:
- Whitelist разрешённых адресов-получателей
- Лимиты на сумму транзакции
- Time-based restrictions (нет транзакций в выходные — для regulated protocols)
- Блокировка изменения owners без дополнительного согласования
interface Guard {
function checkTransaction(
address to, uint256 value, bytes calldata data,
Enum.Operation operation, uint256 safeTxGas,
uint256 baseGas, uint256 gasPrice, address gasToken,
address payable refundReceiver, bytes memory signatures,
address msgSender
) external;
function checkAfterExecution(bytes32 txHash, bool success) external;
}
Организационные требования к системе
Технически правильный мультисиг с плохой key management — это иллюзия безопасности. Минимальные требования:
- Ключи в hardware wallets (Ledger, Trezor), не в hot wallets
- Географическое распределение подписантов
- Задокументированный процесс замены скомпрометированного ключа
- Регулярная проверка, что все подписанты имеют доступ к своим ключам
- Timelock поверх мультисига для критических операций
Мы помогаем не только с техническим деплоем, но и с разработкой операционных процедур.
Процесс и сроки
| Scope | Срок |
|---|---|
| Деплой Safe с конфигурацией (N owners, M threshold) | 1 день |
| Safe + Allowance Module для команды | 2 дня |
| Safe + кастомный Guard (whitelist, limits) | 3-4 дня с тестами |
| Safe + Governor + Timelock интеграция | 5-7 дней |
| Кастомный мультисиг-контракт (Solidity) | 5-10 дней с аудитом |
Стоимость рассчитывается индивидуально после описания требований к управлению: количество signers, типы операций, требования к автоматизации.







