Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

проект на 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-адрес, по которому он индентифицируется в государстве, по которому он проходит проверку на право избирать и быть избранным. Но в этом случае теряется тайна голосования - всем видно кто за кого проголосовал. Как этого можно избежать?
  • No labels