Biblioteca de JavaScript y WebAssembly para generar y verificar pruebas zkSNARK con Groth16, PLONK y FFLONK, en circuitos de circom.
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
Instala todos los espacios de trabajo
npm install - 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
Inicia el backend en el puerto 3000
cd src/backend && npm run start:dev - 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
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
Sistema operativo descentralizado y software de nodos que ejecuta la red Aleo para aplicaciones de conocimiento cero.
Una máquina virtual de conocimiento cero que genera pruebas de ejecución correcta para programas escritos en Rust u otros lenguajes compilados con LLVM.
Framework de TypeScript para crear circuitos de conocimiento cero y zkApps, con generación y verificación de pruebas en navegadores, Node o para Mina Protocol.
Pastebin con cifrado de extremo a extremo que se autodestruye: las notas se cifran en el navegador con AES-256-GCM y desaparecen tras una lectura o 24 horas.
Comparte contraseñas de un solo uso, claves API, texto y archivos cifrados mediante enlaces que se autodestruyen, con alojamiento propio y conocimiento cero.