20/06/2021
Desarrolla tu Primer Smart Contract en Ethereum: Una Guía Completa
Adentrarse en el mundo del desarrollo en Ethereum puede parecer una tarea monumental, pero con la guía adecuada, es un camino fascinante y accesible. Ethereum no es solo una criptomoneda; es una plataforma global y descentralizada que permite la creación de aplicaciones que se ejecutan exactamente como se programaron, sin posibilidad de censura, fraude o interferencia de terceros. El corazón de estas aplicaciones son los llamados smart contracts o contratos inteligentes. En este artículo, te guiaremos paso a paso, desde los conceptos teóricos más básicos hasta el despliegue de tu primer contrato inteligente funcional en la blockchain de Ethereum, utilizando el lenguaje de programación por excelencia: Solidity.
Conceptos Fundamentales que Debes Dominar
Antes de escribir una sola línea de código, es crucial entender los pilares sobre los que construiremos. Estos conceptos son la base de todo el ecosistema de Ethereum.

¿Qué es Ethereum?
Lanzada en 2015, Ethereum es una blockchain de código abierto, descentralizada y programable. A diferencia de Bitcoin, que fue diseñado principalmente como una red de pago y reserva de valor, Ethereum fue concebido como un "ordenador mundial". Permite a los desarrolladores construir y desplegar aplicaciones descentralizadas (dApps). Su lenguaje de programación, Solidity, es Turing-completo, lo que significa que, en teoría, puede resolver cualquier problema computacional. Todas las operaciones que modifican el estado de la blockchain, como enviar una transacción o ejecutar una función de un contrato, requieren una tarifa denominada "Gas", que se paga en la criptomoneda nativa de la red, Ether (ETH).
¿Qué son los Smart Contracts?
El término fue acuñado por el criptógrafo Nick Szabo en la década de 1990, mucho antes de que la tecnología blockchain existiera. Un smart contract es, en esencia, un programa informático que se almacena y ejecuta en la blockchain. Su código define un conjunto de reglas y consecuencias, de la misma forma que lo hace un contrato legal tradicional, pero con una diferencia clave: su ejecución es automática e inmutable. Una vez desplegado en la blockchain, el código de un smart contract no puede ser modificado. Estos contratos se ejecutan dentro de la EVM (Ethereum Virtual Machine), un entorno de ejecución aislado que forma parte de cada nodo de la red Ethereum, garantizando que todos los participantes obtengan el mismo resultado al ejecutar el contrato.
Solidity: El Lenguaje de los Contratos Inteligentes
Para escribir estos programas que se ejecutan en la EVM, necesitamos un lenguaje de programación. Solidity es el más popular y ampliamente adoptado. Es un lenguaje de alto nivel, orientado a contratos y con una sintaxis muy influenciada por JavaScript, C++ y Python, lo que facilita su aprendizaje para desarrolladores con experiencia previa. Aunque existen otras alternativas como Vyper, Solidity sigue siendo el estándar de la industria para el desarrollo en Ethereum y otras blockchains compatibles con la EVM.
Tu Primer Smart Contract: "SimpleStorage"
Ahora que tenemos la base teórica, es hora de poner manos a la obra. Crearemos un contrato muy simple que nos permitirá almacenar un número entero sin signo (un uint) y recuperarlo posteriormente.
El Código Fuente
Este es el código completo de nuestro contrato inteligente. Lo analizaremos línea por línea a continuación.
// SPDX-License-Identifier: MIT pragma solidity ^0.6.0; contract SimpleStorage { uint storedData; function set(uint x) public { storedData = x; } function get() public view returns (uint) { return storedData; } }
Análisis Detallado del Código
// SPDX-License-Identifier: MIT: Esta es una declaración de licencia. Es una buena práctica incluirla para evitar problemas de derechos de autor y advertencias del compilador. Indica que el código es de código abierto bajo la licencia MIT.pragma solidity ^0.6.0;: Esta línea es fundamental. Le dice al compilador qué versión de Solidity debe utilizar. El símbolo^indica que el código es compatible con la versión 0.6.0 y cualquier versión superior dentro del rango 0.6.x, pero no con la versión 0.7.0 o superiores. Esto previene que futuras versiones del compilador con cambios que rompan la compatibilidad puedan compilar nuestro código de forma incorrecta.contract SimpleStorage { ... }: Aquí declaramos el contrato. La palabra clavecontractes similar a unaclassen otros lenguajes de programación. Todo el código de nuestro contrato estará contenido dentro de estas llaves.uint storedData;: Esta es una variable de estado. Las variables declaradas fuera de las funciones se almacenan permanentemente en el almacenamiento del contrato en la blockchain.uintes una abreviatura deuint256, un entero sin signo de 256 bits, el tipo de dato más común para valores numéricos.function set(uint x) public { ... }: Definimos una función llamadaset. Esta función acepta un argumentoxde tipouint. La palabra clavepublicsignifica que esta función puede ser llamada por cualquiera, tanto por usuarios externos como por otros contratos. Dentro de la función, asignamos el valor del argumentoxa nuestra variable de estadostoredData. Esta función modifica el estado de la blockchain, por lo que ejecutarla costará Gas.function get() public view returns (uint) { ... }: Definimos una segunda función llamadaget. Espublic, por lo que también puede ser llamada por cualquiera. La palabra claveviewes muy importante: indica que la función solo lee el estado del contrato pero no lo modifica. Las llamadas a funcionesviewdesde fuera de la blockchain son gratuitas. Finalmente,returns (uint)especifica que esta función devolverá un valor de tipouint.
Del Código a la Blockchain: El Proceso de Despliegue
Escribir el contrato es solo la mitad del trabajo. Ahora necesitamos compilarlo y desplegarlo en la red para que pueda ser utilizado.
Herramientas Esenciales: Remix IDE
Para simplificar el proceso para principiantes, utilizaremos Remix IDE, un entorno de desarrollo integrado que se ejecuta directamente en tu navegador. No requiere instalación y viene con todas las herramientas necesarias para escribir, compilar, depurar y desplegar smart contracts. Puedes acceder a él fácilmente visitando su sitio web.
Paso 1: Escribir y Compilar el Contrato
Una vez en Remix, crea un nuevo archivo llamado SimpleStorage.sol y pega el código que analizamos anteriormente. Luego, navega a la pestaña "Solidity Compiler" (Compilador de Solidity) en el menú de la izquierda. Asegúrate de que la versión del compilador seleccionada coincida con la que especificaste en el pragma (por ejemplo, 0.6.12). Haz clic en el botón "Compile SimpleStorage.sol". Si todo está correcto, verás una marca de verificación verde.
Paso 2: Entendiendo Mainnet y Testnets
Antes de desplegar, debemos decidir dónde. Ethereum tiene una red principal, la Mainnet, donde las transacciones son reales y el ETH tiene valor monetario. Desplegar aquí tiene un coste real. Para el desarrollo y las pruebas, existen las redes de prueba o Testnets. Son clones de la Mainnet donde el ETH no tiene valor real y se puede obtener de forma gratuita a través de "faucets" (grifos). Esto nos permite experimentar sin riesgo financiero.
| Característica | Mainnet (Red Principal) | Testnet (Red de Prueba) |
|---|---|---|
| Propósito | Aplicaciones en producción, transacciones reales | Desarrollo, pruebas, experimentación |
| Valor del ETH | Valor de mercado real | Sin valor monetario |
| Coste de Gas | Se paga con ETH real (costoso) | Se paga con ETH de prueba (gratuito) |
| Riesgo | Alto (errores pueden costar dinero real) | Nulo (es un entorno seguro para fallar) |
| Ejemplos | Ethereum | Sepolia, Goerli |
Nota importante: La información original de esta guía mencionaba la testnet Ropsten, la cual ha sido descontinuada. Actualmente, la testnet recomendada para el desarrollo de aplicaciones es Sepolia. Los pasos a seguir son conceptualmente los mismos.
Paso 3: Configurar Metamask y Obtener ETH de Prueba
Para interactuar con la blockchain, necesitas una billetera. Metamask es la extensión de navegador más popular. Instálala y crea una nueva billetera. Una vez configurada, en la parte superior, cambia la red de "Ethereum Mainnet" a "Sepolia Test Network". Copia la dirección de tu cuenta y busca en internet un "Sepolia Faucet". En estos sitios web, podrás pegar tu dirección para recibir ETH de prueba gratuito.
Paso 4: Desplegar el Contrato
Vuelve a Remix y ve a la pestaña "Deploy & Run Transactions".
- En el menú desplegable "ENVIRONMENT", selecciona "Injected Provider - Metamask". Esto conectará Remix con tu billetera Metamask. Deberás aprobar la conexión en la ventana emergente de Metamask.
- Asegúrate de que tu contrato "SimpleStorage" esté seleccionado en el menú desplegable "CONTRACT".
- Haz clic en el botón naranja "Deploy".
- Metamask se abrirá de nuevo, pidiéndote que confirmes la transacción de despliegue. Mostrará una pequeña tarifa de Gas (en ETH de Sepolia). Haz clic en "Confirmar".
¡Felicidades! Después de unos segundos, la transacción se confirmará en la blockchain. En la parte inferior de la pestaña de Remix, bajo "Deployed Contracts", verás tu contrato SimpleStorage con su dirección única en la red de prueba.
Paso 5: Interactuar con tu Contrato
Al hacer clic en tu contrato desplegado en Remix, verás los botones correspondientes a sus funciones:
- get: Es un botón azul. Al hacer clic, leerá instantáneamente el valor de
storedData(que inicialmente será 0) sin generar una transacción. - set: Es un botón naranja. Ingresa un número en el campo de texto a su lado (por ejemplo, 42) y haz clic en "set". Metamask se abrirá para que confirmes la transacción, ya que estás modificando el estado. Una vez confirmada, si vuelves a hacer clic en "get", verás que el valor devuelto ahora es 42.
Preguntas Frecuentes (FAQ)
¿Qué es exactamente el "Gas" en Ethereum?
El Gas es la unidad que mide la cantidad de trabajo computacional requerido para ejecutar operaciones en la red Ethereum. Cada operación (desde una simple suma hasta almacenar un dato) tiene un coste fijo en unidades de Gas. Para realizar la transacción, debes pagar una tarifa que se calcula multiplicando el Gas total utilizado por el precio del Gas que estés dispuesto a pagar. Esta tarifa compensa a los validadores por el uso de sus recursos computacionales.
¿Necesito ser un experto en programación para empezar?
No es necesario ser un experto, pero tener conocimientos básicos de programación, especialmente en lenguajes como JavaScript o Python, es muy útil. La lógica de programación (variables, funciones, bucles, condicionales) es universal, y Solidity te resultará más familiar.
¿Qué pasa si mi smart contract tiene un error después de desplegarlo?
Los smart contracts en Ethereum son inmutables. Una vez desplegados, su código no puede ser modificado. Esta es una de sus características de seguridad más importantes, pero también significa que los errores son permanentes. Por eso es vital realizar pruebas exhaustivas en testnets y auditar el código antes de desplegarlo en la Mainnet. Para contratos complejos, se utilizan patrones como los contratos actualizables (proxy patterns) para gestionar futuras mejoras.
¿Qué otras herramientas existen además de Remix?
Remix es excelente para empezar, pero para proyectos más grandes, los desarrolladores suelen usar entornos de desarrollo locales como Hardhat o Truffle. Estos frameworks ofrecen herramientas más potentes para pruebas automatizadas, gestión de despliegues en múltiples redes y una integración más profunda con librerías de JavaScript como Ethers.js o Web3.js.
Conclusión: Tu Viaje Apenas Comienza
Has escrito, compilado, desplegado e interactuado con tu primer smart contract en la blockchain de Ethereum. Este es un hito fundamental en tu camino como desarrollador Web3. A partir de aquí, se abre un universo de posibilidades: puedes explorar la creación de tokens (ERC-20), NFTs (ERC-721), aplicaciones de finanzas descentralizadas (DeFi) o sistemas de gobernanza (DAOs). La clave es seguir aprendiendo, practicando en testnets y conectando con la vibrante comunidad de desarrolladores de Ethereum. ¡El futuro descentralizado te espera!
Si quieres conocer otros artículos parecidos a Guía para Desarrollar Smart Contracts en Ethereum puedes visitar la categoría Criptomonedas.
