HomePhabricator

Clean up banning levels

Description

Clean up banning levels

Summary:
Compared with previous bans, the following changes are made:

  • Txn with empty vin/vout or null prevouts move from 10 DoS points to 100.
  • Loose transactions with a dependency loop now result in a ban instead of 10 DoS points.
  • Many pre-segwit soft-fork errors now result in a ban. Note: Transactions that violate soft-fork script flags since P2SH do not generally result in a ban. Also, banning behavior for invalid blocks is dependent on whether the node is validating with multiple script check threads, due to a long- standing bug. That inconsistency is still present after this commit.
  • Proof of work failure moves from 50 DoS points to a ban.
  • Blocks with timestamps under MTP now result in a ban, blocks too far in the future continue to *not* result in a ban.
  • Inclusion of non-final transactions in a block now results in a ban instead of 10 DoS points.

Co-authored-by: Anthony Towns <aj@erisian.com.au>

This is a partial backport of Core PR15141 : https://github.com/bitcoin/bitcoin/pull/15141/commits/7b999103e21509e1c2dec10f68e48744ffe90f55

Depends on D6684

Test Plan:

ninja all check-all

Reviewers: #bitcoin_abc, Fabien

Reviewed By: #bitcoin_abc, Fabien

Differential Revision: https://reviews.bitcoinabc.org/D6685

Details

Provenance
Matt Corallo <git@bluematt.me>Authored on Jan 23 2019, 20:14
deadalnixCommitted on Jun 23 2020, 16:49
deadalnixPushed on Jun 23 2020, 16:49
Reviewer
Restricted Project
Differential Revision
D6685: Clean up banning levels
Parents
rABC6523d29f7cf4: [refactor] drop IsInvalid(nDoSOut)
Branches
Unknown
Tags
Unknown