Proyectos Prácticos
La mejor forma de aprender es construyendo. Estos proyectos están organizados por nivel de dificultad, cada uno diseñado para reforzar conceptos específicos del roadmap.
Todos los proyectos deben construirse y probarse en regtest. Nunca uses mainnet para experimentos de desarrollo.
Principiante
1. Generador de Direcciones
Construye una herramienta que genere direcciones Bitcoin de diferentes tipos.
- Habilidades practicadas: Generación de claves, hashing, codificación de direcciones
- Stack sugerido: Python + python-bitcoinlib, o JavaScript + bitcoinjs-lib
- Secciones relacionadas: Prerequisitos, Fundamentos de Bitcoin
Pasos:
- Generar una clave privada aleatoria
- Derivar la clave pública (secp256k1)
- Generar una dirección Legacy (P2PKH —
1...) - Generar una dirección SegWit (P2WPKH —
bc1q...) - Generar una dirección Taproot (P2TR —
bc1p...) - Mostrar la clave privada en formato WIF
- Verificar las direcciones usando
bitcoin-cli validateaddress
2. Parser de Transacciones
Construye una herramienta que decodifique y muestre transacciones Bitcoin raw.
- Habilidades practicadas: Estructura de transacciones, serialización, opcodes de Script
- Stack sugerido: Python o Rust
- Secciones relacionadas: Arquitectura de Bitcoin
Pasos:
- Aceptar un hex de transacción raw como entrada
- Parsear la versión, inputs, outputs y locktime
- Para cada input: mostrar txid, vout, scriptSig
- Para cada output: mostrar valor, scriptPubKey, tipo de dirección
- Calcular y mostrar el txid (doble SHA-256 de la tx serializada)
- Manejar formatos de transacción tanto legacy como SegWit
- Probar con transacciones de
bitcoin-cli getrawtransaction
3. CLI Wallet
Construye un wallet simple de línea de comandos que gestione claves y envíe transacciones.
- Habilidades practicadas: Derivación de claves HD, gestión de wallet, interacción RPC
- Stack sugerido: JavaScript + bitcoinjs-lib + bip32/bip39, o Rust + BDK
- Secciones relacionadas: Desarrollo de Wallets, Desarrollo Básico
Pasos:
- Generar una frase semilla mnemónica (BIP-39)
- Derivar claves HD usando ruta BIP-84 (
m/84'/1'/0'/0/ipara testnet) - Generar direcciones de recepción
- Mostrar saldo consultando el nodo
- Construir y firmar una transacción para enviar fondos
- Transmitir la transacción
- Guardar/cargar estado del wallet a un archivo (encriptado)
Intermedio
4. Explorador de Bloques
Construye un explorador de bloques web para tu red regtest local.
- Habilidades practicadas: Integración RPC, modelado de datos, desarrollo web
- Stack sugerido: Node.js + Express + cualquier frontend, o Python + Flask
- Secciones relacionadas: Librerías y SDKs
Pasos:
- Conectar a Bitcoin Core vía RPC
- Mostrar los últimos bloques con hash, altura, timestamp, conteo de tx
- Clic en un bloque para ver sus transacciones
- Clic en una transacción para ver inputs, outputs y montos
- Buscar por hash de bloque, txid o dirección
- Mostrar estadísticas del mempool (transacciones sin confirmar, comisiones totales)
- Agregar auto-refresh o actualizaciones WebSocket
5. Procesador de Pagos
Construye un sistema simple de procesamiento de pagos que genere facturas y rastree pagos.
- Habilidades practicadas: Generación de direcciones, detección de pagos, patrones de webhook
- Stack sugerido: Node.js o Python + Bitcoin Core RPC
- Secciones relacionadas: Procesamiento de Pagos
Pasos:
- Generar una dirección única por factura (derivación HD)
- Crear un endpoint de factura:
POST /invoice→ retorna dirección + monto - Monitorear la blockchain por pagos entrantes
- Rastrear conteo de confirmaciones por cada pago
- Marcar facturas como pagadas después de N confirmaciones
- Agregar callback webhook cuando el pago es confirmado
- Construir un dashboard simple mostrando estado de facturas
6. Monitor de Mempool
Construye una herramienta que monitoree el mempool y proporcione estimación de comisiones.
- Habilidades practicadas: Análisis de mempool, estimación de comisiones, visualización de datos
- Stack sugerido: Python o JavaScript + Bitcoin Core RPC
- Secciones relacionadas: Red P2P, Arquitectura de Bitcoin
Pasos:
- Consultar
getmempoolinfoygetrawmempoolperiódicamente - Agrupar transacciones por tasa de comisión (sat/vB)
- Mostrar un histograma de distribución de tasas de comisión
- Rastrear tamaño del mempool a lo largo del tiempo
- Estimar tiempo de confirmación para diferentes tasas de comisión
- Alertar cuando el mempool exceda un umbral
- Visualizar con un dashboard web o gráfico de terminal
Avanzado
7. Wallet Multisig
Construye un wallet multisig 2-de-3 con flujo de trabajo de firmado PSBT.
- Habilidades practicadas: Multisig, PSBT, descriptor wallets, firmado colaborativo
- Stack sugerido: Rust + BDK, o JavaScript + bitcoinjs-lib
- Secciones relacionadas: Protocolos Avanzados, Desarrollo de Wallets
Pasos:
- Generar 3 pares de claves independientes (simulando 3 firmantes)
- Crear un descriptor multisig 2-de-3 (
wsh(sortedmulti(2,...))) - Derivar direcciones de recepción del descriptor
- Recibir fondos a una dirección multisig
- Crear un PSBT sin firmar para una transacción de gasto
- Firmar con clave 1 → PSBT parcialmente firmado
- Firmar con clave 2 → PSBT completamente firmado
- Finalizar y transmitir
8. Gateway de Pagos Lightning
Construye un gateway de pagos que acepte pagos Lightning.
- Habilidades practicadas: Integración Lightning, gestión de facturas, sistemas de webhook
- Stack sugerido: Node.js + LND gRPC, o Rust + LDK
- Secciones relacionadas: Procesamiento de Pagos, Protocolos en Bitcoin
Pasos:
- Conectar a un nodo LND vía gRPC (o construir con LDK)
- Crear facturas BOLT-11 con monto y descripción
- Monitorear liquidación de facturas (streaming RPC o polling)
- Generar un código QR para la factura
- Construir una API REST: crear factura, verificar estado, listar pagos
- Agregar notificaciones webhook al liquidar pagos
- Mostrar una página de checkout simple
9. Indexador Personalizado
Construye un indexador de blockchain que rastree saldos de direcciones e historial de transacciones.
- Habilidades practicadas: Parsing de blockchain, diseño de base de datos, rastreo de UTXOs
- Stack sugerido: Rust o Go + PostgreSQL/SQLite
- Secciones relacionadas: Arquitectura de Bitcoin, Red P2P
Pasos:
- Conectar a Bitcoin Core y suscribirse a nuevos bloques
- Parsear las transacciones de cada bloque
- Extraer inputs y outputs con direcciones
- Mantener un conjunto UTXO en una base de datos
- Rastrear saldos de direcciones (suma de outputs no gastados)
- Construir una API: obtener saldo, obtener historial de transacciones, obtener UTXOs
- Manejar reorgs (rollback cuando un bloque se desconecta)
- Indexar desde génesis o desde una altura específica
Consejos para Todos los Proyectos
- Empieza en regtest — Bloques instantáneos, monedas gratis, control total
- Usa
bitcoin-cliprimero — Entiende las llamadas RPC antes de programar - Lee el código fuente — Cuando te atasques, mira cómo herramientas existentes resuelven el problema
- Mantenlo simple — Haz que el flujo básico funcione antes de agregar funcionalidades
- Comparte tu trabajo — Haz open-source de tus proyectos, obtén feedback de la comunidad