Repolode
TrustLevel

TrustLevel/ZK-Voting-App

Una app de votación en Cardano que protege la privacidad: los votantes prueban que pertenecen al grupo mediante pruebas de conocimiento cero y sus votos son anónimos.

Estrellas
5
Forks
4
Issues abiertos
0
Último commit
anteayer

¿Qué es?

ZK Voting App es una aplicación de votación basada en la blockchain de Cardano. Una persona organizadora crea un evento, invita a los participantes por correo electrónico y publica los contratos de votación en la cadena. Cada participante genera una identidad de Semaphore en el navegador y registra un compromiso público; luego emite su voto respaldado por una prueba de conocimiento cero Groth16. La prueba demuestra que el votante pertenece al grupo registrado e incluye un nullifier de un solo uso que impide votar más de una vez, por lo que no es posible vincular el voto emitido con el votante.

La app admite votación simple (una opción por persona) y ponderada (una cantidad fija de puntos que se distribuye entre las opciones). Los votantes no necesitan una wallet ni ADA, porque el backend crea y envía sus transacciones de voto. Los eventos pueden ejecutarse en Cardano Mainnet o en la testnet Preprod, y la persona organizadora elige la red al crear el evento. Los resultados pueden consultarse en la cadena una vez cerrado el periodo de votación.

El repositorio está organizado en módulos para los contratos inteligentes de Aiken, un backend de NestJS con almacenamiento en SQLite y LevelDB, un frontend de Next.js, un generador de transacciones y el módulo de pruebas ZK.

Funciones clave

  • 01Votación anónima mediante pruebas de conocimiento cero Groth16 basadas en Semaphore
  • 02Los nullifiers de un solo uso impiden votar más de una vez
  • 03Modalidades de votación simple y ponderada
  • 04Los votantes no necesitan una wallet ni ADA: el backend envía sus transacciones
  • 05Los resultados finales se pueden verificar públicamente en Cardano

Casos de uso

  • Realizar una votación vinculante y cerrada a un grupo, en la que las opciones elegidas por los participantes deben mantenerse privadas
  • Organizar votaciones de miembros de una entidad que quiera resultados en la cadena y a prueba de manipulaciones
  • Probar la votación anónima en la cadena sin costo en la testnet Preprod

Inicio rápido

  1. 1

    Instala todos los espacios de trabajo

    npm install
  2. 2

    Configura las variables de entorno (el backend necesita una clave de Blockfrost y una wallet relay con fondos)

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

    Inicia el backend en el puerto 3000

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

    Inicia el frontend en el puerto 3002

    cd src/frontend && npm run dev

Antes de usarlo

  • Para ejecutarlo localmente, necesitas una clave de API de Blockfrost y una wallet relay de Preprod con fondos.
  • En Mainnet, la persona organizadora paga unos 15 ADA más las comisiones, y se requiere un depósito de 1,3 ADA por votante.
  • La instalación puede fallar si no tienes una clave SSH para GitHub, a menos que antes configures la reescritura de la URL de git a HTTPS.

En colecciones

Temas

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

Preguntas frecuentes

¿Qué es ZK-Voting-App?
Una app de votación en Cardano que protege la privacidad: los votantes prueban que pertenecen al grupo mediante pruebas de conocimiento cero y sus votos son anónimos. ZK Voting App es una aplicación de votación basada en la blockchain de Cardano. Una persona organizadora crea un evento, invita a los participantes por correo electrónico y publica los contratos de votación en la cadena. Cada participante genera una identidad de Semaphore en el navegador y registra un compromiso público; luego emite su voto respaldado por una prueba de conocimiento cero Groth16. La prueba demuestra que el votante pertenece al grupo registrado e incluye un nullifier de un solo uso que impide votar más de una vez, por lo que no es posible vincular el voto emitido con el votante.
¿ZK-Voting-App es gratuito? ¿Qué licencia tiene?
ZK-Voting-App es open source bajo la licencia Apache-2.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿ZK-Voting-App sigue mantenido?
Mantenimiento activo. El último commit de ZK-Voting-App fue el 4 nov 2026.
¿Para qué puedo usar ZK-Voting-App?
Realizar una votación vinculante y cerrada a un grupo, en la que las opciones elegidas por los participantes deben mantenerse privadas Organizar votaciones de miembros de una entidad que quiera resultados en la cadena y a prueba de manipulaciones Probar la votación anónima en la cadena sin costo en la testnet Preprod
¿Cómo se instala ZK-Voting-App?
Instala todos los espacios de trabajo: npm install Configura las variables de entorno (el backend necesita una clave de Blockfrost y una wallet relay con fondos): cp src/backend/.env.example src/backend/.env && cp src/frontend/.env.example src/frontend/.env.local Inicia el backend en el puerto 3000: cd src/backend && npm run start:dev Inicia el frontend en el puerto 3002: cd src/frontend && npm run dev
¿Dónde consigo ZK-Voting-App?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/TrustLevel/ZK-Voting-App

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados