Ir al contenido principal

Una visión general del funcionamiento de los contratos inteligentes en Ethereum

Actualizado el
26 de noviembre de 2025

7 minutos de lectura

¿Prefieres un tutorial en vídeo? Acompaña a Radek y descubre cómo funcionan los contratos inteligentes en Ethereum en menos de 11 minutos.
¡Suscríbete a nuestro canal de YouTube para ver más vídeos!

Resumen

Los contratos inteligentes son elementos fundamentales de la cadena de bloques de Ethereum; constituyen una parte esencial del desarrollo de Ethereum. En esta guía, veremos una descripción general de cómo funcionan los contratos inteligentes en la cadena de bloques de Ethereum. Esto incluirá cómo configurar un IDE de Ethereum y, a continuación, el proceso de escribir e implementar un contrato inteligente.

¿Qué es un contrato inteligente?

Los contratos inteligentes son iguales que los contratos del mundo real. La única diferencia es que son digitales. De hecho, un contrato inteligente es un programa informático almacenado en una cadena de bloques. Los contratos inteligentes son fragmentos de código que se ejecutan automáticamente cuando se cumplen las condiciones preestablecidas por las partes implicadas; por ejemplo, un contrato inteligente que emite un token cuando alguien deposita dinero fiduciario.

Los contratos inteligentes permiten que se realicen transacciones seguras y fiables entre partes anónimas sin necesidad de recurrir a una autoridad central. Los contratos inteligentes en Ethereum se escriben principalmente en Solidity y Vyper. Solidity es un lenguaje orientado a objetos de alto nivel, influenciado por C++, JavaScript y Python, y está diseñado para integrarse con la Máquina Virtual de Ethereum (EVM). Vyper es un lenguaje experimental basado en contratos e inspirado en Python.

Las máquinas virtuales crean una capa de abstracción entre el código que se ejecuta y la máquina en la que se ejecuta. En un bloque determinado, solo puede existir un único estado de la cadena de bloques. La cadena de bloques de Ethereum mantiene su estado con la ayuda de la EVM (Máquina Virtual de Ethereum). La EVM lo consigue definiendo las reglas para calcular un nuevo estado válido de un bloque a otro.

Para representar esto en un modelo matemático, podemos considerar Y como una función de transición de estados. La función se puede escribir como Y(S, T) = S', donde:

S es el estado válido anterior,

T es el conjunto de nuevas transiciones válidas que se añadirán al siguiente bloque, y

«S» es el nuevo estado válido.

Esta función toma el estado válido anterior y un conjunto de nuevas transacciones válidas para generar un nuevo estado válido como resultado. Puedes obtener más información sobre la EVM y cómo funciona el estado de Ethereum en este completo artículo de blog sobre la EVM.

Hasta ahora hemos visto los aspectos técnicos de la EVM; ahora, veamos cómo funciona en la práctica. La EVM crea un entorno aislado en el que se ejecuta el bytecode de los contratos inteligentes. Esto significa que el código máquina está completamente aislado de la red, del sistema de archivos o de los procesos de la máquina anfitriona. Por cada instrucción ejecutada en la EVM, el sistema registra el coste de ejecución. Este coste asociado a la ejecución de la instrucción se mide en unidades de gas. El usuario que desee ejecutar esta instrucción debe reservar una cantidad de ether para pagar la tarifa de gas. Obtén más información sobre el gas y las tarifas de gas aquí.

La EVM también es Turing completa. Lo consigue al permitir un sistema que cobra por cada instrucción de software ejecutada, en lugar de cobrar por cada transacción financiera realizada, como ocurre en Bitcoin. El hecho de que la red Ethereum sea Turing completa significa que puede considerarse un ordenador distribuido a nivel mundial de igual a igual.

¿Cómo funciona un contrato inteligente?

Cuando alguien quiere vender una casa, acude a un agente inmobiliario. El agente se queda con un porcentaje del importe total por gestionar la transacción y actuar como intermediario entre el comprador y el vendedor. Supongamos que eliminamos al agente y, en su lugar, creamos un contrato inteligente.

Está programado de tal forma que, cada vez que se ofrezca por la propiedad una cantidad superior a una cifra determinada, se venderá la vivienda al comprador, se transferirán los derechos y se transferirá el dinero al vendedor. De este modo, se elimina al intermediario del proceso. Dado que la transacción se lleva a cabo directamente entre ambas partes, todo el proceso resulta más económico y seguro. 

Los contratos inteligentes se almacenan en la cadena de bloques, lo que significa que heredan ciertas propiedades. Entre ellas, destacan dos: la inmutabilidad y la distribuibilidad global. La inmutabilidad significa que, una vez desplegado el contrato inteligente, nadie puede alterarlo. Y la distribuibilidad global significa que todos los participantes de la red de la cadena de bloques validan el resultado del contrato. Si alguien intenta modificar el contrato, los demás participantes de la red lo marcarán como no válido, lo que hace que la manipulación sea prácticamente imposible.

¿Cómo se implementan los contratos inteligentes?

Los contratos inteligentes se compilan primero y se convierten en bytecode cuando se implementa el contrato. A continuación, este bytecode se almacena en la cadena de bloques y se le asigna una dirección. La dirección del contrato se determina en función de la dirección de la persona que crea el contrato (remitente) y del número de transacciones que ha enviado el creador (nonce). La dirección del remitente y el nonce se codifican mediante RLP y se someten a un hash con el algoritmo Keccak-256.

Los contratos inteligentes, que en su gran mayoría están escritos en Solidity, suelen implementarse y probarse mediante el IDE Remix de Ethereum. El IDE Remix es un entorno de desarrollo integrado de código abierto basado en navegador para contratos inteligentes de Ethereum.

Intentemos desplegar un contrato utilizando Remix IDE. Desplegaremos nuestro contrato en la red de pruebas Sepolia. Para ello, necesitaremos algo de ETH de prueba. Necesitarás la extensión de navegador MetaMask para crear un monedero de ETH y algo de ETH de prueba para empezar.

Puedes conseguir ETH de prueba accediendo a Quicknode Faucet. Conecta tu monedero y selecciona la red de pruebas Sepolia en tu monedero MetaMask. La dirección de tu monedero debería aparecer automáticamente en el campo «Dirección del monedero». A continuación, haz clic en «Continuar» y, en el siguiente paso, podrás duplicar tu ETH de prueba si lo compartes en Twitter. Deberías tener tu ETH de prueba en tu monedero en un par de minutos (puede tardar más si la red está saturada).

Entra en el IDE de Ethereum Remix y crea un nuevo archivo de Solidity; por ejemplo, TestContract.sol.

Pega el siguiente código en tu nuevo script de Solidity:

// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

contract TestContract {

uint256 private count = 0;

function increment() public {
count += 1;
}

function getCount() public view returns (uint256) {
return count;
}

}

Explicación del código anterior:

Línea 1: Especificación del tipo de licencia SPDX, que se ha añadido a partir de Solidity ^0.6.8.

Siempre que el código fuente de un contrato inteligente se pone a disposición del público, estas licencias pueden ayudar a resolver o evitar problemas relacionados con los derechos de autor. Si no deseas especificar ningún tipo de licencia, puedes utilizar una licencia especial llamada «UNLICENSE» o, simplemente, omitir todo el comentario (no se producirá ningún error, solo aparecerá una advertencia).

Línea 2: Declaración de la versión de Solidity.

Línea 4: Inicio de nuestro contrato denominado «TestContract».

Línea 6: Se declara una variable privada «count» de tipo entero sin signo y se le asigna el valor cero.

Líneas 8-10: Se declara una función `increment()` de tipo «público», lo que significa que se puede acceder a ella desde fuera de la función y desde otros contratos, y que incrementa el valor de `count` en 1.

Líneas 12-14: Se declara una función `getCount()` de tipo `public` y `view`, ya que es un valor inmutable, lo que significa que solo puede leer el estado de la cadena de bloques, pero no escribir nada. Se utiliza la palabra clave `returns` para especificar que la función devuelve un valor, en este caso un entero sin signo. Se devuelve el valor de `count` a la función. 

Para compilar el contrato inteligente, haz clic primero en el icono de Solidity del menú de la izquierda y, a continuación, en «Compilar TestContract.sol». También puedes utilizar el atajo de teclado Ctrl+S / Cmd+S para compilar el contrato.

Asegúrate de que la versión del compilador de Solidity que aparece en la barra lateral izquierda coincida con la que tienes en tu contrato. Si las versiones no coinciden, aparecerá un error.

Si la compilación del contrato se realiza correctamente, aparecerá una marca verde en la pestaña «Compilador» del menú de la izquierda. Asegúrate de seleccionar la red de pruebas de Sepolia en MetaMask antes de desplegar el contrato.

Ahora, para implementar el contrato, haz clic en el icono de Ethereum del menú de la izquierda y selecciona «Injected Provider - MetaMask» en el menú desplegable de «Environment»; a continuación, haz clic en «Deploy». Acepta la transacción desde MetaMask.

Ahora que tu contrato ya está implementado, podrás encontrarlo en la sección «Contratos implementados».

Los contratos inteligentes también se pueden implementar utilizando Hardhat, Foundry u otras bibliotecas de Ethereum.

¿Cómo se utilizan los contratos inteligentes?

Podemos interactuar con los contratos inteligentes directamente desde el propio Remix IDE. Para ello, despliega el contrato en la sección «Contratos desplegados» y haz clic en getCount. Verás que el valor inicial de «count» es cero.

Ahora, haz clic en incremento para incrementar el valor del contador en uno. Como se trata de una operación de escritura (vamos a escribir en una cadena de bloques, no solo a leerla), tendremos que pagar la tarifa de gas correspondiente. Confirma la transacción en MetaMask.

Una vez completada la transacción, haz clic en getCount de nuevo, y verás que el valor del contador aumenta en 1. Estamos modificando el valor del recuento en la cadena y, a continuación, consultar el valor actualizado.

También puedes interactuar con los contratos utilizando diversas bibliotecas de Ethereum; aquí tienes un ejemplo en Ruby. Para ello, necesitarás la ABI (Interfaz Binaria de Aplicación) y la dirección del contrato inteligente. La ABI define las funciones y los tipos utilizados en el contrato. Obtén más información en nuestra guía completa sobre la ABI.

Conclusión

¡Enhorabuena por haber llegado hasta el final! Ahora ya sabes cómo funciona la EVM (Máquina Virtual de Ethereum). Sabes cómo configurar el IDE Remix de Ethereum para probar y desarrollar contratos inteligentes. Has escrito un contrato inteligente, has aprendido a conseguir ETH de prueba y has desplegado tu contrato en una red de pruebas. También has visto cómo interactuar con un contrato inteligente a través del IDE Remix y cómo escribir en la cadena de bloques.

Obtén más información sobre Solidity y Vyper en las guías de Quicknode.

Suscríbete a nuestro boletín para recibir más artículos y guías sobre Ethereum. Si tienes algún comentario, no dudes en ponerte en contacto con nosotros a través de Twitter. Siempre puedes charlar con nosotros en nuestro servidor de Discord, donde encontrarás a algunos de los desarrolladores más geniales que jamás hayas conocido :)

Comparte esta guía