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

Часто бачимо, як DAO страждають через відсутність продуманої системи пропозалів — низька явка, атаки через flash loan, некоректний quorum. Ми розробляємо систему пропозалів DAO з нуля або інтегруємо з існуючими токенами. Наша команда має 10+ років досвіду в блокчейн-розробці та понад 50 реалізованих

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

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

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

  • 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

Часто бачимо, як 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 реалізованих проєктів зі смарт-контрактів — гарантуємо надійну та безпечну архітектуру.