Repolode
TrustLevel

TrustLevel/ZK-Voting-App

Приложение для анонимного голосования в Cardano: участники подтверждают членство с помощью доказательств с нулевым разглашением, а голоса остаются конфиденциальными.

Звёзды
5
Форки
4
Открытые issues
0
Последний коммит
3 дня назад

Что это?

ZK Voting App — приложение для голосования на блокчейне Cardano. Организатор создаёт событие, приглашает участников по электронной почте и публикует смарт-контракты для голосования в блокчейне. Каждый участник генерирует в браузере идентификатор Semaphore и регистрирует публичный коммитмент, а затем голосует, приложив доказательство с нулевым разглашением Groth16. Доказательство подтверждает, что голосующий входит в зарегистрированную группу, и содержит одноразовый nullifier, который не позволяет проголосовать повторно. При этом связать отданный голос с голосующим невозможно.

Приложение поддерживает обычное голосование (один вариант на человека) и голосование с распределением баллов (фиксированное количество баллов распределяется между вариантами). Голосующим не нужны кошелёк и ADA: серверная часть формирует и отправляет транзакции с их голосами. События можно проводить в Cardano Mainnet или тестовой сети Preprod — организатор выбирает сеть при создании события. После окончания голосования результаты доступны в блокчейне для проверки.

Репозиторий разделён на модули: смарт-контракты Aiken, серверная часть на NestJS с хранилищами SQLite и LevelDB, фронтенд на Next.js, модуль формирования транзакций и модуль доказательств с нулевым разглашением.

Ключевые возможности

  • 01Анонимное голосование с помощью доказательств с нулевым разглашением Groth16 на базе Semaphore
  • 02Одноразовые nullifier не позволяют проголосовать повторно
  • 03Обычный режим голосования и голосование с распределением баллов
  • 04Голосующим не нужны кошелёк и ADA — серверная часть отправляет транзакции с их голосами
  • 05Итоговые результаты можно публично проверить в Cardano

Сценарии использования

  • Проведение обязательного голосования с ограниченным кругом участников, при котором их выбор должен оставаться конфиденциальным
  • Организация голосования среди членов организации, которой нужны результаты в блокчейне с защитой от подделки
  • Знакомство с анонимным голосованием в блокчейне в тестовой сети Preprod без затрат

Быстрый старт

  1. 1

    Установите все рабочие пространства

    npm install
  2. 2

    Настройте переменные окружения (для backend нужны ключ Blockfrost и пополненный relay-кошелёк)

    cp src/backend/.env.example src/backend/.env && cp src/frontend/.env.example src/frontend/.env.local
  3. 3

    Запустите backend на порту 3000

    cd src/backend && npm run start:dev
  4. 4

    Запустите frontend на порту 3002

    cd src/frontend && npm run dev

Что важно знать

  • Для локального запуска нужны API-ключ Blockfrost и пополненный relay-кошелёк Preprod.
  • В Mainnet организатор платит около 15 ADA плюс комиссии, а за каждого избирателя требуется депозит в размере 1,3 ADA.
  • Установка может завершиться с ошибкой, если нет SSH-ключа для GitHub и заранее не настроена замена URL git на HTTPS.

В подборках

Темы

#zero-knowledge#cardano#blockchain#voting#privacy#semaphore#groth16#typescript

Частые вопросы

Что такое ZK-Voting-App?
Приложение для анонимного голосования в Cardano: участники подтверждают членство с помощью доказательств с нулевым разглашением, а голоса остаются конфиденциальными. ZK Voting App — приложение для голосования на блокчейне Cardano. Организатор создаёт событие, приглашает участников по электронной почте и публикует смарт-контракты для голосования в блокчейне. Каждый участник генерирует в браузере идентификатор Semaphore и регистрирует публичный коммитмент, а затем голосует, приложив доказательство с нулевым разглашением Groth16. Доказательство подтверждает, что голосующий входит в зарегистрированную группу, и содержит одноразовый nullifier, который не позволяет проголосовать повторно. При этом связать отданный голос с голосующим невозможно.
ZK-Voting-App можно использовать бесплатно? Какая у него лицензия?
ZK-Voting-App распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
ZK-Voting-App всё ещё поддерживается?
Активно поддерживается. Последний коммит в ZK-Voting-App — 4 нояб. 2026 г..
Для чего можно использовать ZK-Voting-App?
Проведение обязательного голосования с ограниченным кругом участников, при котором их выбор должен оставаться конфиденциальным Организация голосования среди членов организации, которой нужны результаты в блокчейне с защитой от подделки Знакомство с анонимным голосованием в блокчейне в тестовой сети Preprod без затрат
Как установить ZK-Voting-App?
Установите все рабочие пространства: npm install Настройте переменные окружения (для backend нужны ключ Blockfrost и пополненный relay-кошелёк): cp src/backend/.env.example src/backend/.env && cp src/frontend/.env.example src/frontend/.env.local Запустите backend на порту 3000: cd src/backend && npm run start:dev Запустите frontend на порту 3002: cd src/frontend && npm run dev
Где скачать ZK-Voting-App?
Исходный код и инструкции по установке — на GitHub: https://github.com/TrustLevel/ZK-Voting-App

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Библиотека на JavaScript и WebAssembly для создания и проверки zkSNARK-доказательств с Groth16, PLONK и FFLONK, работающая с циркуитами circom.

2 тыс.+2 за неделю489JavaScriptGPL-3.0Обновлён в прошлом месяце

Виртуальная машина с нулевым разглашением, которая генерирует доказательства корректного выполнения программ на Rust и других языках, компилируемых через LLVM.

1,8 тыс.+6 за неделю722RustApache-2.0Активно поддерживаетсяОбновлён позавчера

Самостоятельно размещаемый сервис для обмена одноразовыми паролями, API-ключами, текстом и зашифрованными файлами по самоуничтожающимся ссылкам с шифрованием с нулевым разглашением.

88+4 за неделю18TypeScriptMITАктивно поддерживаетсяОбновлён позавчера