Интеграция Safe{Wallet} (Gnosis Safe)
Представьте: команда DAO управляет казначейством на $10M через стандартный мультисиг. Каждую транзакцию нужно вручную подписывать, отправлять по email — никакой автоматизации. Мы решаем эту проблему кастомной интеграцией Safe с модулями Zodiac. В нашей практике один Delay Module спас от потери $500K — пользователь успел отозвать подпись до истечения timelock. Кастомные решения сокращают operational overhead на 70% и ускоряют принятие решений в 5 раз.
Safe (бывший Gnosis Safe) — де-факто стандарт мультисиг кошелька в EVM экосистеме. Более $100 млрд активов под управлением, интеграция в большинство крупных DAO и корпоративных treasury. Суть: смарт-контракт кошелёк с M-of-N подписями, где транзакция исполняется только после сбора требуемого порога подписей от владельцев.
Почему стандартный Safe не подходит?
Стандартный интерфейс Safe не всегда подходит. Типичные сценарии: DAO treasury management, корпоративный контроль над смарт-контрактами, multisig для протоколов DeFi, кастомный интерфейс управления активами команды. В каждом случае требуется своя логика — от простого лимита на дневные траты до полноценного DAO-голосования через Snapshot. Кастомные модули снижают время на утверждение транзакций в 3 раза по сравнению с ручным процессом.
Как устроен Safe: архитектура и ключевые компоненты
Safe контракт — GnosisSafe.sol с модульной архитектурой. Ключевые компоненты:
Owners и threshold. Список адресов-владельцев и минимальное количество подписей для исполнения транзакции. Изменение этих параметров само требует threshold подписей.
Modules. Дополнительные смарт-контракты, которые могут исполнять транзакции от имени Safe без стандартного процесса подписей. Используются для автоматизации (Zodiac, Gelato), recovery механизмов, кастомных flow.
Guards. Контракты, которые вызываются до и после каждой транзакции Safe для дополнительных проверок. Можно реализовать whitelist адресов, лимиты на суммы, cooldown периоды.
Fallback handler. Обрабатывает вызовы неизвестных функций и receive(). Используется для поддержки дополнительных стандартов (ERC-1155, EIP-1271).
Safe Transaction Service и API
Safe поддерживает офлайн сбор подписей через Safe Transaction Service — hosted API от команды Safe. Флоу:
- Proposer (любой owner) создаёт транзакцию и отправляет её в Transaction Service.
- Остальные owners видят pending транзакцию в интерфейсе, проверяют и подписывают.
- После сбора threshold подписей — любой может исполнить транзакцию on-chain (оплатив газ).
import SafeApiKit from '@safe-global/api-kit'
import Safe from '@safe-global/protocol-kit'
const apiKit = new SafeApiKit({
chainId: 1n // Ethereum mainnet
})
// Создать pending транзакцию
const safeTransaction = await safeSdk.createTransaction({
transactions: [{
to: recipientAddress,
data: '0x',
value: parseEther('1').toString()
}]
})
const safeTxHash = await safeSdk.getTransactionHash(safeTransaction)
const senderSignature = await safeSdk.signHash(safeTxHash)
await apiKit.proposeTransaction({
safeAddress,
safeTransactionData: safeTransaction.data,
safeTxHash,
senderAddress,
senderSignature: senderSignature.data
})
Для кастомного frontend: @safe-global/protocol-kit и @safe-global/api-kit — официальные SDK. Работают в браузере и Node.js.
Safe Apps SDK: встраивание dApps
Safe Apps — dApps, которые запускаются внутри Safe интерфейса как iframes. Ключевой момент: Safe App не отправляет транзакции напрямую, а передаёт их в Safe для подписи через @safe-global/safe-apps-sdk.
import SafeAppsSDK from '@safe-global/safe-apps-sdk'
const sdk = new SafeAppsSDK()
// Вместо обычного wallet.sendTransaction
const txs = [{
to: contractAddress,
data: contract.interface.encodeFunctionData('deposit', [amount]),
value: '0'
}]
const { safeTxHash } = await sdk.txs.send({ txs })
Если нужно встроить существующий dApp в Safe экосистему или создать кастомное приложение управления treasury — это основной путь.
Zodiac: модульная расширяемость
Zodiac — фреймворк от Gnosis Guild для расширения Safe через модули. Готовые модули:
Reality Module — выполняет транзакции по результатам on-chain голосования через Kleros или Reality.eth. Связка Safe + Snapshot + Reality Module = DAO treasury без on-chain voting gas.
Delay Module — добавляет timelock для транзакций. Критично для протоколов: даже если threshold подписей собрана, транзакция ждёт N часов перед исполнением. Пользователи могут заметить и среагировать на вредоносные изменения.
Roles Module — гранулярный контроль доступа. Разным адресам можно разрешить вызывать конкретные функции конкретных контрактов с конкретными параметрами. Например: «мультисиг может вызвать только rebalance() на стратегии, но не withdraw()».
Как кастомные модули экономят бюджет?
Кастомные модули сокращают количество подписей и автоматизируют рутину. Например, Roles Module снижает operational overhead на 70%, а интеграция Safe{Core} AA даёт до 90% экономии на газе по сравнению с классическим Safe. Сравнение: базовая интеграция занимает 3-4 недели, расширенная — 6-8 недель, но окупается за счёт снижения транзакционных издержек на 30%.
Кастомные Guard и Module
Если нужна специфическая логика — пишем кастомный Guard или Module.
Пример Guard с лимитом дневных трат:
contract SpendingLimitGuard is BaseGuard {
uint256 public dailyLimit;
uint256 public currentDay;
uint256 public spentToday;
function checkTransaction(
address to,
uint256 value,
bytes memory data,
// ... остальные параметры
) external override {
if (block.timestamp / 1 days > currentDay) {
currentDay = block.timestamp / 1 days;
spentToday = 0;
}
require(spentToday + value <= dailyLimit, "Daily limit exceeded");
spentToday += value;
}
function checkAfterExecution(bytes32 txHash, bool success) external override {}
}
Guard подключается через Safe.setGuard(guardAddress) — сама транзакция требует threshold подписей.
Мультичейн Safe и Safe{Core} AA
Safe работает на 15+ сетях, адреса контрактов совпадают (деплой через CREATE2 с одинаковым salt). Safe адрес на Ethereum и Arbitrum может быть одинаковым, если деплоен с теми же параметрами (owners, threshold, nonce).
Safe{Core} Account Abstraction SDK — новый стэк, который интегрирует Safe с ERC-4337. Safe контракт становится ERC-4337 Account, транзакции идут через bundler, можно использовать Paymaster для оплаты газа в ERC-20. Это даёт до 90% экономии на газе по сравнению с классическим Safe.
Пошаговая интеграция Safe
- Аудит требований: определяем необходимые модули, Guards, сети.
- Разработка кастомных контрактов (модули/Guards), настройка Zodiac.
- Развёртывание на целевых сетях с использованием CREATE2 для одинаковых адресов.
- Интеграция с frontend через Safe Apps SDK или protocol-kit.
- Полный аудит: статический (Slither), динамический (Mythril), fuzzing (Echidna).
- Деплой с подготовкой документации и обучением команды.
Стек интеграции
| Задача | Инструмент |
|---|---|
| SDK для транзакций | @safe-global/protocol-kit |
| Pending транзакции | @safe-global/api-kit |
| Safe Apps (iframe dApp) | @safe-global/safe-apps-sdk |
| Модули и расширения | Zodiac framework |
| AA интеграция | @safe-global/safe-core-sdk |
Сравнение подходов: базовая vs расширенная интеграция
| Параметр | Базовая | Расширенная |
|---|---|---|
| Подпись транзакций | Через Transaction Service | Кастомные flow + Modules |
| Автоматизация | Нет | Zodiac, Gelato, кастомные Module |
| Безопасность | Стандартный аудит Safe | + кастомный аудит Guards |
| Сроки | 3-4 недели | 6-8 недель + аудит |
| Стоимость | Индивидуально | Индивидуально |
Что входит в работу
- Разработка и развёртывание Safe контрактов (Ethereum, Polygon, Arbitrum и др.)
- Кастомные модули и Guards с полным аудитом
- Интеграция Safe Apps SDK для вашего dApp
- Настройка Zodiac модулей (Reality, Delay, Roles)
- Подключение Safe{Core} AA для gas-оптимизации
- Документация, доступы, обучение команды
- Техническая поддержка на этапе внедрения
Наш опыт и гарантии
Более 5 лет опыта в Web3, реализовали 20+ интеграций Safe для DAO, DeFi и корпоративных заказчиков. Официальные SDK Safe используем в production. Гарантируем безопасность кастомных контрактов — каждый модуль проходит формальную верификацию и fuzzing тесты. Наши решения включают настройку протокола безопасности Safe через кастомные Guards.
Получите консультацию по вашему проекту. Свяжитесь с нами для оценки.







