Разработка мультисиг-казначейства DAO (Gnosis Safe)
Казначейство DAO — это общий кошелёк, которым управляет не один человек, а группа. Без мультисига treasury — это EOA (externally owned account) одного человека: один приватный ключ, один человек, полный контроль. Gnosis Safe решает это через M-of-N схему: транзакция исполняется только если M из N назначенных подписантов её одобрили.
Safe (ранее Gnosis Safe) — де-факто стандарт мультисига в Web3. Более $100B хранится в Safe кошельках. Большинство крупных DAO (Uniswap, ENS, Aave, Lido) используют Safe для казначейства или как guardian для Governor.
Как работает Safe
Архитектура контракта
Safe — смарт-контракт кошелёк, не EOA. Это принципиально важно: у него нет приватного ключа, он существует как контракт on-chain. Владельцы (owners) — список адресов, threshold — минимальное количество подписей.
Транзакция через Safe проходит несколько этапов:
- Любой owner предлагает транзакцию (propose)
- Другие owners её подписывают (off-chain или on-chain подписи)
- Когда набралось threshold подписей — любой может исполнить (execute)
- Safe контракт верифицирует подписи и вызывает целевой адрес
Подписи могут быть off-chain (EIP-712 typed data, хранятся в Safe Transaction Service) или on-chain (approve транзакция от каждого owner). Off-chain дешевле — только исполняющий платит за газ.
Safe Transaction Service
Safe поддерживает off-chain координацию через Transaction Service — централизованный (но open-source) бэкенд. Owners подписывают транзакцию через Safe{Wallet} UI или SDK и отправляют подпись в Transaction Service. Другие owners видят pending транзакцию и подписывают там же. Когда набралось threshold — execute.
Это не on-chain: подписи хранятся на сервере Safe. Компромисс — удобство vs. доверие к инфраструктуре Safe. Для максимальной независимости можно запустить собственный Transaction Service (open-source).
Safe + Governor интеграция
Зачем интегрировать с Governor
Чистый Safe — требует M-of-N подписей от фиксированного списка владельцев. Это мультисиг, не governance. Для DAO с тысячами держателей токенов нужен Governor (голосование пропорционально holdings).
Типовая архитектура: Governor → Timelock → Safe. Governor proposal при успехе ставит транзакцию в Timelock. После задержки — исполняет её через Safe (или напрямую, если Safe является владельцем Timelock).
Более гибкий вариант: Safe как guardian for Governor. Multisig team может veto proposal до исполнения. Это "decentralization with training wheels" — на старте протокола, пока governance не обкатана.
SafeSnap (Snapshot + Safe)
SafeSnap — плагин который соединяет off-chain голосование (Snapshot) с on-chain исполнением (Safe). Работает через оракул (Reality.eth):
- Snapshot голосование завершается — результат публичен
- Кто угодно может задать Reality.eth вопрос: "Был ли proposal X принят на Snapshot?"
- Ответчики отвечают (с bonds), через dispute period ответ финализируется
- SafeSnap плагин в Safe разрешает исполнить транзакцию если Reality.eth подтвердил результат
Это позволяет governance без gas costs (Snapshot голосование бесплатно) с on-chain исполнением. Компромисс — Reality.eth оракул добавляет задержку (3-7 дней dispute period) и теоретически уязвим к oracle manipulation при малом TVL.
Настройка Safe для DAO
Выбор параметров
Количество owners и threshold. Типовые конфигурации:
| Размер DAO | Owners | Threshold | Логика |
|---|---|---|---|
| Маленький (core team) | 5 | 3 | 3-of-5 |
| Средний | 7-9 | 5 | 5-of-7 или 5-of-9 |
| Большой (subDAO) | 11-13 | 7 | 7-of-11 |
Threshold не должен быть слишком низким (2-of-10 — один скомпрометированный ключ почти не мешает атаке) и слишком высоким (если 8-of-9 требуется, потеря двух ключей блокирует казначейство).
Ротация owners. Safe поддерживает добавление/удаление owners и изменение threshold через safeTx. Ротация раз в 6-12 месяцев — хорошая практика. Процедура смены owner должна быть задокументирована и протестирована заранее.
Safe Guards
Guard — контракт, который вызывается до и после каждой транзакции Safe. Позволяет добавить кастомную логику: лимиты на транзакции по размеру, whitelist адресов назначения, ограничения по времени.
interface IGuard {
function checkTransaction(
address to,
uint256 value,
bytes memory data,
Enum.Operation operation,
// ...
) external;
function checkAfterExecution(bytes32 txHash, bool success) external;
}
Пример использования: guard, который разрешает безлимитные транзакции только если все N owners подписали (не threshold), а для транзакций выше $100K требует дополнительную задержку.
Safe Modules
Module — контракт которому Safe делегирует право исполнять транзакции без прохождения threshold. Это для автоматизации: recurring payments, streaming payroll, Zodiac Roles (role-based permissions).
Zodiac (Gnosis Guild) — фреймворк модулей для DAO. Reality Module (SafeSnap), Roles Module (fine-grained permissions), Exit Module (rage quit). Устанавливается через Safe UI.
Zodiac Roles Module — позволяет назначить адресам роли с ограниченными permissions: "этот адрес может вызывать только функцию X контракта Y с параметрами в диапазоне Z". Полезно для делегирования операционных задач без полного доступа к казначейству.
Безопасность и операционные риски
Компрометация ключей
Основной риск — компрометация ключей owners. Митигация:
- Hardware wallets (Ledger, Trezor) для каждого owner — обязательно
- Разные устройства, разные физические локации
- Никогда не хранить seed phrases в облаке или мессенджерах
- Регулярные drill: тестовые транзакции с каждого ключа раз в месяц
Social engineering — второй по частоте вектор. Owner получает "срочный запрос" подписать транзакцию. Процедура: любая транзакция обсуждается в официальном канале, никаких "срочных" подписей без публичного обсуждения.
Ключ потерян
Если threshold подписей недостижимо (потеряны ключи) — средства заморожены навсегда. Для защиты: хранить recovery passphrase в нескольких физически разделённых защищённых местах (не у одного человека), заранее протестировать процедуру восстановления.
Процесс работы и сроки
Деплой Safe + базовая настройка — 1-2 дня. Интеграция с Governor через Timelock — 1 неделя. SafeSnap + Reality.eth + полное тестирование — 2-3 недели. Кастомные Guards/Modules + документация процедур — дополнительно 1-2 недели.
Итого для production-ready DAO treasury с governance интеграцией — 4-6 недель.







