Misbehaving Nodes

🚧

New site!

All content has been migrated to docs.dash.org. You will be automatically redirected momentarily.

📘

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.

TypeMisbehaviorBan ScoreDescription
NetGetBlockTxn Index Error100Peer relayed a getblocktxn message with out-of-bound indices
NetBloom Filter Service100Bloom filter message received from peer that has bloom filter commands disabled by default (protocol version > 70201) (filterload message, filteradd message, or filterclear message)
NetBlock Rejected1Peer rejected the block it requested from us
NetDuplicate Version1Duplicate version message received
NetWrong Devnet100Peer responded with the wrong devnet version (version message)
NetWrong Devnet1Peer connected using the wrong devnet version (version message)
NetNo Version1Received a message prior to receiving a version message
NetNo Verack1After sending version message, received a message other than a verack message back first
NetAddress List Size20More than 1000 addresses received (addr message)
NetInventory List20More than MAX_INV_SZ (50000) inventories received (inv message)
NetGet Data Size20More than MAX_INV_SZ (50000) inventories requested (getdata message)
NetOrphan TransactionVariesPeer relayed an invalid orphan transaction. Ban score varies from 0-100 based on the specific reason (values set by AcceptToMemoryPoolWorker())
NetBad TransactionVariesTransaction rejected from the mempool
NetInvalid HeaderVariesInvalid block header received from peer (cmpctblock message)
NetInvalid CompactBlock100Invalid compact block /non-matching block transactions received from peer (cmpctblock message)
NetHeader List Size20More than MAX_HEADERS_RESULTS (2000) headers received (headers message)
NetHeader List Sequence20Non-continous headers sequence received (headers message)
NetInvalid BlockVariesInvalid block header received from peer
NetBloom Filter Size100Maximum script element size (520) exceeded (filterload message or filteradd message)
NetMN List Diff1Failed to get masternode list diff (getmnlistd message)
NetUnrequested MN List Diff100Peer provided an unrequested masternode list diff (mnlistdiff message)
InstantSendInvalid Lock Message100Invalid TXID or inputs in lock message (islock message)
InstantSendVerify Error20Peer relayed a message that failed to verify
LLMQ ChainLockInvalid10Invalid ChainLock message (clsig message)
LLMQ CommitmentNull QcTx100Peer relayed a block with a null commitment
LLMQ CommitmentInvalid LLMQ Type100Peer relayed a block containing an invalid LLMQ Type
LLMQ CommitmentInvalid Height100Peer relayed a block that is not the first block in the DKG interval
LLMQ CommitmentInvalid Commitment100Peer relayed a block with an invalid quorum commitment
LLMQ DKGEmpty Message100Peer relayed a message with no payload
LLMQ DKGInvalid LLMQ Type100Peer relayed a message for an incorrect LLMQ Type
LLMQ DKGInvalid Message100Peer relayed a message that could not be deserialized
LLMQ DKGPreverify Failed100Peer relayed a message that could not be pre-verified
LLMQ DKGSignature100Peer relayed a message with an invalid signature
LLMQ DKGFull Verify Failed100Peer relayed a message that failed full verification
LLMQ SigningToo Many Messages100Maximum message count exceed in qsigsesann message, qsigsinv message, qgetsigs message, or qbsigs message
LLMQ SigningSignature100Peer relayed a message with an invalid recovered signature or signature share
Masternode AuthenticationDuplicate Message100Only 1 message allowed (mnauth message)
Masternode AuthenticationInvalid Services100Peer not advertising NODE_NETWORK or NODE_BLOOM services (mnauth message)
Masternode AuthenticationEmpty Hash100Peer relayed a message with a null ProRegTx hash (mnauth message)
Masternode AuthenticationSignature100Peer relayed a message with an invalid signature (mnauth message)
Masternode AuthenticationInvalid MN10Peer not in the valid masternode list (mnauth message)
Masternode AuthenticationInvalid Signature10Signature verification failed (mnauth message)
GovernanceSync20Requesting a governance sync too frequently (govsync message with empty hash)
GovernanceInvalid Object20Peer relayed an invalid governance object (govobj message)
GovernanceInvalid Vote20Peer relayed an invalid/invalid old vote(govobjvote message)
GovernanceUnsupported Vote Signal20Vote signal outside the accepted range (see govobjvote message)
CoinJoinSignature10Peer relayed a message with an invalid signature (dsq message)
SporkInvalid Time100Peer relayed a spork with a timestamp too far in the future (spork message)
SporkSignature100Peer relayed a spork with an invalid signature (spork message)

What’s Next