Bitcoin no tiene un servidor central. Los nodos hablan directamente entre sí por un protocolo peer-to-peer sencillo, por defecto en el puerto TCP 8333.
El marco del mensaje
En el protocolo original (v1), cada mensaje empieza con una cabecera: 4 bytes «mágicos» que identifican la red (F9 BE B4 D9 en mainnet), un nombre de comando de 12 bytes, una longitud de carga y un checksum de 4 bytes. El tráfico no está cifrado.
v2: transporte cifrado
BIP324 añade un transporte cifrado. Bitcoin Core lo admite y lo ha activado por defecto desde la versión 27.0. No autentica pares, pero hace mucho más difícil el espionaje pasivo y la manipulación.
El apretón de manos
Dos nodos intercambian mensajes version (versión de software, servicios ofrecidos, mejor altura) y confirman con verack. Mensajes de función como sendheaders, sendcmpct, wtxidrelay y sendaddrv2 se envían alrededor del apretón de manos.
Difundir datos
invanuncia «tengo esta transacción o bloque».getdatala pide, ytxoblockla entrega.headersygetheadersintercambian cabeceras de bloque, hasta 2.000 a la vez.cmpctblock,getblocktxnyblocktxnllevan bloques compactos (BIP152).feefilterdice a un par que no envíe transacciones por debajo de una feerate.ping/pongcomprueban que la conexión está viva.
Encontrar pares
Un nodo nuevo primero pide a semillas DNS, gestionadas por miembros conocidos de la comunidad, direcciones. Después aprende más mediante mensajes addr y addrv2. El addrv2 de BIP155 puede llevar direcciones Tor v3, I2P y CJDNS.
Resistiendo ataques
Bitcoin Core hace por defecto 8 conexiones salientes de relay completo y 2 solo de relay de bloques. Elige direcciones de distintos grupos de red para que un atacante no pueda rodear fácilmente un nodo (un «ataque eclipse»). Los pares que envían datos inválidos se desconectan.
Conclusión
La capa P2P solo mueve datos. Cada nodo sigue comprobando cada bloque y transacción contra las reglas de consenso por sí mismo.