Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/SPECTR3R/BlockVote-DApp

Smart contracts for a voting DApp using blokchain and Near protocol.
https://github.com/SPECTR3R/BlockVote-DApp

assemblyscript blockchain dapps-development near smart-contracts typescript

Last synced: 2 months ago
JSON representation

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

Awesome Lists containing this project

README

        

# 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](https://www.justinmind.com/usernote/tests/68299055/68314322/68314380/index.html), 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.

```bash
near call incrementVotes '{"candidate":"amlo"}' --account-id
near view getVotes '{"candidate":"amlo"}' --account-id
near call recordUser '{"user":"jorge"}' --account-id
near view userDidParticipate '{"user":"jorge"}' --account-id
```

## Autores ✒️

- [Armando del Río](https://www.linkedin.com/in/adrio1992/)
- [Luis Yañez](https://www.linkedin.com/in/jorge-chavarin/)
- [Jorge Chavarín](https://github.com/lyanezca)

[contratos inteligentes]: https://docs.near.org/docs/develop/contracts/overview
[assemblyscript]: https://www.assemblyscript.org/
[node.js]: https://nodejs.org/en/download/package-manager/
[as-pect]: https://www.npmjs.com/package/@as-pect/cli
[justinmind]: https://www.justinmind.com/usernote/tests/68299055/68299921/68299923/index.html
[yarn documentation]: https://classic.yarnpkg.com/lang/en/docs/install/#windows-stable