Cómo recibir Ether en Solidity

Solidity

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.

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.


Avatar de Edu Lazaro

Edu Lázaro: Ingeniero técnico en informática, actualmente trabajo como desarrollador web y programador de videojuegos.

👋 Hola! Soy Edu, me encanta crear cosas y he redactado esta guía. Si te ha resultado útil, el mayor favor que me podrías hacer es el de compatirla en Twitter 😊

Si quieres conocer mis proyectos, sígueme en Twitter.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

“- Hey, Doc. No tenemos suficiente carretera para ir a 140/h km. - ¿Carretera? A donde vamos, no necesitaremos carreteras.”