🔗 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.
¿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:
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
"Hola" →
0x3d5f1c..."hola" →
0x8a7b2e...Un solo caracter cambia todo el hash.
2. Claves Publica y Privada: Tu identidad
En blockchain, tu identidad es un par de claves matematicamente relacionadas:
Tu contraseña secreta
NUNCA compartir
Se deriva de la privada
Puedes compartirla
Como tu "numero de cuenta"
0x742d35Cc...
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?
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.
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.
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.
- 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
📜 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.
¿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?
- Tokens: Crear tu propia moneda o puntos
- NFTs: Certificados de propiedad unicos
- DeFi: Prestamos, exchanges, sin intermediarios
- DAOs: Organizaciones gobernadas por codigo
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.
- 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 funcionmsg.value- ETH enviados con la llamadamapping- Como un diccionario clave-valormodifier- Validaciones reutilizablesevent- 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.
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
El concepto clave
Un NFT es un smart contract con una estructura particular, no un archivo.
🔗 On-chain (en blockchain)
tokenId- Identificador unicoowner- Quien es el dueñotokenURI- 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
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:
- Guardamos solo lo esencial en blockchain (propiedad, saldos, reglas)
- Guardamos datos pesados fuera (imagenes, documentos, archivos)
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
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.
🛠️ Herramientas de desarrollo
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
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:
- Conectar con la wallet del usuario
- Leer datos de smart contracts (gratis)
- Escribir datos en smart contracts (requiere firma y gas)
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.
- Tu app usa Ethers.js para preparar la llamada
- MetaMask muestra la transaccion al usuario
- El usuario firma con su clave privada
- 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
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?
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.