Skip to content

Latest commit

 

History

History
44 lines (25 loc) · 1.95 KB

15.-funcoes-pagaveis-function-payable.md

File metadata and controls

44 lines (25 loc) · 1.95 KB
description
Para que um contrato possa receber Ether ou o Token nativo da Blockchain EVM que estiver sendo executado ele precisa ter funções payable e para enviar é necessário utilizar endereços do tipo payable.

17. Funções e Endereços pagáveis (payable)

Funções pagáveis.

Somente funções que NÃO sejam do tipo view podem receber Ether.

Enviando Ether para o contrato.

O parâmetro payable serve para que o contrato possa receber e manipular saldos. Lembrando que estamos falando Ether ou token nativo como BNB, MATIC entre outros e não de Tokens no formato ERC-20.

Consultando saldo do contrato.

Para saber qual o saldo do contrato em que está sendo executado a função utiliza-se a instrução built-in address(this).balance;

Payable como Parâmetro.

Anteriormente você viu que para contrato possa RECEBER Ether é preciso o parâmetro payable esteja presente no cabeçalho da função.

Para que o contrato possa ENVIAR ele precisa lidar com endereços do tipo payable. No exemplo abaixo inserimos esse parâmetro como instrução adicional ao endereço que será passado para função.

Endereços pagáveis.

No exemplo abaixo será transferido 1 ether que sairá do saldo do contrato para o endereço passado como parâmetro _quemrecebe _ para a função.

Já nesse caso, será uma transferência que irá para quem está chamando (msg.sender) a função do saque do contrato.

Há duas formas de fazer transferências: usando a função send() ou a função transfer() e a difença entre elas é que a função send() irá retornar true ou false e a função transfer() não retorna nada casoa transferência tenha acontecido e irá reverter toda a transação caso tenha falhado.