bitcoin-dev

BIP151 protocol incompatibility

BIP151 protocol incompatibility

Original Postby Matt Corallo

Posted on: February 13, 2017 13:04 UTC

The conversation started with a claim that ignoring incoming messages of a type you do not recognize is bad and the solution proposed was to disconnect/ban peers which send such messages.

However, it was pointed out that this is not necessary as anyone is free to send messages/transactions that they are generating and ignoring them would be crazy. The discussion then moved on to the term "backwards incompatible" which typically refers to breaking existing software but in this case, it would only affect theoretical software that does not yet exist. It was also noted that BIP 151 is still a draft and if such software existed, changes could be made accordingly. Eric Voskuil questioned Matt Corallo's statement about sending messages irrespective of version number and provided proof from the code that contradicted it. Matt responded by saying that he fails to see how adding additional messages that are ignored by old peers can be considered a lack of backward compatibility. Eric referred to preceding messages in the thread to clarify this point. Matt went on to explain that an explicit part of their protocol negotiation is the exchange of otherwise-ignored messages to set up optional features. These messages are ignored by peers that do not support them, thus allowing old nodes to communicate just fine. Control messages apart from BIP 151 are not sent until after the version is negotiated. The reason for BIP 151 being different in this regard is that it desires to negotiate encryption before any other communications take place, including version negotiation.