How much does it cost to deploy a smart contract on ETH?

Desarrolla Smart Contracts en Ethereum: Guía 2024

17/03/2026

Valoración: 4.2 (4732 votos)

Adentrarse en el mundo del desarrollo blockchain puede parecer una tarea abrumadora, pero con las herramientas y la guía adecuadas, es más accesible de lo que imaginas. Si alguna vez te has preguntado cómo funcionan las aplicaciones descentralizadas (dApps) o cómo se crean los contratos que las impulsan, estás en el lugar correcto. Este artículo es una guía completa y detallada diseñada para principiantes que deseen aprender a crear, desplegar e interactuar con su primer smart contract en la red de Ethereum. A lo largo de este tutorial, te llevaremos de la mano a través de cada paso, utilizando herramientas estándar de la industria como Solidity, Hardhat, Metamask y Alchemy. No te preocupes si estos nombres te suenan extraños; explicaremos cada uno de ellos a medida que avanzamos. Al finalizar, no solo habrás desplegado un contrato inteligente en una red de prueba, sino que también tendrás una base sólida para continuar tu viaje como desarrollador blockchain.

What is the salary of a smart contract developer?
The minimum salary is ₹50K and the max salary is ₹70K.
Índice de contenido

¿Qué Necesitas para Empezar? Preparando el Terreno

Antes de escribir una sola línea de código, debemos asegurarnos de tener todas las herramientas y cuentas necesarias. Esta fase de preparación es crucial para un proceso de desarrollo fluido.

1. Conexión a la Red Ethereum con Alchemy

Para comunicarnos con la blockchain de Ethereum, necesitamos un nodo. Ejecutar un nodo propio es complejo y consume muchos recursos, por lo que utilizaremos un servicio como Alchemy. Alchemy es una plataforma para desarrolladores que nos proporciona una API para enviar y recibir solicitudes a la red Ethereum sin complicaciones. Además, ofrece herramientas de monitoreo que nos serán útiles más adelante.

  • Crea una cuenta gratuita en Alchemy: Dirígete a su sitio web y regístrate.
  • Crea una nueva aplicación: En tu panel de control, busca la opción para crear una app. Asígnale un nombre (ej. "MiPrimerContrato"), una descripción, elige "Staging" como entorno y, lo más importante, selecciona la red "Goerli". Goerli es una red de prueba (testnet), lo que nos permite experimentar sin usar dinero real.
  • Obtén tu clave API: Una vez creada la app, tendrás acceso a una URL de API. Guárdala, la necesitarás más tarde.

2. Tu Billetera Virtual: Metamask

Necesitamos una cuenta de Ethereum para firmar y enviar transacciones, como la de desplegar nuestro contrato. Metamask es una extensión de navegador que funciona como una billetera virtual, permitiéndonos gestionar nuestra dirección de Ethereum y nuestras claves de forma segura.

  • Instala Metamask: Descárgala desde su sitio web oficial para tu navegador.
  • Crea una cuenta: Sigue los pasos para crear una nueva billetera. Asegúrate de guardar tu frase semilla en un lugar extremadamente seguro. ¡Quien tenga esta frase, tiene control total sobre tus fondos!
  • Conéctate a la red Goerli: En la parte superior derecha de la interfaz de Metamask, cambia de la "Red principal de Ethereum" a la "Red de prueba Goerli".

3. Obteniendo Ether de Prueba (Fake ETH)

Cada transacción en Ethereum, incluso en una red de prueba, requiere una pequeña tarifa de gas (gas fee). Para cubrir estos costos, necesitamos Ether de prueba. Estos tokens no tienen valor real y se obtienen de forma gratuita a través de un servicio llamado "faucet".

  • Busca un Faucet de Goerli: Busca en internet "Goerli faucet". Uno de los más conocidos es el de Alchemy.
  • Solicita ETH: Deberás pegar la dirección de tu cuenta de Metamask en el faucet y solicitar los fondos. Debido a la congestión de la red, la recepción de los fondos puede tardar unos minutos.
  • Verifica tu saldo: Pasado un tiempo, deberías ver un saldo de ETH en tu billetera de Metamask, listo para ser usado.

Configurando tu Entorno de Desarrollo Local

Con las cuentas listas, es hora de preparar nuestro entorno local para empezar a programar.

Paso 1: Inicializar el Proyecto

Abre tu terminal o línea de comandos y crea una carpeta para tu proyecto.

mkdir MiPrimerContrato cd MiPrimerContrato

Dentro de esta carpeta, inicializaremos un proyecto de Node.js. Si no tienes Node.js y npm instalados, deberás hacerlo primero desde su sitio web oficial.

npm init -y

Este comando creará un archivo `package.json` que gestionará las dependencias de nuestro proyecto.

Paso 2: Instalar Hardhat

Hardhat es un entorno de desarrollo de Ethereum que facilita la compilación, el despliegue, las pruebas y la depuración de tu código. Es una herramienta indispensable para el desarrollo profesional de smart contracts.

How risky are smart contracts?
Despite their advantages, smart contracts are not without flaws. The very nature of code makes them susceptible to errors and exploits, which can lead to significant financial losses. As these contracts handle valuable assets, it is essential to understand the risks involved in their deployment.
npm install --save-dev hardhat

Paso 3: Crear un Proyecto Hardhat

Una vez instalado, ejecuta el siguiente comando en la raíz de tu proyecto:

npx hardhat

Se te presentarán varias opciones. Selecciona "Create an empty hardhat.config.js". Esto creará el archivo de configuración principal de Hardhat.

Paso 4: Estructura de Carpetas

Para mantener todo organizado, crearemos dos carpetas:

mkdir contracts mkdir scripts
  • `contracts/`: Aquí vivirá el código fuente de nuestro smart contract en Solidity.
  • `scripts/`: Aquí guardaremos los scripts que usaremos para desplegar e interactuar con nuestro contrato.

Escribiendo tu Primer Smart Contract en Solidity

¡Llegó el momento de programar! Usaremos Solidity, el lenguaje de programación más popular para escribir smart contracts en Ethereum. Su sintaxis es similar a la de JavaScript o C++.

Dentro de la carpeta `contracts`, crea un nuevo archivo llamado `HelloWorld.sol` y pega el siguiente código:

// SPDX-License-Identifier: MIT pragma solidity >=0.7.3; // Un contrato es una colección de código (sus funciones) y datos (su estado) // que reside en una dirección específica en la blockchain de Ethereum. contract HelloWorld { // Un evento es una forma de comunicar a las aplicaciones externas que algo ha sucedido. event UpdatedMessages(string oldStr, string newStr); // 'message' es una variable de estado, su valor se almacena permanentemente en la blockchain. // La palabra clave 'public' crea automáticamente una función 'getter' para leer su valor. string public message; // El constructor es una función especial que se ejecuta solo una vez, cuando el contrato se despliega. constructor(string memory initMessage) { message = initMessage; } // Una función pública que permite actualizar el valor de la variable 'message'. function update(string memory newMessage) public { string memory oldMsg = message; message = newMessage; emit UpdatedMessages(oldMsg, newMessage); } }

Este contrato es muy simple: almacena un mensaje de texto que se establece al momento de su creación y puede ser actualizado más tarde llamando a la función `update`.

Conectando y Configurando el Proyecto

Ahora debemos conectar todas las piezas: nuestro código, Hardhat, Alchemy y Metamask.

Instalando Dependencias

Necesitaremos `dotenv` para manejar nuestras claves privadas de forma segura y `ethers.js`, una librería que simplifica la interacción con Ethereum. Hardhat se integra perfectamente con Ethers a través de un plugin.

npm install dotenv --save npm install --save-dev @nomiclabs/hardhat-ethers "ethers@^5.0.0"

Configurando las Variables de Entorno

Crea un archivo llamado `.env` en la raíz de tu proyecto. ¡Este archivo nunca debe ser compartido ni subido a repositorios públicos como GitHub!

En este archivo, añade tu URL de API de Alchemy y tu clave privada de Metamask. Para exportar tu clave privada, ve a Metamask > Detalles de la cuenta > Exportar clave privada.

API_URL="TU_URL_DE_API_DE_ALCHEMY" PRIVATE_KEY="TU_CLAVE_PRIVADA_DE_METAMASK"

Actualizando la Configuración de Hardhat

Abre el archivo `hardhat.config.js` y reemplaza su contenido con lo siguiente. Este código le dice a Hardhat cómo conectarse a la red Goerli usando nuestras claves y qué versión de Solidity usar.

/** * @type import('hardhat/config').HardhatUserConfig */ require('dotenv').config(); require("@nomiclabs/hardhat-ethers"); const { API_URL, PRIVATE_KEY } = process.env; module.exports = { solidity: "0.7.3", defaultNetwork: "goerli", networks: { hardhat: {}, goerli: { url: API_URL, accounts: [`0x${PRIVATE_KEY}`] } }, };

Compilación y Despliegue en la Red de Pruebas

Estamos en la recta final. Vamos a compilar y desplegar nuestro contrato.

Paso 1: Compilar el Contrato

Hardhat tomará nuestro código Solidity y lo convertirá en bytecode, que es lo que la Máquina Virtual de Ethereum (EVM) puede entender.

npx hardhat compile

Si todo va bien, no deberías ver errores. Se creará una nueva carpeta llamada `artifacts` con los archivos de compilación.

How does Ethereum smart contract work?
The Technology Behind Smart Contracts The Ethereum blockchain powers the technology underneath. This decentralised and distributed ledger securely records transactions and data. Smart contracts are self-executing computer programs that run on the Ethereum blockchain and enforce the terms of an agreement automatically.

Paso 2: Escribir el Script de Despliegue

Dentro de la carpeta `scripts`, crea un archivo llamado `deploy.js` y añade el siguiente código:

async function main() { // Obtenemos una abstracción del contrato para trabajar con él. const HelloWorld = await ethers.getContractFactory("HelloWorld"); // Iniciamos el despliegue, pasando "Hello World!" como argumento para el constructor. const hello_world = await HelloWorld.deploy("Hello World!"); console.log("Contrato desplegado en la dirección:", hello_world.address); } main() .then(() => process.exit(0)) .catch(error => { console.error(error); process.exit(1); });

Este script utiliza Ethers.js para crear una "fábrica" de nuestro contrato `HelloWorld` y luego llama a la función `deploy()` para enviarlo a la blockchain.

Paso 3: ¡Desplegar!

Ejecuta el siguiente comando para lanzar tu smart contract a la red de prueba Goerli:

npx hardhat run scripts/deploy.js --network goerli

Si todo es exitoso, la terminal te mostrará un mensaje con la dirección del contrato desplegado, algo como: `Contrato desplegado en la dirección: 0x...`

¡Felicidades! Acabas de desplegar tu primer smart contract. Puedes copiar esa dirección y buscarla en un explorador de bloques como Goerli Etherscan para ver la transacción de creación y los detalles de tu contrato.

¿Es Difícil Aprender Solidity?

Una pregunta común entre los aspirantes a desarrollador blockchain es sobre la curva de aprendizaje de Solidity. La respuesta es matizada: es fácil de empezar, pero difícil de dominar.

La sintaxis de Solidity es intencionadamente similar a lenguajes populares como JavaScript, lo que reduce la barrera de entrada para programadores con experiencia previa. Sin embargo, el desarrollo en blockchain introduce un paradigma completamente nuevo. Los errores en un smart contract pueden llevar a pérdidas financieras significativas e irreversibles debido a la naturaleza inmutable de la blockchain. Por lo tanto, dominar Solidity implica no solo conocer el lenguaje, sino también entender profundamente los conceptos de seguridad, optimización de gas y la arquitectura de la EVM.

Solidity para Principiantes: Ventajas vs. Desafíos

Ventajas Desafíos
Sintaxis familiar para desarrolladores de JavaScript o C++. El código es inmutable; los errores son permanentes y costosos.
Ecosistema maduro con abundantes recursos de aprendizaje y herramientas (Hardhat, Truffle). Requiere una comprensión profunda de conceptos de blockchain (gas, EVM, consenso).
Gran y activa comunidad de desarrolladores para soporte. La seguridad es crítica y compleja; un pequeño fallo puede ser explotado.
Alta demanda laboral y salarios competitivos. La maestría va más allá del lenguaje y exige pensar en un paradigma descentralizado.

Preguntas Frecuentes (FAQ)

¿Qué empresas usan Solidity?

Solidity es el estándar de la industria en el ecosistema de Ethereum y EVM. Grandes protocolos de finanzas descentralizadas (DeFi) como Aave, MakerDAO, Uniswap, y mercados de NFTs como OpenSea, todos utilizan Solidity para sus smart contracts.

¿Rust es más rápido que Solidity?

Sí, en general, Rust es más rápido que Solidity. Rust es un lenguaje compilado de bajo nivel que ofrece un rendimiento comparable al de C++, mientras que Solidity es un lenguaje de más alto nivel que se compila a bytecode de la EVM. Sin embargo, la elección del lenguaje a menudo depende del ecosistema blockchain (Rust es popular en Solana y Polkadot, mientras que Solidity domina en Ethereum).

¿Bitcoin usa Solidity?

No. La blockchain de Bitcoin tiene su propio lenguaje de scripting, llamado simplemente Script. Es mucho más limitado en funcionalidad que Solidity y no es Turing completo, lo que significa que no puede ser usado para crear los complejos smart contracts que vemos en Ethereum.

¿Necesito saber matemáticas avanzadas para Solidity?

No necesariamente matemáticas avanzadas, pero sí es fundamental tener una base sólida en lógica booleana y aritmética. Para áreas más específicas como la criptografía o algoritmos financieros complejos, un conocimiento matemático más profundo es beneficioso.

¿Cuánto tiempo se tarda en aprender Solidity?

Para un desarrollador con experiencia previa, los conceptos básicos de la sintaxis pueden aprenderse en unas pocas semanas. Sin embargo, para llegar a un nivel de competencia profesional, capaz de escribir contratos seguros y eficientes, se estima un periodo de 3 a 6 meses de estudio y práctica intensiva.

Si quieres conocer otros artículos parecidos a Desarrolla Smart Contracts en Ethereum: Guía 2024 puedes visitar la categoría Criptomonedas.

Subir