/DAO-voting

Primary LanguageSolidity

Задание №1 - Token ERC-20

  1. Написать смарт-контракт по стандарту ERC-20.
  2. Протестировать контракт с полным покрытием тестов.
  3. Написать скрипт деплоя.
  4. Написать таски.
  5. Задокументировать контракт по формату NatSpec.

Задание №2 - DAO voting

Необходимо реализовать смарт контракт, который будет вызывать байт код функции по средством голосования пользователей.

Для участия в голосовании пользователям необходимо внести токены для голосования. Вывести токены с DAO пользователи могут в любой момент, при соблюдении определенных условий. Любой пользователь может предложить свое голосование. Для участия в голосовании пользователю необходимы токены, один токен один голос. Пользователь может участвовать в голосовании одни теми же токенами, то есть пользователь внес 100 токенов он может участвовать в голосовании №1 всеми 100 токенами и в голосовании №2 тоже всеми 100 токенами.

Финишировать голосование может любой пользователь по прошествии определенного количества времени. Пользователь может делегировать свои голоса другому участнику на определенное голосование.

Обязательный функционал:

  1. Депозит токенов
  2. Добавление нового голосования обязательные поля: • description - описание предложения; • recipient - адрес контракта на который будет отправлена транзакция. • byteCode - сигнатура функции
  3. Голосование за конкретное предложение
  4. Финиширование голосования => при удачном голосование должен произойти вызов сигнатуры функции. Голосование считается успешным если число проголосовавших было больше minimumQuorum и большинство проголосовало «ЗА». Также голосование можно завершить после того как пройдет 3 дня.
  5. Передача права голоса по конкретному голосованию.
  6. Вывод токенов с DAO возможен после то