Last active
August 26, 2022 16:53
-
-
Save rpaskin/5c1436555abdd1d2a52010d6407f1884 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
// SPDX-License-Identifier: GPL-3.0 | |
pragma solidity >=0.7.0 <0.9.0; | |
// @title Contrato para votar no melhor sanduíche | |
contract Votoiche { | |
// quem votou em qual grupo | |
mapping(address => uint8) public voto; | |
// número de votos de cada grupo | |
mapping(uint8 => uint) public numeroDeVotos; | |
// numero de grupos participantes | |
uint8 public numeroDeGrupos; | |
// data/hora inicial da votação | |
uint public quandoComecou; | |
// data/hora final para a votação | |
uint public quandoAcaba; | |
uint public totalDeVotos; | |
uint public maiorNumeroDeVotos; | |
uint8 public grupoVencedor; | |
constructor(uint8 _numeroDeGrupos, uint _timeLimitMinutes) { | |
numeroDeGrupos = _numeroDeGrupos; | |
quandoComecou = block.timestamp; | |
quandoAcaba = quandoComecou + (_timeLimitMinutes * 1 minutes); | |
} | |
function votar(uint8 _emQueGrupo) external { | |
require(_emQueGrupo > 0 && _emQueGrupo <= numeroDeGrupos, "Grupo invalido"); | |
require(block.timestamp < quandoAcaba, "Votacao encerrada"); | |
require(voto[msg.sender] == 0, "Voce ja votou"); | |
// registra o voto | |
voto[msg.sender] = _emQueGrupo; | |
// aumenta o numero de votos | |
totalDeVotos++; | |
numeroDeVotos[_emQueGrupo]++; | |
if (numeroDeVotos[_emQueGrupo] > maiorNumeroDeVotos) { | |
maiorNumeroDeVotos = numeroDeVotos[_emQueGrupo]; | |
grupoVencedor = _emQueGrupo; | |
} | |
} | |
} | |
// https://docs.soliditylang.org/en/v0.8.15/solidity-by-example.html |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Corrigido bug no require de numero de grupo na hora da votação