Skip to content

Instantly share code, notes, and snippets.

@falehenrique
Created April 17, 2018 18:20
Show Gist options
  • Select an option

  • Save falehenrique/d2509918fca4150ec16fab91c2cc6b50 to your computer and use it in GitHub Desktop.

Select an option

Save falehenrique/d2509918fca4150ec16fab91c2cc6b50 to your computer and use it in GitHub Desktop.
Contrato de doações para evento FIA
pragma solidity ^0.4.18;
contract DoacaoEvento {
address public responsavel;
enum StatusDoacao{ABERTO, FECHADO, SACADO}
StatusDoacao public statusDoacao;
address public ong;
Doador[] public doadores;
event LogDoacaoRecebida(address doador, uint256 value);
event LogSaqueEfetuado(uint dataHora);
event LogOngInformada(address doador);
struct Doador {
address doador;
uint256 valor;
uint256 dataHora;
}
function DoacaoEvento() public {
responsavel = msg.sender;
statusDoacao = StatusDoacao.ABERTO;
}
modifier apenasResponsavel() {
require(msg.sender == responsavel);
_;
}
function informarOng(address _ong) public apenasResponsavel {
emit LogOngInformada(_ong);
ong = _ong;
}
function fecharDoacoes() public apenasResponsavel {
require(statusDoacao == StatusDoacao.ABERTO);
statusDoacao = StatusDoacao.FECHADO;
}
function abrirDoacoes() public apenasResponsavel {
statusDoacao = StatusDoacao.ABERTO;
}
function sacarDoacoes() public {
require(msg.sender == ong && address(this).balance > 0 && statusDoacao == StatusDoacao.FECHADO);
statusDoacao = StatusDoacao.SACADO;
emit LogSaqueEfetuado(block.timestamp);
msg.sender.transfer(address(this).balance);
}
// função callback
function() public payable {
require(msg.value > 0 && statusDoacao == StatusDoacao.ABERTO);
emit LogDoacaoRecebida(msg.sender, msg.value);
Doador memory d = Doador(msg.sender, msg.value, block.timestamp);
doadores.push(d);
}
}
@amauricarrillo
Copy link

Ao usar o código no remix ele solicita a versão mínima "pragma solidity ^0.5.1" e pede as seguintes alterações:

na linha 21 de "function DoacaoEvento() public {" para "constructor() public {"

e na linha 53 de "function() public payable {" para function() external payable {"

isso é por causa da nova versão do solidity ? e está correto ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment