SolidityLabs/solidity-withdraw.sol

46 lines
1.6 KiB
Solidity

/**
Saques
No capítulo anterior, aprendemos como enviar Ether para um contrato. Então o que acontece após o envio?
Após você enviar Ether para um contrato, este fica guardado na conta Ethereum do contrato,
e ficará preso no contrato - ao menos que você adicione uma função para sacar o Ether do contrato.
Você pode escrever a função para sacar o Ether do contrato conforme exemplo:
*/
contract GetPaid is Ownable {
function withdraw() external onlyOwner {
owner.transfer(this.balance);
}
}
/**
Note que usamos owner e onlyOwner do contrato Ownable, assumindo que foi importado.
Você pode transferir Ether para um endereço usando a função transfer, e this.balance irá retornar o
saldo total guardado no contrato.
Então se 100 usuários pagarem 1 Ether para nos contrato, this.balance irá ser igual a 100 Ether.
Você pode usar transfer para enviar fundos para qualquer endereço Ethereum.
Por exemplo, você poderia ter uma função que transfere Ether de volta para o msg.sender se eles pagarem à mais por um item:
*/
uint itemFee = 0.001 ether;
msg.sender.transfer(msg.value - itemFee);
/**
Ou dentro de um contrato com um comprador e um vendedor, você poderia salvar o endereço do
vendedor em memória permanente (storage), então quando alguém comprar o item deste vendedor,
transfira para o mesmo o custo que o comprador pagou: seller.transfer(msg.value).
Estes são alguns exemplos que fazem a programação em Ethereum tão legal -
você pode ter marketplaces decentralizados como este que não são controlados por ninguém.
*/