Advertisement
Guest User

Lab_Block

a guest
Nov 12th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.61 KB | None | 0 0
  1. pragma solidity ^0.5.12;
  2. //Jose Campodonico
  3.  
  4. contract Votaciones {
  5.  
  6. address public owner;
  7. mapping(address => bool) private candidatos; // {}
  8. mapping(address => uint) public votos;
  9. mapping(address => uint) public status_votantes;
  10. enum status_votacion { Creado, Activo, Inactivo } status_votacion public status; //variable para conocer el estado del contrato/votacion
  11.  
  12. modifier onlyOwner {
  13. require(msg.sender == owner);
  14. _;
  15. }
  16.  
  17. modifier Status_Contrato (status_votacion _status) {
  18. require(status == _status);
  19. _;
  20. }
  21.  
  22. constructor() public {
  23. owner = msg.sender;
  24. status = status_votacion.Creado;
  25. }
  26.  
  27. function agregar_candidato(address _candidato) public Status_Contrato(status_votacion.Creado) onlyOwner {
  28. require(!candidatos[_candidato]); // Se requiere que no estΓ© activo el candidato.
  29. candidatos[_candidato] = true; // { _candidato: true }
  30. }
  31.  
  32. function activar_votacion() public Status_Contrato(status_votacion.Creado) onlyOwner {
  33. status = status_votacion.Activo;
  34. }
  35.  
  36. function votar_candidato(address _candidato) public Status_Contrato(status_votacion.Activo){
  37. require(status_votantes[msg.sender] < 2 && candidatos[_candidato]);
  38. status_votantes[msg.sender]++;
  39. votos[_candidato]++; // votos[_candidato] = votos[_candidato] + 1;
  40. }
  41.  
  42. function finalizar_votacion() public Status_Contrato(status_votacion.Activo) onlyOwner {
  43. status = status_votacion.Inactivo;
  44. }
  45. function consultar_candidato(address _candidato) public view returns (bool) {
  46. return candidatos[_candidato]; // { _candidato: true }
  47. }
  48.  
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement