Cómo enviar Ether en Solidity

Solidity

En este breve tutorial aprenderás a enviar ETH desde tu Smart Contract a otra dirección de la red Ethereum. Esta otra dirección podría ser la de otro Smart Contract o alguna dirección controlada por un usuario de forma privada, como es el caso de una wallet. Se trata de algo vital cuando trabajas con Smart Contracts en la red Ethereum.

Cómo enviar ETH a otra dirección

Vamos a crear un Smart Contract al que llamaremos MiContrato. En su interior vamos a declarar la función enviarEth, que recibirá dos argumentos:

  • Dirección: Usaremos el argumento direccion de tipo address para especificar la dirección a la que enviar ETH. Este argumento debe incluir el modificador payable, indicando así que deseamos habilitar los método de gestión de transferencia de ETH.
  • Cantidad: Mediante el argumento cantidad, de tipo uint, especificaremos la cantidad de ETH a enviar.

En el interior de la función enviarEth, usaremos el método transfer de la dirección de envío, al que pasaremos la cantidad a enviar como parámetro:

pragma solidity ^0.8.13;

contract MiContrato
{
    function enviarEth(address payable direccion, uint cantidad) external
    {
        direccion.transfer(cantidad);
    }
}

El método transfer enviará la cantidad que pasemos como parámetro a la dirección especificada en la variable direccion. Hemos definido la función con el modificador external, ya que nuestra intención es que sea invocada desde fuera del Smart Contract.

Unidades de envío de ETH

Podrá encontrar las unidades de Ether de Solidity en la documentación oficial. La mínima unidad de envío en la red Ethereum es el wei. Luego tenemos también la unidad gwei, que equivale a 1^9 wei. Finalmente tenemos el ether, que equivale a 1^18 wei.

Algunos posibles valores que podríamos pasar el método transfer podrían ser 1 ether, 500 gwei o 40000 wei. Si usas un valor numérico a secas, como por ejemplo 4000, entonces dicho valor estará especificado en la unidad por defecto, que es el wei.

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

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