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