Protocolo P2P
Cómo los nodos se encuentran, comunican y mantienen consenso sin coordinación central.
Arquitectura de la red
Bitcoin es una red peer-to-peer (P2P): los nodos se conectan directamente entre sí sin servidores centrales. No hay jerarquía. Cada nodo es igual a los demás.
Cuando ejecutas un nodo Bitcoin, te conectas a otros nodos (peers), recibes y envías transacciones, descargas y verificas bloques, y contribuyes a la propagación de información.
Descubrimiento de peers
¿Cómo encuentra tu nodo otros nodos para conectarse?
DNS seeds
Bitcoin Core tiene hardcoded varios "DNS seeds": dominios que responden con direcciones IP de nodos activos.
Al iniciar por primera vez, el nodo consulta estos DNS seeds y obtiene una lista inicial de peers.
Mensaje addr
Una vez conectado, los nodos intercambian direcciones de otros nodos que conocen mediante mensajes addr. Tu nodo guarda estas direcciones para futuras conexiones.
Conexiones manuales
También puedes añadir peers manualmente con addnode si conoces direcciones específicas.
El handshake inicial
Cuando tu nodo se conecta a un peer:
- version: Envía información sobre tu nodo (versión del software, altura del blockchain, servicios que ofreces)
- verack: El peer responde con su propia información y un acknowledgment
- Negociación: Ambos determinan qué features soportan mutuamente
Después del handshake, los nodos pueden intercambiar transacciones, bloques y otra información.
Mensajes principales del protocolo
Inventario y solicitud
inv(inventory): "Tengo estos items (transacciones o bloques)"getdata: "Envíame estos items específicos"notfound: "No tengo lo que pediste"
Transacciones
tx: Una transacción completamempool: Solicita el inventario de la mempool del peer
Bloques
block: Un bloque completoheaders: Solo los headers (para sincronización inicial rápida)getheaders: Solicita headers a partir de cierto puntogetblocks: Solicita inventario de bloques
Sincronización
sendheaders: Pide que el peer anuncie bloques nuevos con headers directamentesendcmpct: Negocia el uso de compact blocks
Propagación de transacciones
Cuando creas una transacción:
- Tu wallet la envía a tu nodo (o al nodo al que está conectada)
- Tu nodo verifica la transacción
- Si es válida, la añade a su mempool
- Anuncia la transacción a sus peers con
inv - Los peers interesados la solicitan con
getdata - Les envías la transacción con
tx - Ellos verifican, añaden a su mempool, y propagan a sus peers
En segundos, una transacción válida se propaga a toda la red.
Propagación de bloques
Similar a las transacciones, pero más crítico en tiempo:
- Un minero encuentra un bloque válido
- Lo anuncia a sus peers
- Los peers lo solicitan, verifican, y propagan
- Cada nodo actualiza su vista del blockchain
La velocidad de propagación importa: mientras un bloque se propaga, otro minero podría encontrar un bloque competidor (stale block/orphan).
Compact blocks (BIP 152)
Problema: los bloques pueden ser grandes (1-2 MB). Transmitirlos completos es lento.
Solución: compact blocks. En vez del bloque completo:
- El minero envía un "compact block": header + IDs cortos de las transacciones
- El receptor ya tiene la mayoría de transacciones en su mempool
- Solo solicita las transacciones que no tiene
- Reconstruye el bloque localmente
Esto reduce drásticamente el ancho de banda y acelera la propagación.
Ataques de red
Eclipse attack
Un atacante controla todos los peers de tu nodo. Puede:
- Mostrarte una blockchain falsa
- Ocultarte transacciones o bloques
- Hacer que creas que tus transacciones se confirmaron cuando no
Mitigación:
- Conectar a muchos peers diversos
- Usar Tor para dificultar el targeting
- Conexiones manuales a nodos de confianza
Sybil attack
Un atacante crea muchos nodos falsos para dominar la red.
Mitigación:
- No confiar en métricas que dependan del número de nodos
- El consenso de Bitcoin no depende de "votos" de nodos sino de proof-of-work
DoS attacks
Enviar mensajes malformados o excesivos para consumir recursos del nodo.
Mitigación:
- Límites de tasa en mensajes
- Banning de peers que se comportan mal
- Validación estricta antes de propagar
Tor y privacidad de red
Tu IP es visible para los peers a los que te conectas. Para mayor privacidad:
- Bitcoin Core soporta conexiones vía Tor
- Puedes configurar tu nodo para anunciar una dirección .onion
- Las conexiones Tor añaden latencia pero mejoran la privacidad
El protocolo P2P de Bitcoin ha evolucionado significativamente desde 2009. Cada mejora busca hacer la red más eficiente y resistente sin comprometer la descentralización. BIP 152 (compact blocks), Erlay (propuesta para reducir ancho de banda de inventario), y otras mejoras continúan desarrollándose.
Puente al nivel 6
Has llegado al núcleo técnico de Bitcoin: criptografía, scripts, transacciones, bloques, protocolo. Ahora la pregunta es: ¿por qué todo esto importa? El nivel 6 explora la filosofía detrás del protocolo y cómo contribuir a su futuro.