Skip to content

Instantly share code, notes, and snippets.

@geonnave
Created July 27, 2022 01:20
Show Gist options
  • Save geonnave/9b3c52657cda2162bf0817996b83fef6 to your computer and use it in GitHub Desktop.
Save geonnave/9b3c52657cda2162bf0817996b83fef6 to your computer and use it in GitHub Desktop.
aula polichain smart contracts com o Rob
// 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