Created
January 10, 2019 00:18
-
-
Save ernestognw/cfaa5b9cdf5275d6a11ad9cc977ff88c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pragma solidity ^0.5.1; | |
contract Votacion { | |
mapping (bytes32 => datosDelCantidato) public candidatos; // mapping de nombres de candidato a datos de candidato | |
struct datosDelCantidato { | |
uint votos; // Conteo de votos | |
bool valid; // Para saber si es valido | |
} | |
// El contrato comienza con la lista de candidatos | |
constructor(bytes32[] memory nombreCandidatos) public{ | |
for(uint i = 0; i < nombreCandidatos.length; i++) { | |
candidatos[nombreCandidatos[i]].valid = true; | |
candidatos[nombreCandidatos[i]].votos = 0; | |
} | |
} | |
// Numero total de votos recibidos por un candidato | |
function votosTotales(bytes32 candidato) view public returns (uint) { | |
require(candidatoEsValido(candidato)); | |
return candidatos[candidato].votos; | |
} | |
// Incrementa en 1 el numero de votos de un candidato | |
function votar(bytes32 candidato) public { | |
require(candidatoEsValido(candidato)); | |
candidatos[candidato].votos += 1; | |
} | |
// Comprueba que un candidato existe | |
function candidatoEsValido(bytes32 candidato) view public returns (bool) { | |
return (candidatos[candidato].valid); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment