Last active
October 29, 2021 12:54
-
-
Save rpaskin/6a7d01ab1d3de69e9db5f09f655023c8 to your computer and use it in GitHub Desktop.
Exercicio de criar um contrato de venda de pizza em solidity
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
// SPDX-License-Identifier: GPL-3.0 | |
pragma solidity >=0.7.0 <0.9.0; | |
contract Pizzaria { | |
uint public precoDaPizza = 1 ether; | |
address payable public comprador; | |
address payable public donoDaPizzaria; | |
constructor() { | |
donoDaPizzaria = payable(msg.sender); | |
} | |
function comprar() payable public { | |
// pagar | |
// dinheiro enviado deve ser igual ao preço | |
require (msg.value == precoDaPizza, "Nao enviado o preco certo, operacao cancelada"); | |
require (comprador == address(0x0), "Contrato ja utilizado"); | |
// if (msg.value > precoDaPizza){ | |
// // dar o troco | |
// uint troco = msg.value - precoDaPizza; | |
// // transferir de volta | |
// msg.sender.transfer(troco); | |
// } | |
// guardar o endereco do comprador | |
comprador = payable(msg.sender); | |
} | |
function resgatar() public { | |
// apenas o donoDaPizzaria | |
require(msg.sender == donoDaPizzaria); | |
// transferir saldo do contrato para o donoDaPizzaria | |
donoDaPizzaria.transfer(address(this).balance); | |
} | |
} |
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
title Pizza | |
actor dono | |
entity contratoDePizza | |
actor comprador | |
dono->contratoDePizza:deploy de um contrato de compra de pizza | |
contratoDePizza->dono:informa o endereço do contrato | |
dono->contratoDePizza:ativar o contrato | |
comprador->dono:pedir informações | |
dono->comprador:informa número do contrato, preço, etc. | |
alt se o contrato está ativo | |
comprador<->contratoDePizza:confirmar preço da pizza (opcional) | |
comprador->contratoDePizza:enviar ETH suficiente para a compra | |
contratoDePizza->contratoDePizza:guardar dados do comprador | |
dono<->contratoDePizza:pegar informações do comprador | |
dono<->contratoDePizza:resgatar saldo | |
end | |
comprador->contratoDePizza:avaliar serviço | |
dono->contratoDePizza:desativar o contrato | |
# use o site https://sequencediagram.org/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment