Інтеграція з Safe{Wallet} (Gnosis Safe)

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Інтеграція з Safe{Wallet} (Gnosis Safe)
Середній
~2-3 дні
Часті запитання

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

Етапи блокчейн-розробки

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

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

Інтеграція з Safe{Wallet} (Gnosis Safe)

Safe (колишній Gnosis Safe) — де-факто стандарт мультисиг кошелька у EVM екосистемі. Більш $100 млрд активів під управлінням, інтеграція у більшість крупних DAO й корпоративних treasury. Суть: смарт-контракт кошелек з M-of-N підписами, де транзакція виконується лише після сбору потрібного порога підписів від owners.

Інтеграція з Safe потрібна у кількох сценаріях: DAO treasury management, корпоративний контроль над смарт-контрактами, multisig для DeFi протоколів, кастомний інтерфейс для управління активами команди.

Архітектура Safe

Safe контракт — GnosisSafe.sol з модульною архітектурою. Ключові компоненти:

Owners й Threshold. Список адрес-owners й мінімальна кількість підписів для виконання. Зміна цих параметрів сама вимагає threshold підписів.

Modules. Додаткові смарт-контракти, що можуть виконувати транзакції від імені Safe без стандартного процесу підписів. Використовуються для автоматизації (Zodiac, Gelato), recovery механізмів, кастомних flows.

Guards. Контракти, що вызиваються до й після кожної Safe транзакції для додаткових перевірок. Можна реалізувати whitelist адрес, ліміти на суми, cooldown періоди.

Fallback Handler. Обробляє вызови невідомих функцій й receive(). Використовується для підтримки додаткових стандартів (ERC-1155, EIP-1271).

Safe Transaction Service й API

Safe підтримує offline сбір підписів через 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 management приложення — це основний шлях.

Zodiac: Модульна розширюваність

Zodiac — фреймворк від Gnosis Guild для розширення Safe через модулі. Готові модулі:

Reality Module — виконує транзакції по результатам on-chain голосування через Kleros або Reality.eth. Safe + Snapshot + Reality Module = DAO treasury без on-chain voting газу.

Delay Module — додає timelock для транзакцій. Критично для протоколів: навіть якщо threshold підписів зібрані, транзакція чекає N годин перед виконанням. Користувачі можуть помітити й відреагувати на шкідливі зміни.

Roles Module — гранульований контроль доступу. Різним адресам можна дозволити вызивати конкретні функції конкретних контрактів з конкретними параметрами. Приклад: "мультисиг може вызвати лише rebalance() на стратегії, але не withdraw()".

Кастомні 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+ сітях, адреси контрактів совпадают (deployment через CREATE2 з одинаковим salt). Safe адрес на Ethereum й Arbitrum може бути одинаковим, якщо розгорнутий з одинаковими параметрами (owners, threshold, nonce).

Safe{Core} Account Abstraction SDK — новий стек, що інтегрує Safe з ERC-4337. Safe контракт стає ERC-4337 Account, транзакції йдуть через bundler, можна використовувати Paymaster для оплати газу в ERC-20.

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

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

Сроки

Базова інтеграція — UI для створення/підпису/виконання транзакцій через Safe Transaction Service, список pending транзакцій, історія: 3-4 тижні.

Розширена інтеграція з кастомними модулями, Guard контрактами, Safe Apps, Zodiac: 6-8 тижнів + аудит кастомних контрактів.

Safe контракти пройшли багато аудитів — сам Safe безпечен. Ризики — у кастомних модулях й Guards, що пишуться під проект.