Author: Eric Voskuil 2022-10-05 20:43:10
Published on: 2022-10-05T20:43:10+00:00
The Bitcoin versioning scheme has been broken, which creates a requirement to consider any unknown message type as valid. Previously, it had been possible to validate messages by type, but recently deployed protocol changes have made it a matter of protocol for peers to allow others to waste their bandwidth to remain compatible. This is an undocumented compatibility break that should be eliminated. The only message that is not preceded by a bumped version number is addrv2, although sendaddrv2 is the message that would cause the break. SENDADDRV2 gating was merged in December 2020 and included from 0.21.0rc3 onwards. Nodes advertising version 70013 are receiving sendaddrv2, and there are no unexpected messages when advertising version 70015 or lower. The logs have shown that nodes with an advertised protocol version of 70013 are receiving sendaddrv2 messages, causing the issue to occur more frequently. This is similar to the time when BIP150 nodes were being deployed on mainnet, which led to consistent invalid message traffic on the network. At the time, some argued that allowance for invalid messages was a longstanding requirement in the protocol, but this was not the case except for BIP37. Libbitcoin validates all messages, and this led to documentation of the issue. Recently, the Generic Package Relay proposal was reviewed, and this led to the discovery of issues with BIP155 and BIP330 as well.
Updated on: 2023-06-15T21:44:23.758854+00:00