O que é a função call do Solidity?
Escrito por Alchemy
A linguagem de programação Solidity é usada principalmente para criar smart contracts na blockchain Ethereum. Este artigo vai cobrir todos os detalhes que você precisa saber sobre o que é a função call em Solidity.
O que é a função call em Solidity?
A função call** em Solidity é uma função de baixo nível usada por desenvolvedores para interagir com outros contratos.**
Ao construir um smart contract em Solidity, o método call deve ser usado sempre que você quiser interagir com outro contrato a partir do seu próprio contrato.
Calls também podem ser usadas para executar outras funções no smart contract destinatário, usando Ether fornecido pelo chamador para pagar a transação. A função call também tem a vantagem de retornar o status da transação como um booleano, com o valor de retorno enviado como uma variável.
O que é calldata?
Calldata é um tipo de armazenamento temporário, contendo os dados especificados nos argumentos de uma função. A diferença entre ele e memory, outro tipo de armazenamento temporário, é a imutabilidade de calldata—o que estiver armazenado em calldata não pode ser alterado.
Como funciona a função call em Solidity?
A função call em Solidity funciona pegando calldata, que pode ser zero no caso de uma transferência nativa de ETH, e executando esse calldata no destinatário pretendido com base no opcode CALL da EVM, de baixo nível.
Quando dados (ou seja, a função a ser chamada no smart contract destinatário) e gas são fornecidos, o método call é capaz de usar esses dois elementos para executar funções dentro de smart contracts.
Como usar o método call para enviar ether?
Como uma das suas funções Solidity, você pode usar o código abaixo na sua IDE Solidity de preferência e substituir address payable _to pelo endereço do destinatário.
Abaixo está um código que cria um contrato capaz de receber Ether de calls.
Qual a diferença entre call e delegatecall?
A diferença entre call e delegatecall é que delegatecall vai executar a função chamada como se o seu código fizesse inteiramente parte do smart contract que está fazendo a chamada. Já o método call vai chamar a função como ela é, como parte de outro smart contract. Na prática, isso significa que a função chamada vai usar o storage, msg.sender e msg.value do chamador.
Qual a diferença entre call e transfer?
Transfers têm um limite de gas fixo e serão canceladas em caso de falha. Calls têm um limite de gas customizável usando someAddress.call.value(ethAmount).gas(gasAmount)() no lugar da call usual, e retornarão false se a transação falhar.
O método transfer não é mais recomendado para uso. No entanto, historicamente, transfer era preferido porque usa um limite embutido de gas, o que ajudava a prevenir exploits de reentrância. O limite de gas imutável do método transfer também o tornava uma escolha melhor para cálculos em que você desejava definir um limite máximo de 2300 gas.
Como aprender mais sobre o método call em Solidity
Para continuar aprendendo sobre calls em Solidity, garanta sua vaga no curso intensivo gratuito e online de desenvolvimento em Solidity da Alchemy University. Este bootcamp de Ethereum de 7 semanas, assíncrono, foi reformulado após a aquisição pela Alchemy da ChainShot, empresa líder em educação sobre Ethereum.
Se os desenvolvedores forem novos em desenvolvimento de forma geral, o curso intensivo de JavaScript de 3 semanas da Alchemy University é um ótimo pré-requisito antes de começar um bootcamp de Ethereum.
Visões gerais relacionadas
Solidity3 de dezembro de 2025
As 6 melhores IDEs de Solidity para desenvolvedores (2026)
Conheça as melhores IDEs para desenvolvimento em Solidity.
Solidity19 de novembro de 2025
Otimização de gas em Solidity: 12 técnicas para deixar seus smart contracts mais baratos e eficientes
Quer escrever código melhor e reduzir suas taxas de gas?
Solidity13 de novembro de 2025
12 boas práticas de segurança para smart contracts em Solidity
Proteja seus smart contracts com essas dicas e ferramentas de segurança de especialistas.

Construa magia blockchain
A Alchemy combina os produtos e ferramentas de desenvolvimento Web3 mais poderosos com recursos, comunidade e suporte lendário.