¿Sería posible cambiar el protocolo p2p utilizado por los clientes de bitcoin sin una bifurcación dura?

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.

He realizado una implementación del protocolo en javascript: github.com/getbitpocket/bitcoin-p2p-messages . Ya hay muchas implementaciones en otros idiomas también. Tenga en cuenta que la carga útil del mensaje es mucho menor con la serialización actual que con json. Creo que esto no cambiará en el futuro a una serialización json.

Respuestas (1)

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.

Si bien es cierto que puede modificar los protocolos P2P en muchos casos, algunos formatos de mensajes son críticos para el consenso. Por ejemplo, el formato del mensaje de bloque no se puede cambiar ya que el encabezado del bloque, tal como se define en el protocolo, se codifica para buscar un PoW válido.
@cdecker No, eso no es crítico dentro de la nueva red p2p personalizada sobre la que pregunta OP, solo cuando se comunica con el bitcoind "normal". Ese es el papel de esos puentes que mencioné. Dentro de la red p2p personalizada, puede, por ejemplo, usar el formato JSON u ocultarlos en archivos JPEG, o en bloques IBLT o cualquier locura. Observe cómo Matt's Relay Network hace algo similar: se conecta con la red p2p de Bitcoin, pero internamente no usa el protocolo p2p de Bitcoin.