WEB3DEV

Cover image for Solidity - Transferência vs Envio vs Função de chamada
Dimitris Carvalho Calixto
Dimitris Carvalho Calixto

Posted on • Atualizado em

Solidity - Transferência vs Envio vs Função de chamada

Esse artigo foi escrito por: Zuhaib Mohammed e traduzido por Dimitris Calixto, artigo original disponível aqui

Em Solidity, há três maneiras de enviar éter. Nomeadas transferência (), envio () e chamada (). Neste artigo, vamos discutir como funciona cada função de chamada e qual é a melhor de se utilizar.

Transferência vs Envio vs Chamada

  1. Transferência -> o smart contract recebido deve ter uma função de retorno definida ou então a chamada de transferência irá mostrar um erro. Existe um limite de gás de 2300, o que é suficiente para completar a operação de transferência. É codificado para evitar ataques de reentrância.
    transfer() function

  2. Envio -> Funciona de forma semelhante à chamada de transferência e tem também um limite de gás de 2300 gás. Devolve um booleano.
    send() function

  3. Chamada -> É a forma recomendada de enviar ETH para um smart contract. O argumento vazio desencadeia a função de retorno do endereço receptor.
    (bool sent,memory data) = _to.call{value: msg.value}("");
    utilizando a chamada, pode-se também ativar outras funções definidas no contrato e enviar uma quantidade fixa de gás para executar a função. O estado da transação é enviado como um booleano e o valor de retorno é enviado na variável de dados.
    (bool sent, bytes memory data) = _to.call{gas :10000, value: msg.value}("func_signature(uint256 args)");

call() function

Espero que este artigo tenha ajudado a entender as funções de transferência, envio e chamada.

Obrigado por ler!

Latest comments (0)