1 / 14

🔗 Blockchain para Developers

Entiende como funciona blockchain y como construir aplicaciones Web3. Sin rodeos, directo a lo que necesitas saber.

🎯

Al terminar este curso sabras:

  • Que vive on-chain y que no
  • Que es un smart contract y como funciona
  • Como una web interactua con blockchain
  • Por donde seguir aprendiendo

Lo que necesitas traer:

  • Conocimientos basicos de programacion
  • Familiaridad con JavaScript (ideal)
  • Curiosidad y ganas de aprender

📦 ¿Que es Blockchain?

El concepto en una frase

Una blockchain es una base de datos compartida donde todos pueden verificar que nadie hizo trampa.

🎯 Quedate con esta idea: Un libro contable publico donde cada pagina esta sellada. Una vez escrito, no se puede borrar sin que todos lo noten.

¿Para que sirve?

Permite que personas que no se conocen ni confian entre si puedan acordar una verdad comun sin necesitar un intermediario (banco, notario, etc.).

Las 4 caracteristicas clave

🔒

Inmutable

Los datos no se pueden cambiar una vez registrados.

🌐

Descentralizada

No hay un servidor central. Miles de computadoras tienen una copia.

👁️

Transparente

Cualquiera puede ver todas las transacciones.

🤝

Sin intermediarios

El protocolo garantiza las reglas, no una empresa.

¿Como se ve en la practica?

La blockchain es una cadena de "bloques". Cada bloque contiene transacciones y esta conectado al anterior:

Bloque 0
Transacciones: "Genesis" Hash: 0xabc123...
Bloque 1
Transacciones: A→B 5 ETH Apunta a: 0xabc123...
Bloque 2
Transacciones: B→C 2 ETH Apunta a: 0xdef456...
⚠️ ¿Que pasa si alguien quiere hacer trampa?
Si cambias un bloque, su "huella digital" (hash) cambia. Eso rompe la conexion con el siguiente bloque. Todos los nodos lo notarian y rechazarian el cambio.

🔐 Criptografia: Lo esencial

No necesitas ser experto en criptografia para usar blockchain. Solo entiende estas dos ideas:

1. Funciones Hash: La huella digital

Un hash toma cualquier dato y genera un codigo unico de tamaño fijo. Es como una huella digital.

Propiedades importantes

  • Determinista: Mismo input = mismo output, siempre
  • Unidireccional: No puedes "revertirlo"
  • Sensible: Un cambio minimo = hash totalmente diferente

¿Para que se usa?

  • Conectar bloques entre si
  • Identificar transacciones
  • Generar direcciones de wallet
💡 Ejemplo:
"Hola" → 0x3d5f1c...
"hola" → 0x8a7b2e...
Un solo caracter cambia todo el hash.
📌 No necesitas memorizar esto ahora: Solo recuerda que el hash es como una huella digital unica e irreversible.

2. Claves Publica y Privada: Tu identidad

En blockchain, tu identidad es un par de claves matematicamente relacionadas:

🔑 Clave Privada
Tu contraseña secreta
NUNCA compartir
🔓 Clave Publica
Se deriva de la privada
Puedes compartirla
📍 Direccion
Como tu "numero de cuenta"
0x742d35Cc...
🎯 Quedate con esta idea: La clave privada es como la llave de tu casa. La direccion es como tu direccion postal - la puedes dar para que te envien cosas, pero no das tu llave.

Blockchain usa criptografia de curva eliptica (ECDSA). Ethereum usa la curva secp256k1. Las direcciones son los ultimos 20 bytes del hash Keccak-256 de la clave publica.

🤝 Consenso: ¿Como se ponen de acuerdo?

Si no hay un jefe central, ¿como deciden todos cual es la version correcta de la blockchain?

🎯 Quedate con esta idea: Miles de computadoras que no se conocen deben acordar que transacciones son validas. El mecanismo de consenso son las "reglas del juego" que todos siguen.
📌 No necesitas memorizar los detalles: Solo entiende que existen diferentes formas de lograr este acuerdo, cada una con sus trade-offs.

Los dos mecanismos principales

⛏️

Proof of Work (PoW)

Bitcoin

Los "mineros" compiten resolviendo puzzles matematicos. El primero en resolver agrega el bloque.

  • + Muy seguro y probado
  • - Consume mucha energia
🥩

Proof of Stake (PoS)

Ethereum

Los validadores "apuestan" sus monedas. Se eligen al azar para crear bloques.

  • + 99.9% menos energia
  • + Mas rapido

Comparativa rapida

Mecanismo Velocidad Energia Ejemplo
Proof of Work ~10 min/bloque 🔴 Muy alta Bitcoin
Proof of Stake ~12 seg/bloque 🟢 Muy baja Ethereum

🌐 Redes: Layer 1 y Layer 2

¿Que es Layer 1?

La blockchain base. Es la red principal que procesa y guarda todas las transacciones.

🟠

Bitcoin

La original. Diseñada como "oro digital".

💎

Ethereum

La plataforma para smart contracts y dApps.

🟣

Solana, Avalanche, etc.

Alternativas mas rapidas con diferentes trade-offs.

El problema de escalabilidad

Ethereum solo puede procesar ~15 transacciones por segundo. Cuando hay mucha demanda, las tarifas suben mucho.

¿Que es Layer 2?

Soluciones construidas sobre L1 para procesar transacciones mas rapido y barato, pero heredando la seguridad de la capa base.

💡 Analogia: Si L1 es la autopista principal (segura pero congestionada), L2 son carriles express que descargan trafico y luego consolidan en la autopista.

Rollups Optimistas

Arbitrum, Optimism, Base

Asumen que todo es valido. Hay tiempo para disputar si algo esta mal.

ZK-Rollups

zkSync, StarkNet

Usan pruebas matematicas para validar lotes de transacciones.

Costos tipicos

Red Tipo Costo por TX
Ethereum L1 $1 - $50+
Arbitrum L2 $0.01 - $0.50
Polygon Sidechain $0.001 - $0.01

👛 Wallets: Tu puerta de entrada

¿Que es una wallet?

Una wallet es una aplicacion para guardar tus claves y firmar transacciones.

🎯 Quedate con esta idea: La wallet NO guarda tus criptos. Tus criptos viven en blockchain (on-chain). La wallet solo guarda las llaves para acceder a ellas.
⚠️ "Not your keys, not your coins"
Si no controlas tu clave privada (como en exchanges tipo Binance), tecnicamente no eres dueño de tus criptos.

Tipos de wallets

🔥

Hot Wallets

Conectadas a internet. Convenientes para uso diario.

  • Browser: MetaMask, Rabby
  • Mobile: Trust Wallet, Rainbow
❄️

Cold Wallets

Sin conexion a internet. Para guardar grandes cantidades.

  • Hardware: Ledger, Trezor

Seed Phrase: Tu respaldo

12 o 24 palabras que representan tu clave privada. Con estas palabras puedes recuperar tu wallet en cualquier dispositivo.

🚨 REGLAS DE ORO:
  • NUNCA compartas tu seed phrase con nadie
  • Ningun soporte legitimo te la pedira
  • Escribela en papel, no en tu computadora
  • Guardala en un lugar seguro

MetaMask: La wallet mas usada

MetaMask es la extension de navegador que usaras para conectarte a dApps. Instalala desde metamask.io

💡 Para practicar: Instala MetaMask, crea una wallet, y conectate a la testnet Sepolia para hacer pruebas sin gastar dinero real.

📜 Smart Contracts: El corazon de Web3

¿Que es un smart contract?

Un programa que vive en la blockchain. Se ejecuta automaticamente cuando se cumplen ciertas condiciones. Nadie puede detenerlo ni cambiarlo.

🎯 Quedate con esta idea: Una maquina expendedora. Metes dinero, seleccionas producto, y automaticamente te lo da. No necesitas confiar en un vendedor.

¿Que NO es un smart contract?

  • NO es un contrato legal: Es codigo, no un documento juridico
  • NO es inteligente: Solo ejecuta lo que le programaron
  • NO puede actuar solo: Necesita que alguien lo llame para ejecutarse

¿Para que sirven?

Caracteristicas clave

✅ Inmutables

Una vez desplegados, no se pueden cambiar.

✅ Transparentes

El codigo es publico. Cualquiera puede verlo.

✅ Autonomos

Se ejecutan solos cuando se cumplen las condiciones.

Solidity: El lenguaje de Ethereum

La mayoria de smart contracts se escriben en Solidity. Si sabes JavaScript, te parecera familiar.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

// Un contrato super simple
contract MiPrimerContrato {
    // Variable que vive en blockchain
    string public mensaje;

    // Se ejecuta una vez al desplegar
    constructor(string memory _mensaje) {
        mensaje = _mensaje;
    }

    // Funcion para cambiar el mensaje
    function cambiarMensaje(string memory _nuevo) public {
        mensaje = _nuevo;
    }
}Solidity

¿Que es el Gas?

Gas es la unidad que mide el trabajo computacional. Cada operacion tiene un costo en gas.

🎯 Quedate con esta idea:
  • Leer datos = Gratis (no cambia nada en blockchain)
  • Escribir datos = Cuesta gas (modifica el estado on-chain)

Esto es fundamental: escribir en blockchain cuesta dinero. Por eso guardamos solo lo esencial on-chain.

Conceptos de Solidity para profundizar despues

  • msg.sender - Quien llama la funcion
  • msg.value - ETH enviados con la llamada
  • mapping - Como un diccionario clave-valor
  • modifier - Validaciones reutilizables
  • event - Logs para el frontend

🧟 Aprende Solidity jugando

🧟

CryptoZombies

cryptozombies.io

Tutorial interactivo donde aprendes Solidity creando un juego. Es gratis y muy entretenido.

🪙 Tokens: Smart contracts con balance

¿Que es un token?

Un token es simplemente un smart contract que lleva registro de balances. Vive DENTRO de una blockchain existente.

🎯 Quedate con esta idea: Un token es un smart contract con un mapping de direcciones a balances. Nada magico, solo codigo que dice "esta direccion tiene X tokens".
🟡

Coin vs Token

Coin: Nativo de blockchain (ETH, BTC)

Token: Creado con smart contract (USDT, UNI)

📋

¿Por que estandares (ERC)?

Para que todos los tokens funcionen igual en wallets y dApps.

Los dos estandares principales

ERC-20: Fungibles

Intercambiables

Cada token es igual a otro (como billetes).

Ejemplos: USDT, USDC, UNI, LINK

ERC-721: NFTs

Unicos

Cada token es diferente (como obras de arte).

Ejemplos: CryptoPunks, Bored Apes

Crear un token es facil

// Token ERC-20 con OpenZeppelin
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract MiToken is ERC20 {
    constructor() ERC20("MiToken", "MTK") {
        _mint(msg.sender, 1000000 * 10**decimals());
    }
}ERC-20

Con solo 6 lineas tienes un token funcional. OpenZeppelin hace el trabajo pesado.

🎨 NFTs: Ejemplo practico de on-chain vs off-chain

🎯 ¿Por que vemos NFTs aqui? No para aprender a crear colecciones de arte, sino porque los NFTs ilustran perfectamente la separacion on-chain vs off-chain.

El concepto clave

Un NFT es un smart contract con una estructura particular, no un archivo.

🔗 On-chain (en blockchain)

  • tokenId - Identificador unico
  • owner - Quien es el dueño
  • tokenURI - Link a los metadatos

Esto es inmutable y verificable

🌐 Off-chain (fuera de blockchain)

  • Imagen o video
  • Metadatos (nombre, descripcion)
  • Atributos y propiedades

Guardado en IPFS o servidores

🎯 Quedate con esta idea:
Un NFT NO es la imagen. El NFT es un registro de propiedad on-chain que apunta a un archivo off-chain. Guardar imagenes en blockchain seria muy caro.

¿Por que importa esto?

Este patron on-chain/off-chain aplica a casi todo en Web3:

Almacenamiento off-chain

IPFS es el estandar para almacenar archivos de forma descentralizada. Servicios como Pinata o NFT.Storage facilitan subir a IPFS.

💰 DeFi: Ejemplo de smart contracts en accion

📌 Esto es solo para entender el flujo: DeFi es un ecosistema complejo. Aqui solo vemos como los smart contracts habilitan servicios financieros sin intermediarios.

La idea central

DeFi usa smart contracts para recrear servicios financieros. Todo funciona con codigo: las reglas, los prestamos, los intercambios.

Tipos de aplicaciones

🔄

DEX (Exchanges)

Intercambiar tokens sin intermediario.

🏦

Lending

Prestar/pedir prestado con cripto.

⚠️ Importante: DeFi tiene riesgos reales (bugs, hacks, scams). Este curso no cubre DeFi a profundidad - solo es un ejemplo de smart contracts aplicados.

🛠️ Herramientas de desarrollo

📌 Para empezar solo necesitas: Remix (en el navegador) para prototipar, y eventualmente Hardhat para proyectos mas serios.

Tu stack de desarrollo

🎹

Remix IDE

Empieza aqui

IDE online perfecto para aprender. No requiere instalacion.

remix.ethereum.org

⚒️

Hardhat

Para proyectos reales

Framework profesional. Compilar, testear y desplegar.

npm install --save-dev hardhat
npx hardhat init

Estructura de un proyecto

mi-proyecto/
├── contracts/          # Smart contracts (.sol)
│   └── MiContrato.sol
├── scripts/            # Scripts de deploy
│   └── deploy.js
├── test/               # Tests
│   └── MiContrato.test.js
├── hardhat.config.js   # Configuracion
└── package.jsonEstructura

Comandos esenciales

Accion Comando
Compilar contratos npx hardhat compile
Correr tests npx hardhat test
Levantar red local npx hardhat node
Desplegar a testnet npx hardhat run scripts/deploy.js --network sepolia

Otras herramientas importantes

📚 OpenZeppelin

Contratos seguros y auditados listos para usar.

npm install @openzeppelin/contracts

🔍 Etherscan

Explorador de blockchain. Ver transacciones, verificar contratos.

🌐 Infura / Alchemy

Nodos como servicio. Conectarte a Ethereum sin correr tu propio nodo.

🌐 Web3: Conectando tu app a blockchain

🎯 Quedate con esta idea: Tu frontend (React, Vue, etc.) no habla directamente con blockchain. Usa una libreria (Ethers.js) que se comunica con la wallet del usuario, y la wallet firma y envia las transacciones.

El modelo mental

    ┌─────────────────────────────────────────────────┐
    │            TU FRONTEND (React, etc.)            │
    │                      │                          │
    │                      ▼                          │
    │              Ethers.js / Wagmi                  │
    │   (traduce JavaScript a llamadas blockchain)    │
    └──────────────────────┼──────────────────────────┘
                           │
                           ▼
    ┌─────────────────────────────────────────────────┐
    │              WALLET (MetaMask)                  │
    │   (guarda claves y firma transacciones)         │
    └──────────────────────┼──────────────────────────┘
                           │
                           ▼
    ┌─────────────────────────────────────────────────┐
    │               BLOCKCHAIN                        │
    │           Smart Contracts                       │
    └─────────────────────────────────────────────────┘
                

¿Que hace Ethers.js?

Ethers.js traduce tu codigo JavaScript a llamadas que blockchain entiende:

import { ethers } from "ethers";

// Conectar a MetaMask
const provider = new ethers.BrowserProvider(window.ethereum);
await provider.send("eth_requestAccounts", []);
const signer = await provider.getSigner();

// Leer balance
const balance = await provider.getBalance(signer.address);
console.log(ethers.formatEther(balance), "ETH");

// Interactuar con un contrato
const contract = new ethers.Contract(
  "0x...",   // direccion del contrato
  ABI,       // interfaz del contrato
  signer     // quien firma
);

// Llamar una funcion
const resultado = await contract.miFuncion();ethers.js

¿Que es el ABI?

El ABI (Application Binary Interface) es como el "manual" del contrato. Le dice a tu app que funciones existen y como llamarlas.

📌 No necesitas memorizar esto ahora: El ABI se genera automaticamente cuando compilas. Solo recuerda que necesitas el ABI para interactuar con un contrato.
🎯 Resumen del flujo:
  1. Tu app usa Ethers.js para preparar la llamada
  2. MetaMask muestra la transaccion al usuario
  3. El usuario firma con su clave privada
  4. La transaccion se envia a blockchain

Stack moderno para React: Wagmi + Viem

Si usas React, considera Wagmi que te da hooks listos para usar:

const { address, isConnected } = useAccount();
const { connect } = useConnect();
const { data: balance } = useBalance({ address });

🔒 Seguridad: Lo esencial

📌 Para este curso basico: Solo necesitas conocer las reglas de oro para proteger tus claves y algunas buenas practicas iniciales.

Reglas de oro para usuarios

  • NUNCA compartas tu seed phrase con nadie
  • NUNCA la ingreses en sitios web
  • Nadie legitimo te la pedira jamas
  • Verifica URLs antes de conectar tu wallet

Para desarrolladores

🛡️ Buenas practicas iniciales

  • Usa OpenZeppelin (codigo auditado)
  • Usa Solidity 0.8+ (proteccion overflow)
  • Testea antes de desplegar

Para profundizar despues

  • Ethernaut: Practica seguridad hackeando contratos vulnerables
  • Reentrancy: El bug mas famoso - actualiza estado ANTES de llamadas externas

📚 ¿Por donde seguir?

🎯 Tu siguiente paso: Abre CryptoZombies y completa las primeras lecciones. Es la mejor forma de consolidar lo aprendido hoy.

Cursos interactivos (gratuitos)

🧟

CryptoZombies

Empieza aqui

cryptozombies.io

Aprende Solidity creando un juego.

🏃

Speedrun Ethereum

speedrunethereum.com

Challenges para construir dApps.

🔐

Ethernaut

ethernaut.openzeppelin.com

Practica seguridad hackeando contratos.

Documentacion oficial

  • Solidity: docs.soliditylang.org
  • Ethereum: ethereum.org/developers
  • Hardhat: hardhat.org/docs
  • OpenZeppelin: docs.openzeppelin.com
  • Ethers.js: docs.ethers.org
  • Wagmi: wagmi.sh

Testnets para practicar

Practica sin gastar dinero real:

Testnet Red Faucet
Sepolia Ethereum sepoliafaucet.com
Mumbai Polygon faucet.polygon.technology

🎉 ¡Gracias por participar!

Ahora tienes las bases para explorar Web3.

Recuerda: lo mas importante es practicar. Abre Remix, crea un contrato, despliega en testnet.