On 02/13/2017 02:16 AM, Matt Corallo wrote: > For the reasons Pieter listed, an explicit part of our version handshake and protocol negotiation is the exchange of otherwise-ignored messages to set up optional features. Only if the peer is at the protocol level that allows the message: compact blocks: https://github.com/bitcoin/bitcoin/blob/master/src/protocol.h#L217-L242 fee filter: https://github.com/bitcoin/bitcoin/blob/master/src/protocol.h#L211-L216 send headers: https://github.com/bitcoin/bitcoin/blob/master/src/protocol.h#L204-L210 filters: https://github.com/bitcoin/bitcoin/blob/master/src/protocol.h#L170-L196 > Peers that do not support this ignore such messages, just as if they had indicated they wouldn't support it, see, eg BIP 152's handshake. Not sure why you consider this backwards incompatible, as I would say it's pretty clearly allowing old nodes to communicate just fine. No, it is not the same as BIP152. Control messages apart from BIP151 are not sent until *after* the version is negotiated. I assume that BIP151 is different in this manner because it has a desire to negotiate encryption before any other communications, including version. e