Інтеграція 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. Flow:
- 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 для газ-оптимізації
- Документація, доступи, навчання команди
- Технічна підтримка на етапі впровадження
Наш досвід та гарантії
Понад 5 років досвіду в Web3, реалізували 20+ інтеграцій Safe для DAO, DeFi та корпоративних замовників. Офіційні SDK Safe використовуємо в production. Гарантуємо безпеку кастомних контрактів — кожен модуль проходить формальну верифікацію та fuzzing тести. Наші рішення включають налаштування протоколу безпеки Safe через кастомні Guards.
Отримайте консультацію щодо вашого проекту. Зв'яжіться з нами для оцінки.







