Інтеграція Safe{Wallet}: кастомні мультисіґ-рішення для Web3

Інтеграція Safe{Wallet} (Gnosis Safe) Уявіть: команда DAO керує скарбницею на $10M через стандартний мультисіг. Кожну транзакцію потрібно вручну підписувати, надсилати по email — жодної автоматизації. Ми вирішуємо цю проблему кастомною інтеграцією Safe з модулями Zodiac. У нашій практиці один Del

Напрямки блокчейн-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    998
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1267
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1003

Інтеграція 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:

  1. Proposer (будь-який owner) створює транзакцію та надсилає її в Transaction Service.
  2. Інші owners бачать pending транзакцію в інтерфейсі, перевіряють і підписують.
  3. Після збору 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

  1. Аудит вимог: визначаємо необхідні модулі, Guards, мережі.
  2. Розробка кастомних контрактів (модулі/Guards), налаштування Zodiac.
  3. Розгортання на цільових мережах з використанням CREATE2 для однакових адрес.
  4. Інтеграція з frontend через Safe Apps SDK або protocol-kit.
  5. Повний аудит: статичний (Slither), динамічний (Mythril), fuzzing (Echidna).
  6. Деплой з підготовкою документації та навчанням команди.

Стек інтеграції

Завдання Інструмент
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.

Отримайте консультацію щодо вашого проекту. Зв'яжіться з нами для оцінки.