-
Notifications
You must be signed in to change notification settings - Fork 36
/
nuclea-aula0602.sol
29 lines (24 loc) · 1023 Bytes
/
nuclea-aula0602.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/*
SPDX-License-Identifier: CC-BY-4.0
(c) Desenvolvido por Jeff Prestes
This work is licensed under a Creative Commons Attribution 4.0 International License.
*/
pragma solidity 0.8.19;
/// @author Jeff Prestes
/// @title Um exemplo de Faucet
contract Faucet {
mapping(address=>uint8) public atribuicoes;
uint8 valorASerAtribuido;
event AconteceuUmaAtribuicao(address paraQuem, uint8 quanto);
// @notice Fornece a quem chamar a transacao um valor
// @dev incrementa um no acumulador e atribuir o valor do acumulador a um endereco ethereum.
// @return valor atual do acumulador
function atribuirValor() public returns (uint256) {
require(atribuicoes[msg.sender]==0, "Sinto muito. Voce ja teve sua chance");
require(valorASerAtribuido < 256, "Sinto muito. Voce perdeu sua chance");
valorASerAtribuido++;
atribuicoes[msg.sender] = valorASerAtribuido;
emit AconteceuUmaAtribuicao(msg.sender, valorASerAtribuido);
return valorASerAtribuido;
}
}