Created
April 17, 2018 18:20
-
-
Save falehenrique/d2509918fca4150ec16fab91c2cc6b50 to your computer and use it in GitHub Desktop.
Contrato de doações para evento FIA
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
| 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); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 ?