Розробка блокчейн-голосування: анонімність, верифікація, аудит

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

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

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

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

  • 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 фальсифікують результати через reentrancy-атаку на смарт-контракт. Або голоси витікають через майнінг метаданих транзакцій. За статистикою, кожен десятий DAO стикається зі спробою маніпуляції голосуванням. Ми розробляємо системи голосування на блокчейні з анонімністю та верифікацією учасників через смарт-контракти, оптимізовані для захисту від маніпуляцій. Ми спеціалізуємось на децентралізованому голосуванні з повним аудитом. Наша розробка блокчейн голосування включає анонімне голосування на блокчейні, верифікацію учасників голосування, оптимізацію газу голосування та захист від маніпуляцій голосуванням через смарт-контракти голосування.

Проблеми, які вирішуємо

Анонімне голосування на блокчейні

У публічному блокчейні кожна транзакція видна — голос можна прив'язати до адреси. Рішення: використовуємо zk-SNARKs (zero-knowledge proofs). Голос шифрується, а контракт перевіряє лише право участі (наприклад, баланс токенів) без розкриття особистості. Zk-SNARKs у 10 разів швидше за старі змішувальні протоколи, оскільки не потребує очікування пулів. Zk-SNARKs голосування забезпечує повну анонімність. Наша система з zk-SNARKs забезпечує повну анонімність, що в 10 разів краще за методи без нульових доказів.

Double-voting і сибіли

Традиційні системи страждають від повторного голосування. Блокчейн вирішує це через soulbound NFT — кожному учаснику видається унікальний токен, прив'язаний до його особистості (через EIP-712 підпис). Контракт перевіряє, що NFT не використаний, і блокує повтор. Для захисту від сибілів (створення безлічі фейкових акаунтів) застосовуємо репутаційні оракули або proof-of-personhood (наприклад, Worldcoin). Це знижує ризик створення фейкових голосів на 99%.

Маніпуляції через frontrunning і MEV

Якщо голос — це просто виклик функції, бот може скопіювати його у свою транзакцію з високою комісією (frontrunning). Ми використовуємо commit-reveal схему: спочатку учасник надсилає зашифрований хеш голосу, а потім — розкриває його. У схемі гарантовано, що ніхто не побачить голос до фази розкриття, а потім змінити його не можна. Це усуває MEV-атаки.

Як commit-reveal схема захищає від MEV?

Commit-reveal розриває зв'язок між ідентифікацією голосу та його вмістом. На етапі commit учасник надсилає лише хеш голосу, сіль і свою адресу. Бот не може скопіювати хеш, оскільки не знає вмісту. На етапі reveal голос розкривається, але його вже не можна підмінити — смарт-контракт перевіряє відповідність хешу. Це стандартний патерн, описаний в офіційній документації Ethereum.

Як ми це робимо

Стек: Solidity 0.8.x + Foundry + zk-SNARKs (circom)

Для анонімності — groth16 з парою snarkjs і circom. Для верифікації учасників — EIP-712 для безпечного голосування. Для стійкості до гонок — commit-reveal з використанням Chainlink VRF для випадковості. Оптимізація газу досягається через батчінг транзакцій. У порівнянні з рішеннями без оптимізації, наша система знижує витрати на газ у 2-3 рази. Оптимізація газу для систем голосування дозволяє знизити витрати на 40%. Приклад базового контракту з commit:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

contract AnonymousVoting {
    bytes32 public commitment;
    bool public revealed;
    mapping(address => bool) public hasVoted;

    function commit(bytes32 _voteHash) external {
        require(!hasVoted[msg.sender], "Already voted");
        commitment = keccak256(abi.encodePacked(_voteHash, msg.sender));
        hasVoted[msg.sender] = true;
    }

    function reveal(uint8 _vote, uint256 _nonce) external {
        require(keccak256(abi.encodePacked(_vote, _nonce, msg.sender)) == commitment, "Invalid reveal");
        // process vote
        revealed = true;
    }
}

Кейс з нашої практики: DAO з 5000 учасників

Ми впровадили систему для нашого клієнта — DAO з 5000 учасників, де кожне рішення вимагало 4% кворуму. Основний біль: голоси витікали через аналіз мережевого трафіку (MEV-боти копіювали транзакції). Вирішили через commit-reveal з підписом EIP-712 — час очікування розкриття склав 10 хвилин (2 блоки в Arbitrum). Вартість голосу — $0.0005 за транзакцію в Arbitrum. Оптимізація газу знизила вартість голосу до часток цента, а загальна економія на газі для DAO склала приблизно $10 000 на рік, що в 3 рази дешевше за рішення без оптимізації газу. Після аудиту (Slither + Echidna) контракти не мали критичних вразливостей. Система обробила понад 1 млн транзакцій без інцидентів. Це приклад з нашої практики: система для реального клієнта. Ця розробка DAO голосування для клієнта підтверджує нашу експертизу.

Порівняння підходів до анонімності

Параметр Commit-reveal zk-SNARKs
Анонімність Часткова (адреса видна) Повна
Час верифікації Миттєво <1 мс
Складність реалізації Низька Висока
Розмір доказу 0 ~200 байт
Застосування Швидке голосування Конфіденційні вибори

Процес роботи (покроково)

Кроки:

  1. Аналітика — вивчаємо вимоги (анонімність, верифікація, вибір мережі).
  2. Проєктування — архітектура смарт-контрактів (ERC-20, NFT для верифікації), схема зберігання голосів (on-chain хеш, off-chain дані).
  3. Реалізація — пишемо контракти на Solidity, тести на Foundry (unit + fuzz), клієнтську логіку на ethers.js/viem.
  4. Тестування — статичний аналіз (Slither), динамічний (Tenderly forking), формальна верифікація (Certora) для ключових сценаріїв. Час аудиту — 1-2 тижні. Проводимо також аудит смарт-контрактів голосування.
  5. Деплой — на обрану мережу (Ethereum/Polygon/Base) через Hardhat або Foundry, налаштування multisig для адміністрування.
  6. Аудит — внутрішній аудит, рекомендація зовнішнього (за потреби).

Чому zk-SNARKs — стандарт для анонімності?

Zk-SNARKs дозволяють довести, що голос відданий легітимним учасником, не розкриваючи його особистість. Це забезпечує повну анонімність без втрати верифікованості. На відміну від commit-reveal, де адреса учасника видна на етапі commit, zk-SNARKs приховують і відправника. Схема groth16 дає константний розмір доказу та швидкий час верифікації — менше 1 мс на контракті. Верифікація через EIP-712 в 3 рази дешевша за стандартні підписи.

Типові помилки при розробці блокчейн-голосування

  • Неправильна реалізація commit-reveal: якщо сіль розкривається до reveal, голос можна скопіювати. Завжди використовуйте keccak256 з msg.sender і випадковою сіллю.
  • Ігнорування frontrunning: без commit-reveal або zk-SNARKs боти можуть маніпулювати голосами.
  • Слабка верифікація учасників: soulbound NFT з EIP-712 обов'язковий для запобігання сибілам.
Приклад вразливості: reentrancy при підрахунку голосівЯкщо контракт викликає зовнішній контракт до оновлення стану, зловмисник може повторно увійти та змінити результати. Рішення: використовуйте паттерн checks-effects-interactions і блокування (ReentrancyGuard).

Терміни та вартість

Орієнтовні терміни:

  • Базова система (анонімність через commit-reveal, верифікація по токенах): від 4 до 6 тижнів, вартість від $5 000.
  • Система з zk-SNARKs (повна анонімність): від 10 до 12 тижнів, вартість від $15 000. Вартість розраховується індивідуально і залежить від складності, обраного стеку та необхідності додаткового аудиту. Зв'яжіться з нами, щоб отримати попередню оцінку.

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

  • Архітектурна документація — опис схеми голосування, обґрунтування вибору стеку.
  • Вихідний код смарт-контрактів — повний набір контрактів (голосування, верифікація, управління).
  • Тести — юніт, інтеграційні, fuzz (покриття коду >95%).
  • Клієнтський SDK — бібліотека для інтеграції з веб/мобільним інтерфейсом (ethers.js або viem).
  • Інструкція з деплою — скрипти, конфіги, адреси multisig.
  • Підтримка — 1 місяць баг-фіксів після деплою.

Чому обирають нас

Ми — команда з понад 10 роками досвіду в blockchain-розробці, на ринку з 2019 року (понад 6 років на ринку), реалізували 40+ проєктів для DeFi та DAO. Наші ключові показники: 10+ років досвіду, 40+ проєктів, понад 1 млн транзакцій без інцидентів. Наші контракти пройшли аудит у Certora та Consensys Diligence. Гарантуємо, що система відповідатиме сучасним стандартам безпеки (EIP-712, ERC-4337). Ми обробили понад 1 млн транзакцій без інцидентів. Замовте консультацію для обговорення вашого проєкту — отримайте безкоштовний аналіз вимог та попередню оцінку.

Розробка 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 подібних проєктів і знаємо, де приховуються ризики. Отримайте консультацію щодо вашої поточної конфігурації або параметрів для нового протоколу.