Prerequisitos
Antes de sumergirte en el desarrollo de Bitcoin, deberías tener conocimientos prácticos en las siguientes áreas. No necesitas ser un experto — pero tener una base sólida hará que todo lo demás sea mucho más fluido.
Programación
Deberías sentirte cómodo con al menos un lenguaje de programación de propósito general. Los más comunes en el ecosistema Bitcoin son:
- C++ — Bitcoin Core está escrito en C++. Esencial para el desarrollo de protocolo.
- Python — Excelente para scripting, testing y prototipado rápido. Ampliamente usado en herramientas de Bitcoin.
- JavaScript/TypeScript — La opción principal para wallets web, herramientas y apps Lightning.
- Rust — Creciendo rápidamente en el espacio Bitcoin (BDK, LDK y muchos proyectos nuevos).
- Go — Usado en herramientas de infraestructura como btcd, lnd.
Más allá de un lenguaje específico, deberías entender:
- Estructuras de datos (arrays, hash maps, árboles, listas enlazadas)
- Algoritmos (ordenamiento, búsqueda, recorrido de grafos)
- Conceptos de programación orientada a objetos y funcional
- Control de versiones con Git
Matemáticas y Criptografía
Bitcoin depende fuertemente de la criptografía. Deberías entender:
- Aritmética modular — La base de la mayoría de las operaciones criptográficas
- Funciones hash — SHA-256, RIPEMD-160 y sus propiedades (resistencia a preimagen, resistencia a colisiones)
- Criptografía de curva elíptica (ECC) — Bitcoin usa la curva secp256k1 para firmas digitales
- Firmas digitales — Cómo funcionan ECDSA y las firmas Schnorr a alto nivel
- Árboles de Merkle — Usados en los encabezados de bloques y verificación de transacciones
No necesitas un título en matemáticas, pero estar familiarizado con estos conceptos te ayudará a entender por qué Bitcoin funciona como lo hace.
Sistemas y Redes
Bitcoin es un sistema distribuido. La familiaridad con estos temas será valiosa:
- Sistemas operativos — Gestión de procesos, sistemas de archivos, gestión de memoria
- Redes — TCP/IP, HTTP, protocolos peer-to-peer, sockets
- Línea de comandos — Navegación por la terminal, shell scripting, gestión de paquetes
- Linux/macOS — La mayoría del desarrollo de Bitcoin ocurre en sistemas tipo Unix
- Bases de datos — Comprensión básica de almacenes clave-valor y bases de datos relacionales
Recursos Recomendados
- Learn X in Y Minutes — Resúmenes rápidos de lenguajes
- Khan Academy Cryptography — Fundamentos de criptografía
- Christof Paar's Crypto Lectures — Criptografía a nivel universitario
- The Missing Semester (MIT) — Línea de comandos, Git y herramientas para desarrolladores