Misbehaving Nodes#

📘 Changes regarding misbehaving peers

Dash Core 18.1.0 introduced changes to how misbehaving peers are treated.

Take note that for both types of broadcasting, mechanisms are in place to punish misbehaving peers who take up bandwidth and computing resources by sending false information. Since Dash Core 18.1.0, peers that misbehave (e.g. send us invalid blocks) are referred to as discouraged nodes in log output. They are not strictly banned: incoming connections are still allowed from them, but they’re preferred for eviction.

Furthermore, a few additional changes are introduced to how discouraged addresses are treated:

  • Discouraging an address does not time out automatically after 24 hours (or the -bantime setting). Depending on traffic from other peers, discouragement may time out at an indeterminate time.

  • Discouragement is not persisted over restarts.

  • There is no method to list discouraged addresses. They are not returned by the listbanned RPC.

  • Discouragement cannot be removed with the setban remove RPC command. If you need to remove a discouragement, you can remove all discouragements by stopping and restarting your node.

If a peer gets a banscore above the -banscore=<n> threshold (100 by default), they will be disconnected and discouraged.

Type

Misbehavior

Ban Score

Description

Net

GetBlockTxn Index Error

100

Peer relayed a getblocktxn message with out-of-bound indices

Net

Bloom Filter Service

100

Bloom filter message received from peer that has bloom filter commands disabled by default (protocol version > 70201) (filterload message, filteradd message, or filterclear message)

Net

Block Rejected

1

Peer rejected the block it requested from us

Net

Duplicate Version

1

Duplicate version message received

Net

Wrong Devnet

100

Peer responded with the wrong devnet version (version message)

Net

Wrong Devnet

1

Peer connected using the wrong devnet version (version message)

Net

No Version

1

Received a message prior to receiving a version message

Net

No Verack

1

After sending version message, received a message other than a verack message back first

Net

Address List Size

20

More than 1000 addresses received (addr message)

Net

Inventory List

20

More than MAX_INV_SZ (50000) inventories received (inv message)

Net

Get Data Size

20

More than MAX_INV_SZ (50000) inventories requested (getdata message)

Net

Orphan Transaction

Varies

Peer relayed an invalid orphan transaction. Ban score varies from 0-100 based on the specific reason (values set by AcceptToMemoryPoolWorker())

Net

Bad Transaction

Varies

Transaction rejected from the mempool

Net

Invalid Header

Varies

Invalid block header received from peer (cmpctblock message)

Net

Invalid CompactBlock

100

Invalid compact block /non-matching block transactions received from peer (cmpctblock message)

Net

Header List Size

20

More than MAX_HEADERS_RESULTS (2000) headers received (headers message)

Net

Header List Sequence

20

Non-continous headers sequence received (headers message)

Net

Invalid Block

Varies

Invalid block header received from peer

Net

Bloom Filter Size

100

Maximum script element size (520) exceeded (filterload message or filteradd message)

Net

MN List Diff

1

Failed to get masternode list diff (getmnlistd message)

Net

Unrequested MN List Diff

100

Peer provided an unrequested masternode list diff (mnlistdiff message)

InstantSend

Invalid Lock Message

100

Invalid TXID or inputs in lock message (isdlock message)

InstantSend

Verify Error

20

Peer relayed a message that failed to verify

LLMQ ChainLock

Invalid

10

Invalid ChainLock message (clsig message)

LLMQ Commitment

Null QcTx

100

Peer relayed a block with a null commitment

LLMQ Commitment

Invalid LLMQ Type

100

Peer relayed a block containing an invalid LLMQ Type

LLMQ Commitment

Invalid Height

100

Peer relayed a block that is not the first block in the DKG interval

LLMQ Commitment

Invalid Commitment

100

Peer relayed a block with an invalid quorum commitment

LLMQ DKG

Empty Message

100

Peer relayed a message with no payload

LLMQ DKG

Invalid LLMQ Type

100

Peer relayed a message for an incorrect LLMQ Type

LLMQ DKG

Invalid Message

100

Peer relayed a message that could not be deserialized

LLMQ DKG

Preverify Failed

100

Peer relayed a message that could not be pre-verified

LLMQ DKG

Signature

100

Peer relayed a message with an invalid signature

LLMQ DKG

Full Verify Failed

100

Peer relayed a message that failed full verification

LLMQ Signing

Too Many Messages

100

Maximum message count exceed in qsigsesann message, qsigsinv message, qgetsigs message, or qbsigs message

LLMQ Signing

Signature

100

Peer relayed a message with an invalid recovered signature or signature share

Masternode Authentication

Duplicate Message

100

Only 1 message allowed (mnauth message)

Masternode Authentication

Invalid Services

100

Peer not advertising NODE_NETWORK or NODE_BLOOM services (mnauth message)

Masternode Authentication

Empty Hash

100

Peer relayed a message with a null ProRegTx hash (mnauth message)

Masternode Authentication

Signature

100

Peer relayed a message with an invalid signature (mnauth message)

Masternode Authentication

Invalid MN

10

Peer not in the valid masternode list (mnauth message)

Masternode Authentication

Invalid Signature

10

Signature verification failed (mnauth message)

Governance

Sync

20

Requesting a governance sync too frequently (govsync message with empty hash)

Governance

Invalid Object

20

Peer relayed an invalid governance object (govobj message)

Governance

Invalid Vote

20

Peer relayed an invalid/invalid old vote(govobjvote message)

Governance

Unsupported Vote Signal

20

Vote signal outside the accepted range (see govobjvote message)

CoinJoin

Signature

10

Peer relayed a message with an invalid signature (dsq message)

Spork

Invalid Time

100

Peer relayed a spork with a timestamp too far in the future (spork message)

Spork

Signature

100

Peer relayed a spork with an invalid signature (spork message)