¿Hay alguna manera de permitir que el usuario vote por múltiples propuestas? Por ejemplo: el usuario A puede votar por las propuestas: P1, P2, P3, etc. Una vez que A ha votado por P1, no se le debe permitir votar por P1, pero puede votar por P2 y P3. Puedo redactar un contrato que muestre qué propuestas ha votado el candidato. ¡¡Alguien puede ayudar!!
Puede mantener la elegibilidad de los usuarios para votar por una propuesta en particular en una estructura como
mapping(uint => mapping(address => bool)) hasVoted;
// ^proposal IDs ^users ^already voted or not
mapping(uint => uint) votesCount;
y luego verificar si son elegibles para votar, aquí hay un ejemplo en Solidity:
modifier canVote(address user, uint proposal){
require(!hasVoted[proposal][user]);
_;
}
function vote(uint proposal)
public
canVote(msg.sender, proposal) //throw if user has already voted
{
hasVoted[proposal][msg.sender] = true; //make note of the fact he's voting now
votesCount[proposal]++;
//other voting logic you need
}
Tenga cuidado de utilizar un tipo adecuado para los ID de su propuesta, como uint8
o lo que sea que sea suficiente.
votesCount
la estructura y su uso. hasVoted
puede quedar igual.hasVoted
, porque un usuario puede votar por una propuesta solo una vez, sin importar qué candidato eligió (¿es así?)hasVoted
estructura de caso de uso y el modificador en este ejemplo siguen siendo los mismos.
Briomkez
henk
aib92
Utgarda
aib92