Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
проект на 1-2 человек
Парламент одной из стран решил изменить законодательство и разрешить возможность проводить выборы в электронном формате с использованием самых современных Blockchain технологий. Основная задача - обеспечить прозрачность и невозможность подделки результатов голосования и самих выборов.
Один из крупных городов страны собирается провести выборы мэра с помощью нового закона. Мэр выбирается простым большинством голосов при условии преодоления порога минимальной явки жителей города.
Требуется разработать прототип системы на Ethereum, чтобы доказать работоспособность идеи.
Сценарии
  1. Инициация выборов: определяет момент начала процесса регистрации кандидатов, а также общее кол-во жителей и процент минимальной явки
  2. Регистрация кандидатов в мэры города: каждый гражданин страны может зарегистрировать свою кандидатуру в мэры
  3. Завершение регистрации кандидатов. Определяет момент, после которого  список кандидатов фиксируется и начинается голосование
  4. Голосование: каждый гражданин, проживающий в городе N может проголосовать за одного из кандидатов
  5. Завершение голосования: фиксация результатов голосования
  6. Формирование отчета о результатах голосования: Признано ли голосование действительным (достигнут ли порог явки) и список кандидатов с процентом полученных голосов, отсортированный по убыванию кол-ва голосов.
Контракт Elections:
  1. конструктор контракта получает на вход кол-во жителей и процент минимальной явки
  2. метод registerCandidate() регистрирует кандидата (ether адрес кандидата, имя)
  3. метод startVoting() запрещает регистрацию кандидатов и начинает принимать результаты голосования
  4. метод vote() регистрирует голос за кандидата (номер кандидата, ether адрес гражданина). с одного адреса можно проголосовать только один раз.
  5. метод stopVoting() останавливает голосование
  6. генерация отчета по данным контракта
За счет того, что все данные о голосовании хранятся в распределенной цепочке блоков ethereum, эти данные общедоступны (прозрачность) и их невозможно изменить или подделать. Единственной логикой не в смарт контракте является отчет, поэтому он должен брать данные из контрактов максимально подготовленные (посчитанные), чтобы избежать неоднозначности или махинаций при генерации отчета.
Предлагаемый план работ:
Проект может выполняться 1-2 студентами.
Фаза 1. Уточнение требований и проектирование - совместное обсуждение, вопросы преподавателю. Результат: зафиксированные интерфейсы контракта, структуры данных и продуманная логика работы отчета.
Фаза 2. Параллельная разработка и тестирование логики контракта.
  1. регистрация кандидатов
  2. регистрация голосов
  3. жизненный цикл (статус голосования)
Фаза 3. Заполнение данными, тестирование контракта, разработка отчета
На обсуждение: Описанная выше простая модель предполагает, что у каждого гражданина есть ether-адрес, по которому он индентифицируется в государстве, по которому он проходит проверку на право избирать и быть избранным. Но в этом случае теряется тайна голосования - всем видно кто за кого проголосовал. Как этого можно избежать?