En este tutorial aprenderás a recibir ETH en tu Smart Contract desde otra dirección usando Solidity. Si has ido siguiendo esta serie de tutoriales, sabrás que ya hemos visto cómo enviar ETH desde tu Smart Contract. Pues, bien, bajo los mismos pretextos, en esta ocasión haremos lo contrario.
Contenidos
Cómo recibir ETH desde otra dirección
Vamos a crear un Smart Contract al que llamaremos MiContrato
. En su interior vamos a declarar la función recibirEth
, que no aceptará ningún argumento. Dado que la función recibirá ETH, debemos definirla usando el modificador payable
. El modificador payable
es un requerimiento de Solidity y, en caso de no incluirse, ocurrirá un error:
pragma solidity ^0.8.17;
contract MiContrato
{
function recibirEth() external payable
{
// Código a ejecutar
}
}
Existen diversas operaciones que querrías realizar con los ETH recibidos. Por ejemplo, si quisieses comprobar la cantidad de ETH recibidos tendrías que usar el método msg.value
. La cantidad recibida estará representada en wei
.
Para comprobar el balance del Smart Contract, tendrás que usar el método address(this).balance
. La cantidad del balance también estará representada en wei
.
Cómo recibir ETH mediante la función receive
También es posible recibir ETH en un contrato usando al función especial receive
. Esta función, que ha sido creada para poder recibir ETH, se define sin la sentencia function
. Si quieres recibir ETH desde otro Smart Contract, entonces debes declararla como external
y, al igual que en el caso anterior, también debe incluir el modificador payable
:
receive() external payable {
// Código a ejecutar
}
Cómo recibir ETH mediante la función fallback
En los Smart Contracts existe una función que se ejecutará por defecto cuando se invoque a una función que no esté definida en el Smart Contract. A esta función se la conoce como función fallback. Se define mediante la sentencia fallback
y, al igual que en el caso de la función receive
, debe declararse como externa usando el modificador external
e incluir el modificador payable
si quieres usarla para este fin. Del mismo modo, tampoco es necesario usar la sentencia function
para definirla:
fallback() external payable {
// Código a ejecutar
}
A modo de curiosidad, en caso de que revises Smart Contracts creados con versiones anteriores a Solidity 5.0, la función fallback se definía usando únicamente la sentencia function
, sin usar ningún identificador para la función.
Esto ha sido todo.