Removal of reject network messages from Bitcoin Core (BIP61)



Summary:

Bitcoin Core has a feature where it may send "reject" messages in response to certain messages from a network peer. However, this feature is toggled by the `-enablebip61` command line option and has been disabled by default since Bitcoin Core version 0.18.0. This is because nodes on the network cannot generally be trusted to send valid ("reject") messages, so the feature should only be used when connected to a trusted node.There is currently no known software that requires this feature, and the proposal is to remove it from Bitcoin Core to make the codebase slimmer, easier to understand and maintain. However, if any applications rely on this feature, they are encouraged to let the developers know.The recommended alternatives for testing or debugging of implementations of the Bitcoin P2P network protocol include inspecting the log messages produced by a recent version of Bitcoin Core, which logs debug messages to a stream or file. Testing the validity of a block can be achieved through specific RPCs such as `submitblock` and `getblocktemplate`. Similarly, testing the validity of a transaction can be achieved through specific RPCs such as `sendrawtransaction` and `testmempoolaccept`.Wallets should not use the absence of "reject" messages to indicate a transaction has propagated the network, nor should wallets use "reject" messages to set transaction fees. Instead, wallets should use fee estimation to determine transaction fees and set replace-by-fee if desired. They could wait until the transaction has confirmed (taking into account the fee target) or listen for the transaction announcement by other network peers to check for propagation.The proposal is to remove "reject" messages from Bitcoin Core 0.19.0 unless there are valid concerns about its removal.


Updated on: 2023-06-13T17:15:48.909592+00:00