Разработка автоматизации транзакций через Safe{Wallet}
Safe{Wallet} (бывший Gnosis Safe) — стандарт de facto для мультисиг-кошельков в Web3. Любой серьёзный DeFi-протокол, DAO-казна или корпоративный крипто-кошелёк использует Safe. Но ручное собирание подписей от 3 из 5 владельцев на каждую рутинную транзакцию — это боль. Автоматизация через Safe решает это: Keeper выполняет транзакции по условию или расписанию, не нарушая безопасность мультисига.
Два механизма автоматизации
Safe Modules
Safe Module — смарт-контракт, которому Safe-кошелёк явно делегирует право выполнять транзакции без сбора подписей владельцев. Module включается через enableModule(address module) — это требует обычного мультисиг-голосования. Но после включения module может вызывать execTransactionFromModule напрямую.
Это мощно и опасно. Скомпрометированный Module — это полный доступ к средствам Safe без каких-либо защит мультисига. Поэтому правильная архитектура Module включает:
- Явный whitelist разрешённых действий (конкретные контракты, конкретные функции, максимальные суммы)
- Timelock: транзакция анонсируется, выполняется через N часов
- Возможность отключения Module через мультисиг
Zodiac Module Framework от Gnosis — набор готовых модулей: RolesModule (ролевая система с детальными разрешениями), DelayModule (timelock), ExitModule (позволяет участникам DAO выйти с пропорциональной долей). Для кастомной автоматизации RolesModule — правильный выбор: задаём роль "Keeper", даём ей право вызывать конкретные функции на конкретных контрактах с конкретными лимитами.
Safe Transaction Service + Relay
Альтернативный подход: backend-сервис формирует транзакцию, получает необходимое количество подписей от владельцев (асинхронно через Safe Transaction Service API), и когда threshold достигнут — relay-сервис отправляет транзакцию on-chain.
Этот подход не требует Module, безопаснее (мультисиг сохраняется полностью), но требует human-in-the-loop для подписания. Подходит для полуавтоматических процессов: система определяет, что нужна транзакция → уведомляет владельцев → они подписывают → execution автоматический.
Интеграция с Gelato и Chainlink Automation
Для полностью автоматических транзакций по расписанию — интеграция Safe Module с Keeper-сетью:
Gelato Safe Module — готовый Module от Gelato, который позволяет настроить автоматические транзакции из Safe по расписанию или по on-chain условию. Gelato берёт газ из своего баланса (1Balance), Safe не тратит ETH на газ напрямую.
Chainlink Automation + кастомный Module: Chainlink Keeper вызывает функцию Module, которая проверяет условие и инициирует транзакцию через execTransactionFromModule. Более гибко, но требует разработки Module.
Разработка кастомного Automation Module
Базовая структура Module:
contract AutomationModule is Module {
ISafe public safe;
function executeScheduled(bytes calldata data) external onlyKeeper {
require(block.timestamp >= nextExecution, "Too early");
require(safe.execTransactionFromModule(
target, value, data, Enum.Operation.Call
), "Module transaction failed");
nextExecution = block.timestamp + interval;
}
}
Важные детали: onlyKeeper — проверка, что вызывает авторизованный Keeper, а не произвольный адрес. Enum.Operation.Call vs Enum.Operation.DelegateCall — для большинства случаев нужен Call. DelegateCall выполняет код в контексте Safe — крайне опасно для автоматизации.
Типичные кейсы автоматизации
Автоматический rebalance DeFi-позиций. Safe держит ликвидность в нескольких протоколах. Раз в неделю Keeper проверяет allocation и вызывает транзакцию ребалансировки через Module.
Выплата грантов по DAO-расписанию. DAO одобрила грант в 10 ETH, выплачиваемый по 1 ETH в месяц. Module хранит параметры гранта, Keeper вызывает ежемесячно.
Sweep из hot wallet в Safe. Горячий кошелёк накапливает средства, Keeper переводит в Safe при достижении порога.
Сроки
Настройка существующего Zodiac Module (RolesModule + Gelato) для типовой автоматизации — 1-2 рабочих дня. Разработка кастомного Automation Module с конкретной бизнес-логикой — 3-5 дней.
Стоимость рассчитывается после обсуждения структуры Safe (количество владельцев, threshold, целевые транзакции).







