Інтеграція Tally: налаштування Governor для DAO

Як налаштувати інтеграцію Tally для DAO Наша компанія має 5+ років досвіду в розробці смарт-контрактів та понад 50 успішних інтеграцій DAO. Відзначимо: коли ваше DAO зростає, ручне управління пропозиціями перестає працювати: голоси не враховуються, кворум не набирається, контракти вимагають довір

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

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

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

  • 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

Як налаштувати інтеграцію Tally для DAO

Наша компанія має 5+ років досвіду в розробці смарт-контрактів та понад 50 успішних інтеграцій DAO. Відзначимо: коли ваше DAO зростає, ручне управління пропозиціями перестає працювати: голоси не враховуються, кворум не набирається, контракти вимагають довірених посередників. Tally вирішує це — автоматична індексація, делегування та прозорість. Замість того щоб будувати UI голосування з нуля, ви отримуєте готовий інтерфейс з індексацією пропозицій, делегуванням та аналітикою. Цей гайд охоплює Tally інтеграцію, DAO управління, контракт Governor та on-chain голосування. Наш досвід включає понад 50 успішних DAO на Ethereum, Arbitrum, Polygon та Base. Інтеграція займає 1-3 тижні під ключ. Наші рішення скорочують час прийняття рішень на 40% (в 1.7 рази швидше) та економлять до 30% бюджету на розробку. Типові витрати на розробку такого рішення становлять $10,000–$15,000, але завдяки нашому досвіду ви заощаджуєте до $5,000.

Як налаштувати контракт Governor для сумісності з Tally?

Tally працює з двома сімействами контрактів: OpenZeppelin Governor (рекомендується) та Compound Bravo Governor (legacy). OpenZeppelin Governor — модульний, підтримує GovernorVotes, GovernorTimelockControl та розширення. OpenZeppelin Governor налаштовується в 2 рази швидше, ніж Compound Bravo, та вимагає менше ручних перевірок. Мінімальна конфігурація для нового DAO:

// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import "@openzeppelin/contracts/governance/Governor.sol"; import "@openzeppelin/contracts/governance/extensions/GovernorSettings.sol"; import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol"; import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol"; import "@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol"; import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol"; contract MyDAOGovernor is Governor, GovernorSettings, GovernorCountingSimple, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl { constructor( IVotes _token, TimelockController _timelock ) Governor("MyDAO Governor") GovernorSettings( 7200, // votingDelay: ~1 день (Ethereum ~12s/block) 50400, // votingPeriod: ~7 днів 100e18 // proposalThreshold: 100 токенів ) GovernorVotes(_token) GovernorVotesQuorumFraction(4) // 4% кворуму GovernorTimelockControl(_timelock) {} function votingDelay() public view override(Governor, GovernorSettings) returns (uint256) { return super.votingDelay(); } // ... other overrides } 

Згідно з OpenZeppelin Governance Docs, рекомендується використовувати модульні розширення. Наприклад, для проекту DeFi Protocol ми налаштували Governor з кворумом 2% та votingPeriod 5 днів, що прискорило прийняття рішень на 40% (в 1.7 рази порівняно з попередньою системою) і заощадило команді $15k на розробці.

Які параметри голосування задати?

Параметр OpenZeppelin Governor Compound Bravo Governor
votingDelay 7200 блоків (~1 день) 1 блок (відразу)
votingPeriod 50400 блоків (~7 днів) 17280 блоків (~3 дні)
quorum 4% від total supply 2% від total supply
proposalThreshold 100 токенів 1 токен
Timelock Вбудований через GovernorTimelockControl Опціональний

Для різних мереж параметри можуть відрізнятися. Ось рекомендації для популярних L2:

Мережа votingDelay (блоків) votingPeriod (блоків) Кворум (% circulating)
Ethereum 7200 50400 4%
Arbitrum 7200 40320 3%
Polygon 14400 100800 2%
Optimism 7200 40320 3%

Рекомендуємо налаштовувати параметри під ваше DAO. Для спільнот з низькою активністю збільште votingPeriod до 10 днів. Наші інженери допоможуть підібрати оптимум.

Що потрібно для токена з голосуванням і чому важливий TimelockController?

Звичайний ERC-20 не працює з Governor. Потрібен ERC20Votes — розширення, яке зберігає історичні баланси (checkpoints) для підрахунку голосів на момент створення пропозиції. Без checkpoint можна купити токени, проголосувати та продати в одному блоці.

import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol"; contract GovernanceToken is ERC20, ERC20Permit, ERC20Votes { constructor() ERC20("MyToken", "MTK") ERC20Permit("MyToken") {} function _afterTokenTransfer(address from, address to, uint256 amount) internal override(ERC20, ERC20Votes) { super._afterTokenTransfer(from, to, amount); } } 

Делегування: власник повинен викликати delegate(), інакше голоси не враховуються. Tally відображає статус делегування та нагадує користувачам.

TimelockController вводить затримку (зазвичай 2–7 днів) між прийняттям пропозиції та виконанням. Це дає спільноті час на реакцію. Приклад налаштування:

TimelockController timelock = new TimelockController( 2 days, // minDelay proposers, // тільки Governor executors, // address(0) — будь-хто може виконати admin // admin, потім renounce ); managedContract.transferOwnership(address(timelock)); 

Після деплою контракт Governor додається як proposer, admin роль renounce-иться. Контракт повністю під управлінням DAO.

Приклад налаштування для Arbitrum

Для Arbitrum параметри ті ж, але блоки генеруються швидше. Можна скоротити votingPeriod до 40320 блоків (~3 дні) при збереженні security.

// same contract, adjust votingPeriod to 40320 

Реєстрація в Tally: покроково

  1. Зайдіть на Tally та натисніть «Add DAO».
  2. Вкажіть адресу контракту Governor та мережу.
  3. Tally верифікує ABI та починає індексацію.
  4. Налаштуйте логотип, опис, соціальні посилання в адмін-панелі.

Час індексації — від кількох хвилин до години. Після цього DAO повністю функціональна.

Типові проблеми при інтеграції та їх вирішення

Одна з частих помилок — неправильний розрахунок кворуму. Важливо використовувати circulating supply, а не total supply, інакше кворум може бути недосяжним. Також не варто встановлювати нульовий votingDelay — це відкриває можливість маніпуляцій. Рекомендується мінімальний поріг пропозицій (0.1–1% від circulating supply), щоб уникнути спаму. Нарешті, переконайтеся, що TimelockController призначений власником усіх керованих контрактів. Для діагностики цих проблем ми використовуємо статичний аналіз (Slither, Mythril) та тестування на testnet.

Що входить в інтеграцію?

  • Деплой контракту Governor (OpenZeppelin або Compound) з кастомними параметрами
  • Налаштування токена ERC20Votes з делегуванням
  • Деплой TimelockController з правильними ролями
  • Реєстрація DAO в Tally, налаштування візуалу
  • Тестування на testnet (Goerli/Sepolia)
  • Документація з управління DAO для команди
  • Навчання: як створювати пропозиції, голосувати, делегувати
  • Підтримка протягом 2 тижнів після запуску

Замовте інтеграцію Tally — отримайте готове on-chain управління за 1-3 тижні. Зв'яжіться з нами для консультації щодо параметрів. Досвід 5+ років на ринку та 50+ успішних проектів гарантує якість.