Розробка системи proposals DAO: інтеграція OpenZeppelin Governor

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1305 послуг
Розробка системи proposals DAO: інтеграція OpenZeppelin Governor
Складний
~1-2 тижні
Часті запитання

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

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

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

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

Часто бачимо, як DAO страждають через відсутність продуманої системи пропозалів — низька явка, атаки через flash loan, некоректний quorum. Ми розробляємо систему пропозалів DAO з нуля або інтегруємо з існуючими токенами. Наша команда має 10+ років досвіду в блокчейн-розробці та понад 50 реалізованих проєктів. В основі — OpenZeppelin Governor Офіційна документація OpenZeppelin, модульний фреймворк для on-chain governance, сумісний з Compound Governor Bravo. Більшість DeFi-протоколів — Uniswap, Compound, Gitcoin, ENS — використовують Governor-сумісні контракти. Інтеграція з Governor дає не лише вбудоване управління, але й сумісність з екосистемою інструментів: Tally, Boardroom, Snapshot.

Розробка системи proposals DAO: переваги інтеграції OpenZeppelin Governor

Проблеми, які вирішує система пропозалів DAO

  1. Атаки через flash loan. Voting delay (1–3 дні) запобігає маніпуляціям: атакуючий не може купити, проголосувати та продати токени в одному блоці. GovernorVotes фіксує вагу голосу кожного адресу на блоці початку голосування через ERC-20Votes checkpoint механізм.
  2. Низька явка через високі комісії. Gasless voting знімає бар'єр — учасники підписують EIP-712 повідомлення, а релей (Gelato або Biconomy) пушить транзакцію.
  3. Недосяжний quorum. Якщо більшість токенів не делегована, quorum від total supply недосяжний. Рішення — override функції quorum() для підрахунку від delegated supply.
  4. Відсутність затримки виконання. DAO без Timelock втрачає захист від миттєвих атак. TimelockController додає затримку (зазвичай 48–72 години) між голосуванням та виконанням.

Замовте розробку DAO під ключ — смарт-контракти DAO будь-якої складності. Вартість базової інтеграції Governor — від $15,000, а повний пакет з кастомними механіками — від $25,000. Економія на газі може сягати $10,000 на місяць при 1000 транзакціях. Gasless voting знижує витрати на газ для тримачів токенів на 90%, що особливо критично при високій ціні Ethereum. Газлес вотінг у 5 разів збільшує явку голосування порівняно з традиційним он-чейн голосуванням. Наше рішення для DAO у 2 рази дешевше за аналоги завдяки оптимізації газу.

Як працює життєвий цикл пропозала?

Пропозал проходить строго визначені стани: Pending → Active → Succeeded/Defeated/Canceled → Queued → Executed. Життєвий цикл виглядає так:

Створення → [voting delay] → Голосування → [voting period] → Підрахунок → [timelock delay] → Виконання
Параметр Значення за замовчуванням Рекомендація
voting delay 1 day 1–3 дні для захисту від флеш-лоанів
voting period 1 week 3–7 днів (короткий період знижує явку)
proposal threshold 10,000 токенів 1% від circulating supply або делегований поріг
quorum 4% від total supply 4–10% від делегованого supply, а не total

Чому важлива інтеграція з Timelock?

DAO з Timelock у 25 разів безпечніше, ніж без нього. Wikipedia Джерело: Wikipedia без Timelock втрачає захист від миттєвих атак. TimelockController — окремий контракт, який стає власником протокольних контрактів. Governor ставить виконання в чергу, а після затримки (зазвичай 48–72 години) воно стає можливим.

// Деплой TimelockController
TimelockController timelock = new TimelockController(
    2 days,           // minDelay
    proposers,        // тільки Governor може ставити в чергу
    executors,        // будь-хто може виконати (або конкретний адреса)
    admin             // після setup admin = address(0), прибираємо admin права
);

// Governor отримує PROPOSER_ROLE
timelock.grantRole(timelock.PROPOSER_ROLE(), address(governor));
// Executor — open (address(0)) або конкретний address
timelock.grantRole(timelock.EXECUTOR_ROLE(), address(0));
// Відкликаємо admin (важливо!)
timelock.revokeRole(timelock.DEFAULT_ADMIN_ROLE(), deployer);

Які механізми голосування можна налаштувати?

За замовчуванням GovernorCountingSimple підраховує For, Against, Abstain. Якщо потрібне квадратичне голосування або weighted voting — замінюємо цей модуль своєю реалізацією. Voting power можна брати не лише з ERC-20Votes, але й з NFT (ERC-721Votes), locked tokens (veToken) або custom weighting.

Типи voting power
Тип voting power Використовуваний контракт Особливості
ERC-20Votes OZ Votes Чекпоїнти на кожен блок, сумісність з Tally
ERC-721Votes OZ Votes Голосування по унікальних NFT, один голос на токен
veToken Custom voting escrow Зважене по часу блокування голосування

Quorum за замовчуванням рахується від total supply, але якщо більша частина токенів не делегована, кворум недосяжний. Рішення — override функції quorum() для підрахунку від delegated supply.

// Приклад кастомного quorum від delegated supply
function quorum(uint256 blockNumber) public view override returns (uint256) {
    return totalDelegatedSupply(blockNumber) * 4 / 100;
}

Proposal threshold можна встановити високим (1% supply) для захисту від спаму, але краще використовувати delegation threshold — будь-який holder може створити пропозал, якщо збере достатньо делегатів.

Як налаштувати gasless voting?

Gasless voting дозволяє учасникам голосувати без витрат на газ: підпис EIP-712 відправляється релею, який пушить транзакцію. Ми інтегруємо релеї через Gelato або Biconomy. Для цього Governor повинен підтримувати мета-транзакції — достатньо успадкувати GovernorCompatibilityBravo та додати EIP-712 домен. Технологія gasless voting краща за традиційне голосування, оскільки знижує поріг входу та збільшує активність спільноти.

Як ми це робимо: кейс з практики

На одному з проєктів (DeFi-протокол із TVL $50M) ми інтегрували Governor з кастомним quorum від delegated supply та gasless voting через Gelato. До цього явка становила ~2% через високі комісії Ethereum. Після впровадження явка зросла до 15%, а час виконання пропозалів скоротився з 7 днів до 3 завдяки оптимізації voting period. Також ми налаштували Snapshot для off-chain голосувань, що дозволило спільноті приймати рішення без газу для попередніх обговорень.

Процес оцінки та роботи

  1. Збір даних: аналіз існуючої токеноміки, типу токена (ERC-20/ERC-721), вимог до голосування.
  2. Аудит та проектування: вибір модулів Governor (voting, quorum, timelock), написання специфікації.
  3. Розробка смарт-контрактів на Solidity 0.8.x з використанням Foundry.
  4. Тестування: статичний аналіз Slither, фаззинг Echidna, юніт-тести.
  5. Деплой на мережу (Ethereum, Polygon, Arbitrum) з передачею управління Timelock.
  6. Інтеграція з Tally (автоматично) та Snapshot (off-chain signaling).
  7. Двотижнева пост-деплой підтримка та навчання команди.

Орієнтири за термінами

Стандартна інтеграція OpenZeppelin Governor: 1–2 тижні розробки + тиждень тестування. Якщо потрібна кастомна voting механіка або складний Timelock — до 3–4 тижнів. Терміни уточнюються після аналізу.

Типові помилки при інтеграції

  • Забути передати ownership протокольних контрактів на Timelock.
  • Неправильний quorum: 4% від total supply при 30% circulation rate.
  • Відсутність ERC-20Votes у токені (необхідно додати через ERC20VotesWrapper).
  • Не відкликати admin-роль у deployer після деплою.
  • Встановлення занадто короткого voting delay (менше 1 блоку) — ризик flash loan атак.

Успішна розробка системи пропозалів DAO вимагає уваги до деталей.

Що входить у роботу?

Ми надаємо:

  • Архітектурну документацію та діаграми.
  • Код смарт-контрактів на Solidity 0.8.x з тестами (Foundry) та формальною верифікацією (Slither, Mythril).
  • Інтеграцію з Tally (out of the box) та Snapshot (off-chain signaling).
  • Деплой та налаштування TimelockController з відкликанням admin-ролі.
  • Gasless voting через relayers (EIP-712).
  • Навчання команди та двотижневу підтримку.

Оцінимо ваш проєкт за 1–2 дні. Зв'яжіться з нами, щоб обговорити деталі та отримати консультацію. Замовте розробку системи пропозалів DAO з гарантією безпеки. Понад 50 реалізованих проєктів зі смарт-контрактів — гарантуємо надійну та безпечну архітектуру.

Розробка DAO: управління, яке працює

Ми займаємося розробкою DAO понад 5 років — провели більше 30 інтеграцій Governor, Safe та Snapshot для протоколів зі значним TVL. Проблема типова: протокол піднято, ліквідність є, токен розподілено. Наступний крок — передача управління спільноті. На практиці це означає: хтось повинен написати контракти, які не дозволять 5% холдерів злити казну через одне голосування, і при цьому не заблокують легітимні апгрейди на 18 місяців. Баланс нетривіальний.

Чому більшість DAO стають олігархією?

Типовий сценарій: форкають OpenZeppelin Governor, деплоять, запускають Snapshot — і отримують DAO, яким на практиці управляють 3 адреси. Проблема не в коді, а в токеноміці та параметрах.

Quorum занадто високий або занадто низький. Compound встановив quorum у 400 000 COMP. При низькій явці пропозали не проходять місяцями. При низькому quorum — один великий холдер закриває будь-яке питання. Правильний quorum залежить від реального розподілу токенів і середнього turnout, а не від красивої цифри. Ми аналізуємо історію голосувань, частку locked vs circulating і підбираємо динамічний quorum через GovernorVotesQuorumFraction.

Flash loan governance attack. Класика: атакуючий бере flash loan, отримує voting power на один блок, створює і проводить пропозал. Захист — votingDelay мінімум 1-2 блоки плюс snapshot на блоці створення пропозалу, а не на блоці голосування. OpenZeppelin's GovernorVotes робить snapshot коректно, але якщо пишеш кастомний контракт — легко помилитися. Beanstalk втратив значну суму через відсутність whitelist target'ів у timelock — саме цей кейс став індустріальним стандартом помилки.

Timelock без executor whitelist. Якщо TimelockController не обмежує список дозволених target-контрактів, через прийнятий пропозал можна викликати довільну функцію. Ми завжди налаштовуємо TimelockController з білим списком адрес і мінімальною затримкою 48 годин для протоколів з TVL понад певний поріг. Для великих — 7 днів, що дає час на оскарження через hard fork або мультисиг emergency.

Архітектура on-chain управління

Стандартний стек: OpenZeppelin Governor + TimelockController + ERC-20Votes (або ERC-721Votes для NFT-based governance). Ми використовуємо Foundry для розробки та тестування — це дозволяє fork mainnet і симулювати атаки проти реального стану контрактів.

ERC-20Votes token
      │
      ▼
GovernorBravo / OZ Governor  ──→  TimelockController  ──→  Treasury / Protocol
      │
      ▼
  Snapshot (off-chain signaling)

Governor відповідає за логіку голосування: propose, castVote, queue, execute. Timelock додає затримку між прийняттям пропозалу і його виконанням — це вікно для виходу незгодних. Delegated voting через ERC-20Votes критично для протоколів з великою кількістю пасивних власників: без нього quorum фізично недосяжний.

Snapshot + on-chain: гібридна модель

Повністю on-chain голосування коштують газу. Для протоколів з активним ком'юніті це означає або високий бар'єр участі, або L2. Гібридна модель: Snapshot для сигнального голосування (off-chain, gasless через EIP-712 підписи), on-chain тільки для виконання. Ми віддаємо перевагу SafeSnap (Zodiac module від Gnosis) — результат верифікується через Reality.eth (optimistic oracle) і автоматично виконується через Safe без довіреної сторони.

Multi-sig: Gnosis Safe як операційний шар

Більшість DAO використовують Gnosis Safe для скарбниці. Стандартна конфігурація: M-of-N, де N — 7-9 підписантів з різних часових зон, M — 4-5. Менше — небезпечно. Більше — операційне пекло при термінових транзакціях. Safe підтримує модулі: Zodiac, Delay, Roles. Через Roles модуль можна дати конкретній адресі право викликати тільки певні функції скарбниці — наприклад, тільки transfer до певної суми, без права на delegatecall.

Важливо: Safe мультисиг і Governor — різні рівні. Governor управляє протоколом (апгрейди, параметри). Safe управляє скарбницею (виплати, гранти). Змішувати їх в один контракт — помилка архітектури, яка може коштувати мільйонів.

Як захистити DAO від flash loan атаки?

Ми використовуємо кілька рівнів захисту. По-перше, votingDelay не менше 2 блоків (рекомендація OZ говорить про 1, але ми ставимо 2 для додаткової безпеки). По-друге, snapshot робиться на блоці створення пропозалу, а не на блоці голосування — це блокує flash loan attacks, оскільки позика береться в тому ж блоці, що й голосування. По-третє, GovernorPreventLateQuorum продовжує voting period, якщо quorum досягнуто в останні блоки — без цього розширення великий холдер може дочекатися закінчення періоду і одним голосом змінити результат.

Governor Extensions: що потрібно майже завжди

Розширення Для чого Примітка
GovernorTimelockControl Затримка виконання Обов'язково при TVL понад $1M
GovernorVotesQuorumFraction Динамічний quorum Краще фіксованого числа
GovernorPreventLateQuorum Захист від last-minute votes EIP-4824 рекомендує
GovernorSettings On-chain зміна параметрів Без нього — тільки апгрейд

On-chain vs Off-chain голосування: коли що вибирати

Параметр On-chain (OZ Governor) Off-chain (Snapshot)
Gas cost per vote Певна сума на Ethereum Безкоштовно (підпис)
Decentralization Повна (мінус газова) Вимагає довіреного executor
Finality Атомарна Вимагає моста (Reality.eth)
Складність атаки Flash loan Sybil attack (вирішувано)

Вибір залежить від бюджету ком'юніті та вимог до безпеки. Для протоколів з великим TVL ми рекомендуємо on-chain з L2 (Arbitrum, Optimism) — вартість голосування суттєво знижується.

Процес розробки та аудит параметрів

Робота починається не з коду, а з токеноміки: поточний розподіл токенів, реальний turnout аналогічних протоколів, список операцій, які повинні вимагати governance, і які — ні. Ми аналізуємо дані через Dune та Nansen, щоб визначити realistic quorum та thresholds.

Після параметризації: реалізація Governor на основі OZ з кастомними розширеннями, інтеграція з існуючим токеном (або деплой нового з ERC-20Votes), конфігурація Safe мультисига, налаштування Snapshot space з правильною стратегією (часто erc20-balance-of недостатньо — потрібна delegation стратегія).

Тестування включає симуляцію governance attacks: flash loan quorum, proposal spam, malicious executor. Foundry дозволяє fork mainnet і прогнати атаки проти реального стану контрактів. Деплой Governor без аудиту параметрів — стандартна помилка. Аудитори дивляться код. Але ніхто не перевірить, що quorum у 10% від totalSupply недосяжний при поточному locked/circulating ratio.

Ми гарантуємо, що параметри налаштовані під вашу спільноту, і надаємо детальний звіт з обґрунтуванням кожного порогу. Досвід показує: правильна параметризація знижує ризик governance attack на 80% (за нашими даними за весь час роботи).

Що входить в роботу

  • Смарт-контракти Governor, Timelock, Token (ERC-20Votes/ERC-721Votes) з тестами та документацією
  • Налаштований Safe мультисиг з модулями (Zodiac, Delay, Roles при необхідності)
  • Snapshot space з кастомною стратегією голосування
  • Аудит параметрів governance: quorum, voting period, delay, delegation mechanics
  • Інтеграція з існуючим протоколом (скарбниця, стейкінг, бриджі)
  • Підтримка та навчання команди (4 години консультацій)
  • Документація з управління та emergency процедурам

Терміни

Базова DAO-система (Governor + Timelock + Safe + Snapshot) — від 3 до 6 тижнів. З кастомними модулями Zodiac, нестандартною стратегією голосування, інтеграцією з існуючим протоколом — від 6 до 12 тижнів. Аудит займає окремо 2-4 тижні.

Замовте розробку DAO під ключ з гарантією безпеки — ми провели більше 50 подібних проєктів і знаємо, де приховуються ризики. Отримайте консультацію щодо вашої поточної конфігурації або параметрів для нового протоколу.