O Bitcoin não tem servidor central. Nós falam diretamente uns com os outros por um protocolo peer-to-peer simples, por padrão na porta TCP 8333.
O quadro da mensagem
No protocolo original (v1), cada mensagem começa com um cabeçalho: 4 bytes «mágicos» que identificam a rede (F9 BE B4 D9 na mainnet), um nome de comando de 12 bytes, um comprimento de carga e um checksum de 4 bytes. O tráfego é sem criptografia.
v2: transporte criptografado
BIP324 adiciona um transporte criptografado. O Bitcoin Core o apoia e o ativou por padrão desde a versão 27.0. Não autentica peers, mas torna a espionagem passiva e a adulteração bem mais difíceis.
O handshake
Dois nós trocam mensagens version (versão do software, serviços oferecidos, melhor altura) e confirmam com verack. Mensagens de recurso como sendheaders, sendcmpct, wtxidrelay e sendaddrv2 são enviadas em torno do handshake.
Espalhar dados
invanuncia «tenho esta transação ou bloco».getdatapede, etxoublockentrega.headersegetheaderstrocam cabeçalhos de bloco, até 2.000 de uma vez.cmpctblock,getblocktxneblocktxncarregam blocos compactos (BIP152).feefilterdiz a um peer para não enviar transações abaixo de uma feerate.ping/pongverificam se a conexão está viva.
Encontrar peers
Um nó novo primeiro pede a seeds DNS, geridos por membros conhecidos da comunidade, endereços. Depois aprende mais por mensagens addr e addrv2. O addrv2 do BIP155 pode carregar endereços Tor v3, I2P e CJDNS.
Resistindo a ataques
O Bitcoin Core faz por padrão 8 conexões de saída de relay completo e 2 só de relay de bloco. Escolhe endereços de grupos de rede diferentes para que um atacante não possa facilmente cercar um nó (um «ataque eclipse»). Peers que enviam dados inválidos são desconectados.
Conclusão
A camada P2P só move dados. Cada nó ainda checa cada bloco e transação contra as regras de consenso por si mesmo.