Skip to content

Instantly share code, notes, and snippets.

@ernestognw
Created January 10, 2019 00:18
Show Gist options
  • Save ernestognw/cfaa5b9cdf5275d6a11ad9cc977ff88c to your computer and use it in GitHub Desktop.
Save ernestognw/cfaa5b9cdf5275d6a11ad9cc977ff88c to your computer and use it in GitHub Desktop.
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