Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/SPECTR3R/BlockVote-DApp
- Owner: SPECTR3R
- Created: 2021-11-04T21:43:37.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2021-11-07T06:39:23.000Z (about 3 years ago)
- Last Synced: 2024-07-29T16:58:25.368Z (5 months ago)
- Topics: assemblyscript, blockchain, dapps-development, near, smart-contracts, typescript
- Language: TypeScript
- Homepage:
- Size: 14.9 MB
- Stars: 1
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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.
## 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