Proposed new P2P command and response: getcmds, cmdlist



Summary:

In an email conversation, Jeff Garzik discusses the present version of Bitcoin’s peer-to-peer (P2P) protocol. While it is easy to make a protocol change and increase PROTOCOL_VERSION in the Satoshi client, other non-Satoshi codebases face difficulties since the P2P protocol already has numerous magic numbers, binary data structures, and complex interactions that are difficult to understand without complete documentation. In contrast to modern protocols like HTTP and JSON, bitcoin’s P2P protocol is fragile, inflexible, and outdated when it comes to parameter/extension exchange and negotiation. Garzik calls it a “zoo of complicated and potentially buggy interactions” with scarce, incomplete documentation, which makes it hard for other non-Satoshi codebase maintainers to work on the same. He further explains how even iSCSI, implemented on hard drive firmware, has the ability to exchange key=value parameters between local and remote sides of the Remote Procedure Call (RPC) connection.


Updated on: 2023-06-06T05:25:14.819807+00:00