Proposed new P2P command and response: getcmds, cmdlist



Summary:

The creator and maintainer of a full reimplementation of the Bitcoin protocol has stated that although the Bitcoin protocol is simple, it is filled with arbitrary endianness and magic numbers. The problem lies not in implementing the protocol, but in once having created a codebase, wanting to perfect and fine-tune the design. Changes to the Bitcoin protocol are more damaging than any issues with the current protocol. Although the author agrees with changes, they should be more conservative and have a longer time frame. Changes usually get added to the Satoshi client abruptly, which results in a week spent working to implement the change without proper consideration or reflection, compromising on design choices to remain compatible with the protocol. Despite this, the creator does not intend to slow down progress and tries to hedge against conservatism. Jeff Garzik responded to the above message and pointed out that for anyone maintaining a non-Satoshi codebase, the P2P protocol is already filled with all sorts of magic numbers, arbitrarily versioned binary data structures, and an unfriendly zoo of complicated and potentially buggy interactions. There is scant documentation on the wiki, making the Satoshi source code the only true reference. In comparison to other protocols, Bitcoin's P2P protocol is backwards, fragile, limited, and inflexible when it comes to parameter/extension exchange and negotiation. Jeff called the current P2P protocol "simple," but he believes that calling it so belies all the implementation details you absolutely must get right to run on mainnet today. Satoshi client devs hardly see the fragility and complexity inherent in the current legacy codebase built up over time.


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