Ethereum Developer Program

Configura Hardhat y crea tu primer smart contract

Ethereum Developer Program

Contenido del curso

Configura Hardhat y crea tu primer smart contract

Resumen

El Ethereum Developer Program es un programa intensivo de tres meses para aprender desarrollo blockchain, contratos inteligentes y aplicaciones descentralizadas. Aprenderás a pasar de Web2 a Web3 construyendo proyectos reales en comunidad, ideal si ya manejas JavaScript, Python o Solidity en nivel básico.

En esta sesión inaugural, Sandra Carrillo (egresada de la primera edición y profesora del curso de Stablecoins) comparte su experiencia, y Gerardo López, profesor de la Escuela de Blockchain y Criptomonedas, te guía paso a paso para crear tu primer smart contract: una fábrica de Pokémon.

¿Qué es el Ethereum Developer Program y para quién es?

Es un programa abierto de Platzi con una cohorte cerrada de 200 estudiantes en Discord, acompañados por mentores y profesores del ecosistema Web3. El objetivo final es que cada equipo construya y presente una dapp (aplicación descentralizada) ante especialistas de la industria [02:30].

Durante doce semanas vas a recorrer temas como la Ethereum Virtual Machine, desarrollo con Solidity, herramientas de arquitectura Web3 y seguridad. Si ya tienes nivel de React, la transición de frontend Web2 a Web3 te resultará más fluida.

¿Qué requisitos necesito para entrar al programa? Conocimientos básicos de JavaScript y, si aplicas por beca, completar un ejercicio práctico más los cursos de introducción al desarrollo blockchain y JavaScript básico.

¿Qué cuenta una egresada sobre la experiencia?

Sandra Carrillo, administradora de empresas venezolana, llegó al ecosistema buscando proteger su poder adquisitivo frente a la inflación con criptomonedas y stablecoins. De ahí saltó al desarrollo: aprendió JavaScript, CSS, HTML y React en Platzi, y descubrió que podía pasar de usuaria a builder, término que en Web3 identifica a quienes construyen sobre la tecnología [22:00].

Gracias al programa conectó con comunidades como Mujer DAO LATAM, asistió a Devcon Bogotá y obtuvo una beca para Ethereum Río. Su recomendación es clara: anímate aunque sepas poco de blockchain, porque la tecnología evoluciona tan rápido que nadie es totalmente especialista.

¿Qué es una blockchain y dónde encaja Ethereum?

Una blockchain es un conjunto de nodos descentralizados distribuidos por el mundo que intercambian información sin un dueño único. Si un nodo se apaga, la información persiste en los demás, lo que la hace prácticamente imposible de derribar [42:15].

Bitcoin fue la primera gran blockchain asociada a una criptomoneda. Ethereum dio el siguiente salto: además de tener su token, permite ejecutar lógica programable dentro de la red mediante smart contracts o contratos inteligentes, que son código con funcionalidades y restricciones que corre dentro de la blockchain [44:30].

¿Por qué Solidity es un lenguaje para titanes?

Solidity es el lenguaje de programación de Ethereum, parecido a JavaScript pero con peculiaridades importantes: tienes que pensar en memoria, almacenamiento y gas, que es el costo computacional que se paga por cada operación [46:00].

Aquí entra una regla de oro: entre más eficiente sea tu smart contract, menos gas consume y menos dinero gasta tu usuario. Las buenas prácticas no son cosméticas, son rentabilidad.

¿Qué es el gas en Ethereum? Es la unidad que mide el costo de ejecutar operaciones en la red. Cada instrucción de tu contrato consume gas, y quien lanza la transacción lo paga.

¿Cómo configurar Hardhat para tu primer smart contract?

Hardhat es un framework en Solidity que te crea el esqueleto de carpetas y herramientas para programar localmente antes de desplegar a la red. No va a producción: es tu ambiente de desarrollo.

Estos son los pasos del setup que mostró Gerardo [54:00]:

  1. Verifica que tengas instalado Node (mínimo v18) y npm con node -v y npm -v.
  2. Crea una carpeta, por ejemplo pokemon-factory, y entra en ella.
  3. Ejecuta npm init para generar tu package.json.
  4. Instala Hardhat con npm install --save-dev hardhat.
  5. Corre npx hardhat y elige empty hardhat.config.js para empezar limpio.
  6. Instala el plugin @nomicfoundation/hardhat-toolbox, que añade compilación, testing y librerías comunes.
  7. En hardhat.config.js, agrega require("@nomicfoundation/hardhat-toolbox").

La estructura recomendada usa una carpeta contracts para los .sol y una carpeta test para las pruebas en JavaScript.

¿Cómo se ve un smart contract de Pokémon en Solidity?

El contrato PokemonFactory.sol empieza declarando licencia y rango de versiones con pragma solidity >=0.7.0 <0.9.0. Trabajar con un rango evita romper compatibilidad cuando salgan versiones nuevas [01:08:00].

Dentro del contrato se define una struct Pokemon con un uint id y un string name. Se crea un array privado pokemons y dos mapping:

  • pokemonToOwner: relaciona el id del Pokémon con la address (dirección hash) de su dueño.
  • ownerPokemonCount: cuenta cuántos Pokémon tiene cada address.

La función createPokemon(string memory _name, uint _id) recibe parámetros con guion bajo (convención para distinguirlos de variables globales) y usa la palabra clave memory, que indica que la variable solo existe durante la ejecución de la función y libera espacio al terminar, abaratando gas.

¿Qué hace memory en Solidity? Marca una variable como temporal: vive solo mientras corre la función y después se libera, evitando consumo permanente en la blockchain.

¿Cómo compilar, testear y validar tu contrato?

Para compilar, ejecuta npx hardhat compile. Hardhat genera la carpeta artifacts con el JSON del contrato listo para usarse [01:18:00].

Para probarlo, crea test/Pokemon.js usando ethers, que se conecta a tu contrato compilado. Hardhat levanta una blockchain temporal en memoria, despliega el contrato y te deja invocar métodos como getAllPokemons. Corres las pruebas con npx hardhat test y validas que el resultado coincida con lo esperado.

¿Cuáles son los retos para practicar esta semana?

Gerardo dejó cinco retos progresivos, desde nivel básico hasta Saiyajin Blue [01:22:00]:

  1. Investiga qué son los events en Solidity e implementa event NewPokemon que se dispare al crear uno.
  2. Investiga require y valida que el id sea mayor a cero, mostrando un mensaje si no lo es.
  3. Crea una struct Ability con nombre y descripción, y permite que un Pokémon tenga varias habilidades.
  4. Modela que un Pokémon pertenezca a más de un tipo (ejemplo: Bulbasaur es grass y poison).
  5. Modela las debilidades (weaknesses) y crea un test que agregue dos Pokémon y valide la cantidad en la fábrica.

Si te interesa entrar al programa o reforzar bases antes del siguiente encuentro, complementa con el curso de Prework para desarrollo blockchain y el curso de introducción a smart contracts de la ruta de Solidity. Cuéntanos en los comentarios en qué reto vas y qué decisiones tomaste para optimizar gas.