pragma solidity ^0.5.17; library SafeMath { //funcoes pure nao alteram nem consultam coisas na blockchain e sao gratuitas function sum(uint num1, uint num2) internal pure returns(uint){ uint num3 = num1+num2; require(num3 >=num1, "Erro de soma: Sum Overflow"); return num3; } function sub(uint num1, uint num2) internal pure returns(uint){ require(num2 <= num1, "Erro de Subtracao: Sub Underflow"); uint num3 = num1 - num2; return num3; } function prod(uint num1, uint num2) internal pure returns(uint){ if (num1 == 0){ return 0; } uint num3 = num1 * num2; require(num3 / num1 == num2, "Erro multiplicacao: Prod Overflow"); return num3; } function div(uint num1, uint num2) internal pure returns(uint){ uint num3 = num1 / num2; return num3; } } contract Ownable { address payable public owner; // variavei para enderecos que enviam ou recebem eth devem ser payable. //evento que pode ser disparado ao ser executada uma determinada tarefa do contrato. event OwnershipTranferred(address newOwner); // a funcao constructor, por fdefinicao, so e chamada uma vez, nao podendo ser alterada. constructor()public { owner = msg.sender; } //exige que o usuario seja o dono do contrato para executar a funcao que vier posterior. modifier onlyOwner() { require (msg.sender == owner, "You are not the owner!"); _; //executa o resto da funcao, ou seja, o que vier apos quando for chamado. } // essa so executada apos tere certeza que o usuario e o dono do contrato para poder executa-la. function transferOwnerShip(address payable newOwner) onlyOwner public{ owner = newOwner; emit OwnershipTranferred(owner); } } contract desafio_01 is Ownable{ using SafeMath for uint; string public retorno; // mapping (address => uint) public balances;//saldo da conta; //mapping (address => uint) public hasInteracted; //essa variavel recebe a quantidade de vezes em que houve interacao no contrato(modelo_2) function setNumber (uint myNumber) public payable{ require(myNumber <=10, "Number out of range"); require (msg.value == 25 finney, "Insufficient ETH sent."); if(myNumber > 5){ retorno = "maior que 5"; } else { retorno = "menor ou igual a 5";} } //podia ser implementada direto na funcao de cima, //mas prefiro uma funcao especifica para exibir a string. function getString() public view returns (string memory) { return retorno; } }