dash/doc/release-notes-17004.md
Wladimir J. van der Laan 091d813e00 Merge #17004: validation: Remove REJECT code from CValidationState
9075d13153ce06cd59a45644831ecc43126e1e82 [docs] Add release notes for removal of REJECT reasons (John Newbery)
04a2f326ec0f06fb4fce1c4f93500752f05dede8 [validation] Fix REJECT message comments (John Newbery)
e9d5a59e34ff2d538d8f5315efd9908bf24d0fdc [validation] Remove REJECT code from CValidationState (John Newbery)
0053e16714323c1694c834fdca74f064a1a33529 [logging] Don't log REJECT code when transaction is rejected (John Newbery)
a1a07cfe99fc8cee30ba5976dc36b47b1f6532ab [validation] Fix peer punishment for bad blocks (John Newbery)

Pull request description:

  We no longer send BIP 61 REJECT messages, so there's no need to set
  a REJECT code in the CValidationState object.

  Note that there is a minor bug fix in p2p behaviour here. Because the
  call to `MaybePunishNode()` in `PeerLogicValidation::BlockChecked()` only
  previously happened if the REJECT code was > 0 and < `REJECT_INTERNAL`,
  then there are cases were `MaybePunishNode()` can get called where it
  wasn't previously:

  - when `AcceptBlockHeader()` fails with `CACHED_INVALID`.
  - when `AcceptBlockHeader()` fails with `BLOCK_MISSING_PREV`.

  Note that `BlockChecked()` cannot fail with an 'internal' reject code. The
  only internal reject code was `REJECT_HIGHFEE`, which was only set in
  ATMP.

  This reverts a minor bug introduced in 5d08c9c579.

ACKs for top commit:
  ariard:
    ACK 9075d13, changes since last reviewed are splitting them in separate commits to ease understanding and fix nits
  fjahr:
    ACK 9075d13153ce06cd59a45644831ecc43126e1e82, confirmed diff to last review was fixing nits in docs/comments.
  ryanofsky:
    Code review ACK 9075d13153ce06cd59a45644831ecc43126e1e82. Only changes since last review are splitting the main commit and updating comments

Tree-SHA512: 58e8a1a4d4e6f156da5d29fb6ad6a62fc9c594bbfc6432b3252e962d0e9e10149bf3035185dc5320c46c09f3e49662bc2973ec759679c0f3412232087cb8a3a7
2023-04-17 10:42:25 -05:00

1.2 KiB

P2P and network changes

Removal of reject network messages from Dash Core (BIP61)

The command line option to enable BIP61 (-enablebip61) has been removed.

This feature has been disabled by default since Dash Core version 0.19.0. Nodes on the network can not generally be trusted to send valid ("reject") messages, so this should only ever be used when connected to a trusted node.

Since Dash Core version 0.20.0 there are extra changes:

The removal of BIP61 REJECT message support also has the following minor RPC and logging implications:

  • testmempoolaccept and sendrawtransaction no longer return the P2P REJECT code when a transaction is not accepted to the mempool. They still return the verbal reject reason.

  • Log messages that previously reported the REJECT code when a transaction was not accepted to the mempool now no longer report the REJECT code. The reason for rejection is still reported.

Updated RPCs

  • testmempoolaccept and sendrawtransaction no longer return the P2P REJECT code when a transaction is not accepted to the mempool. See the Section Removal of reject network messages from Bitcoin Core (BIP61) for details on the removal of BIP61 REJECT message support.