Este proyecto es una DApp de votación parlamentaria que utiliza Ethereum Sepolia, WalletConnect y una base de datos MySQL para gestionar votaciones, votos y resultados de manera segura y transparente.
- Autenticación y firma con WalletConnect (MetaMask, Trust Wallet, etc.)
- Gestión de votaciones por presidentes
- Votación por diputados con firma digital
- Resultados almacenados en blockchain y consultables públicamente
- Backend en Node.js + Express + MySQL
- Contrato inteligente en Solidity
- frontend: Aplicación React (interfaz de usuario)
- backend: Servidor Node.js/Express (API REST y lógica de negocio)
- voting-contract: Contrato inteligente Solidity y scripts de despliegue
- Node.js y npm
- MySQL
- Una wallet compatible con WalletConnect (MetaMask, Trust Wallet, etc.)
- Acceso a un nodo Sepolia (Infura, Alchemy, Chainstack...)
git clone https://github.com/tuusuario/vote-system.git
cd vote-system- Crea la base de datos y las tablas necesarias (
votes,vote_records,seats,users, etc.) - Ajusta los datos de conexión en el archivo
.envdel backend
cd backend
npm install
cd ../frontend
npm install
cd ../voting-contract
npm installCrea un archivo .env en la carpeta backend con:
PORT=3000
SEPOLIA_PRIVATE_KEY=tu_clave_privada
SEPOLIA_RPC_URL=tu_url_rpc_sepolia
-
Edita
scripts/deploy.jssi necesitas pasar parámetros al constructor. -
Ejecuta el despliegue:
cd voting-contract npx hardhat run scripts/deploy.js --network sepolia -
Copia la dirección del contrato desplegado y actualízala en el backend.
# En /backend
npm start
# En /frontend
npm start- Conecta tu wallet mediante WalletConnect en la interfaz.
- Presidentes pueden crear y cerrar votaciones (requiere firma).
- Diputados pueden votar desde su escaño (requiere firma).
- Los resultados se almacenan en blockchain y pueden consultarse públicamente.
- Permite autenticación y firma segura sin contraseñas.
- Garantiza que solo los usuarios autorizados puedan votar o gestionar votaciones.
- Compatible con múltiples wallets y dispositivos.