Created
July 27, 2022 01:20
-
-
Save geonnave/9b3c52657cda2162bf0817996b83fef6 to your computer and use it in GitHub Desktop.
aula polichain smart contracts com o Rob
This file contains 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
// SPDX-License-Identifier: UNLICENSED | |
pragma solidity 0.8.6; | |
// cofre, que o dono define quem é a pessoa que pode sacar, e em qual data | |
contract Inventario { | |
uint256 public dataSaque; | |
address payable public herdeiro; | |
address public dono; | |
constructor(uint data, address payable _herdeiro) { | |
dataSaque = data; | |
herdeiro = _herdeiro; | |
dono = msg.sender; | |
} | |
function deposito() public payable { | |
// require(msg.sender == dono, "nao eh o endereco esperado"); // apenas exemplo | |
// não precisaria ter essa função, já que o contrato tem um endereço e pode receber ether | |
// mesmo assim mantemos ela por fins didáticos... | |
} | |
function saque(uint256 valor) public payable { | |
require(msg.sender == herdeiro, "voce nao eh o herdeiro"); | |
require(block.timestamp > dataSaque, "ainda nao esta na hora do saque"); | |
require(valor < saldo(), "valor nao suficiente"); | |
herdeiro.transfer(valor); | |
} | |
function saldo() public view returns(uint) { | |
return address(this).balance; | |
} | |
function blocoAtual() public view returns(uint) { | |
return block.timestamp; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment