Настройка мультисиг через Safe{Wallet}
Safe{Wallet} (бывший Gnosis Safe) — де-факто стандарт мультисигнатурного кошелька в EVM экосистеме. Более $100 млрд активов под управлением, аудированный контракт, встроенный UI на app.safe.global. Настройка корректного мультисига — это не просто нажать «создать»: нужно правильно выбрать threshold, настроить owners, понять gas implications и опционально подключить Safe Guard для policy enforcement.
Ключевые параметры при создании
Owners — адреса, чьи подписи принимаются контрактом. Каждый owner — EOA или смарт-контракт (например, другой Safe). Используйте hardware wallet адреса для owners, не MetaMask браузерные ключи.
Threshold (M-of-N) — сколько подписей нужно для исполнения транзакции. Для командного treasury: 3-of-5 или 2-of-3. Не делайте 1-of-N для реальных средств — это одноточечный отказ. Не делайте N-of-N — потеря одного ключа блокирует всё.
Chain — Safe деплоится отдельно на каждой сети. Один и тот же адрес Safe можно получить на разных сетях через Safe Factory с одинаковым saltNonce — полезно для multichain treasury с единым адресом.
Процесс настройки
Создание через app.safe.global: выбрать сеть → добавить owners → задать threshold → оплатить deployment (gas). Контракт деплоится через SafeProxyFactory, создаётся proxy на проверенный имплементационный контракт.
Для программного создания — Safe{Core} SDK:
import { SafeFactory } from '@safe-global/protocol-kit'
const safeFactory = await SafeFactory.create({ ethAdapter })
const safe = await safeFactory.deploySafe({
safeAccountConfig: {
owners: ['0xAlice...', '0xBob...', '0xCarol...'],
threshold: 2,
},
saltNonce: '0x123' // для детерминированного адреса
})
Safe Guard: ограничения поверх мультисига
Safe Guard — смарт-контракт, который вызывается перед каждой транзакцией из Safe. Позволяет добавить политики: whitelist адресов получателей, лимиты сумм, запрет определённых функций.
Без Guard: любые 2-of-3 owner могут отправить любую транзакцию куда угодно. С Guard: дополнительная логика проверки, которую нельзя обойти даже при полном quorum.
Подписание и исполнение транзакций
Транзакция создаётся в Safe UI или через SDK. Каждый owner подписывает off-chain (без gas). После сбора threshold подписей — любой may вызвать execTransaction on-chain и заплатить gas. Это не обязательно должен быть owner.
| Операция | Gas cost (Ethereum mainnet) |
|---|---|
| Deployment Safe | ~280,000 gas |
| execTransaction (2-of-3) | ~120,000–150,000 gas |
| Добавление owner | ~80,000 gas |
| Изменение threshold | ~50,000 gas |
На L2 (Arbitrum, Base, Optimism) gas на порядок ниже — Safe там значительно дешевле в использовании.
Рекомендации по безопасности
Каждый owner хранит ключ на отдельном hardware wallet. Backup seed-фраз — физически, в разных местах. При смене члена команды — добавить нового owner, убрать старого через Safe транзакцию (требует текущего quorum). Никогда не держите threshold = total owners: потеря одного ключа = потеря доступа.
Настройка Safe для команды от 2 до 20 участников с правильными политиками — 1-3 дня работы.







