Skip to content

Smart contracts for a voting DApp using blokchain and Near protocol.

Notifications You must be signed in to change notification settings

SPECTR3R/BlockVote-DApp

Repository files navigation

BlockVote - DApp

Paquete de Contratos Inteligentes escritos en AssemblyScript para un sistema de votación online usando blockchain.

El objetivo de esta aplicación es crear un sistema de votación simple y seguro. Se usa NEAR como protocolo de blockchain.

Prototipo

Puedes acceder al prototipo de la aplicacion en este enlace, o descarga la aplicación justinmind y abre en ella el archivo blockVote.vp de este repositorio.

prototipe screen text

Instalación

  • Clona este repo, antes de compilar el código, necesitarás instalar Node.js ≥ 12
  • En caso de ser necesario, instala yarn vía npm: npm install --global yarn.
  • Ejecuta yarn desde el directorio raiz del repo de la aplicación.

Contratos inteligentes

Para este proyecto desarrollamos 4 contratos inteligentes para satisacer la logica de negocio, el código se encuentra en ../assembly/index.ts. Los contratos son:

  1. incrementVotes: Incrementa el voto de un candidato.
  2. getVotes: Obtiene los votos de un usucandidatoario
  3. recordUser: Registra que un usuario ha votado.
  4. userDidParticipate: Verifica si un usuario ya votó.

Ejecutando las pruebas ⚙️

  1. Tests: El código de pruebas se encuentra en ../assembly/__tests__/main.spec.ts.
  2. Primero compila el paquete usando yarn asb.
  3. Después ejecuta yarn test para correr los tests. Esto corre las pruebas estándar de AssemblyScript tests usando as-pect.

Analizando las pruebas 🔩

  1. Se verifica primero que nadie haya votando por un candidato.
  2. Se extrae la cantidad de votos de un candidato y se aumentan los votos en una unidad.
  3. Se verifica que un usuario no ha votado.
  4. Se verifica que un usuario ha votado.

Despliegue 📦

  1. Desde la raíz del proyecto, deployar el paquete con near dev-deploy build/release/votescontract.wasm.
  2. Copiar el accountIdy sustituirlo en los siguientes comandos para probar el funcionamiento de los contratos.
near call <accountId> incrementVotes '{"candidate":"amlo"}' --account-id <accountId>
near view <accountId> getVotes '{"candidate":"amlo"}' --account-id <accountId>
near call <accountId> recordUser '{"user":"jorge"}' --account-id <accountId>
near view <accountId> userDidParticipate '{"user":"jorge"}' --account-id <accountId>

Autores ✒️

About

Smart contracts for a voting DApp using blokchain and Near protocol.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published