Address Payable
A distinção entre address
e address payable
é uma característica importante em Solidity para melhorar a segurança e clareza do código, garantindo que apenas os endereços explicitamente marcados possam manipular e receber Ether.
Address
Uma variável do tipo address
pode armazenar um endereço Ethereum de 20 bytes. Esse tipo é usado para representar endereços de contratos ou endereços externos (contas de usuário) dentro de contratos inteligentes. No entanto, uma variável do tipo address
por si só não pode receber Ether diretamente por meio de transações de contrato porque não possui o modificador payable
.
Address payable
Um endereço address payable
, por outro lado, é um endereço especial que pode receber Ether. Ao exigir que um endereço seja explicitamente marcado como payable
, Solidity garante que apenas os endereços destinados a manipular Ether possam fazer isso, evitando assim transferências acidentais ou não autorizadas de fundos.
Como Converter um address para address payable
Em alguns casos, pode ser necessário converter um address
em address payable
. Isso pode ser feito usando a conversão explícita em Solidity, como mostrado abaixo:
Esse mecanismo de conversão é seguro e segue as práticas recomendadas de programação em Solidity, garantindo que apenas os endereços que o desenvolvedor deseja que sejam payable
possam receber Ether.
Uso de address e address payable
address
: Utilizado para a maioria das interações que não envolvem transferências de Ether, como consulta de saldos de tokens ERC-20 ou interação com contratos que não exigem o envio de Ether.address payable
: Necessário quando se deseja enviar Ether para um endereço a partir de um contrato, utilizando métodos comotransfer
,send
, ou chamadas de baixo nível.
Last updated