From afe721020ade7f4249db3ae36e4e7b75dc8a6c87 Mon Sep 17 00:00:00 2001 From: thephez Date: Thu, 2 May 2019 13:48:50 -0400 Subject: [PATCH] V0.14.0 Misbehaving node list (#127) * Content - Add details for LLMQs * Content - Add/update remaining misbehaving events * Content - Delete removed misbehaving messages - Eliminated by DIP3 MNs --- _includes/devdoc/guide_p2p_network.md | 50 ++++++++++++++++++--------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/_includes/devdoc/guide_p2p_network.md b/_includes/devdoc/guide_p2p_network.md index 7ef46a5d..057acaeb 100644 --- a/_includes/devdoc/guide_p2p_network.md +++ b/_includes/devdoc/guide_p2p_network.md @@ -587,36 +587,52 @@ information. If a peer gets a banscore above the `-banscore=` threshold | 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 50000 inventories received (`inv` message) -| Net | Get Data Size | 20 | More than 50000 inventories requested (`getdata` 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 | Header List Size | 20 | More than 2000 headers received (`headers` message) +| 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 | Invalid Block | **Varies** | Invalid block header received from peer | Net | Invalid/Expired Alert | 10 | Invalid or expired alert received (`alert` message) | Net | Bloom Filter Size | **100** | Maximum script element size (520) exceeded (`filterload` message or `filteradd` message) -| Masternode Manager | Invalid Broadcast | **Varies** | Timestamp in past (1), public key issue (**100**), signature issue (**100**), or collateral doesn't match vin (33) (`mnb` message) -| Masternode Manager | Invalid Ping | **Varies** | Signature too far in future (1), bad ping signature (33) -| Masternode Manager | List Sync | 34 | Requesting a sync of the entire masternode list too frequently (`dseg` message) -| Masternode Manager | Verify | 20 | Peer requested a verification too recently (`mnv` message) -| Masternode Manager | Unrequested Verify | 20 | Peer provided unrequested verification (`mnv` message) -| Masternode Manager | Verify Nonce | 20 | Masternode verification contains the wrong nonce (`mnv` message) -| Masternode Manager | Verify Block Height| 20 | Masternode verification contains the wrong block height (`mnv` message) -| Masternode Manager | Duplicate Verify | 20 | Peer provided a duplicate verification (`mnv` message) -| Masternode Manager | Invalid Masternode | 20 | No masternode found for the provided address (`mnv` message) -| Masternode Manager | Invalid Verify | **100** | Masternode "verified" itself (`mnv` 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 (`islock` 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 | 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) | 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) -| Masternode Payment | Sync | 20 | Requesting a masternode payment sync too frequently (`mnget` message) -| Masternode Payment | Vote Signature | 20 | Invalid signature on payment vote (`mnw` message) -| Masternode Payment | Non-quorum Vote | 20 | Payment vote from masternode not in the quorum. Rule activates with DIP1 (`mnw` message) +| PrivateSend | 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)