Eché un vistazo a https://en.bitcoin.it/wiki/Protocol_documentation donde se documenta el protocolo p2p. Aunque indica que está incompleto, pensé que es un buen punto de partida para comprender el protocolo. Según mi comprensión inicial, el protocolo se basa en estructuras c que se envían directamente por cable. Esto hace que las implementaciones en otros lenguajes sean más complejas.
¿Sería posible introducir un nuevo protocolo basado en un método de comunicación conocido (por ejemplo, JSON) y realizar una transición fluida entre los protocolos? Por ejemplo, con los nodos puente, que utilizan dos protocolos en un período de transición.
Sí, el protocolo p2p en sí mismo no es crítico para el consenso. Por supuesto, no puede haber dos redes completamente separadas, por lo que deberá tener cuidado de crear puentes entre las dos. Pero aparte de eso, podría crear una red p2p de sneakernet donde la gente intercambie memorias USB si lo desea.
stefano