Skip to content
 
 

Repository files navigation

Конечно! 🔥
Я подготовил для тебя аккуратную и подробную документацию по проекту – прямо как для сдачи проекта или размещения на GitHub.

Вот начальная версия документации:


📄 DeFi Voting DApp — Документация

📚 Описание проекта

DeFi Voting DApp — это децентрализованное приложение для проведения честных и прозрачных голосований на блокчейне.
Пользователи используют токены VOTE в качестве веса своих голосов. Больше токенов — больший вес голоса.

🔥 Основные возможности:

  • Регистрация предложений с множественными вариантами.
  • Голосование токенами за выбранные варианты.
  • Автоматическое определение победителя после завершения голосования.
  • Только владелец может создавать предложения и завершать голосование.

⚙️ Структура проекта

Контракты (contracts/):

  • VoteToken.sol — контракт ERC20 токена VOTE.
  • Voting.sol — контракт голосования:
    • Позволяет создавать предложения с вариантами.
    • Принимает голоса от пользователей.
    • Подводит итоги.

Скрипты (scripts/):

  • deploy.js — деплой токена и голосования на сеть (Sepolia, или другая выбранная сеть).

Фронтенд (src/):

  • App.js — подключение кошелька, взаимодействие с контрактами.
  • App.css — стилизация интерфейса.

📜 Описание контрактов

VoteToken.sol

  • Стандартный токен ERC20 (openzeppelin библиотека).
  • Название токена: VoteToken.
  • Символ токена: VOTE.
  • Начальная эмиссия: 1 000 000 токенов.
constructor(uint256 initialSupply) ERC20("VoteToken", "VOTE") {
    _mint(msg.sender, initialSupply);
}

Voting.sol

  • Хранит все предложения и варианты.
  • Структуры:
    • Option: название варианта + число голосов.
    • Proposal: название предложения + список вариантов.
  • Функции:
    • addProposal(name, options) — создать предложение (только владелец).
    • vote(proposalId, optionId, amount) — проголосовать токенами за вариант.
    • endVoting() — завершить голосование.
    • getProposals() — получить все предложения и текущие голоса.
    • getWinner() — определить победителя.

Порядок запуска

1. Создайте файл .env на основе .env.example

2. Установить зависимости

npm install

3. Компиляция контрактов

npx hardhat compile

4. Деплой контрактов

npx hardhat run scripts/deploy.js --network sepolia

После деплоя скопировать новые адреса токенов и контрактов в App.js.


Описание интерфейса

На главной странице:

  • Создание предложения:

    • Ввести название.
    • Добавить варианты.
    • Отправить создание в блокчейн.
  • Голосование:

    • Выбрать предложение.
    • Выбрать вариант.
    • Ввести количество токенов для голосования.
  • Итоги:

    • Кнопка "Посмотреть победителя" — когда голосование завершено.

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages