From c04216af4a5c9727549819af52a738678dc7b6f9 Mon Sep 17 00:00:00 2001 From: Guy Nir Date: Mon, 9 Feb 2026 15:06:45 +0200 Subject: [PATCH] apollo_network: add BadPeerReport and PenaltyCard --- .../apollo_network/src/network_manager/mod.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/crates/apollo_network/src/network_manager/mod.rs b/crates/apollo_network/src/network_manager/mod.rs index 710c277bd1a..aa53dd35bf1 100644 --- a/crates/apollo_network/src/network_manager/mod.rs +++ b/crates/apollo_network/src/network_manager/mod.rs @@ -21,6 +21,7 @@ use libp2p::gossipsub::{SubscriptionError, TopicHash}; use libp2p::identity::Keypair; use libp2p::swarm::SwarmEvent; use libp2p::{noise, yamux, Multiaddr, PeerId, StreamProtocol, Swarm, SwarmBuilder}; +use serde::{Deserialize, Serialize}; use tracing::{debug, error, trace, warn}; use self::swarm_trait::SwarmTrait; @@ -1045,3 +1046,21 @@ pub struct BroadcastTopicChannels> { type BroadcastReceivedMessagesConverterFn = fn((Bytes, BroadcastedMessageMetadata)) -> ReceivedBroadcastedMessage; + +// TODO(guyn): remove allow dead code once we use the duplicate vote report. +#[allow(dead_code)] +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] +pub struct BadPeerReport { + pub peer_id: PeerId, + pub reason: String, + pub penalty_card: PenaltyCard, +} + +/// Represents the severity of the bad peer behavior. +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] +pub enum PenaltyCard { + /// Overtly malicious behavior. + Red, + /// Possibly sent malicious data on accident, will be considered malicious on repeat offenses. + Yellow, +}