@@ -21,6 +21,7 @@ use libp2p::gossipsub::{SubscriptionError, TopicHash};
2121use libp2p:: identity:: Keypair ;
2222use libp2p:: swarm:: SwarmEvent ;
2323use libp2p:: { noise, yamux, Multiaddr , PeerId , StreamProtocol , Swarm , SwarmBuilder } ;
24+ use serde:: { Deserialize , Serialize } ;
2425use tracing:: { debug, error, trace, warn} ;
2526
2627use self :: swarm_trait:: SwarmTrait ;
@@ -1045,3 +1046,21 @@ pub struct BroadcastTopicChannels<T: TryFrom<Bytes>> {
10451046
10461047type BroadcastReceivedMessagesConverterFn < T > =
10471048 fn ( ( Bytes , BroadcastedMessageMetadata ) ) -> ReceivedBroadcastedMessage < T > ;
1049+
1050+ // TODO(guyn): remove allow dead code once we use the duplicate vote report.
1051+ #[ allow( dead_code) ]
1052+ #[ derive( Debug , Clone , Serialize , Deserialize , PartialEq , Eq ) ]
1053+ pub struct BadPeerReport {
1054+ pub peer_id : PeerId ,
1055+ pub reason : String ,
1056+ pub penalty_card : PenaltyCard ,
1057+ }
1058+
1059+ /// Represents the severity of the bad peer behavior.
1060+ #[ derive( Debug , Clone , Serialize , Deserialize , PartialEq , Eq ) ]
1061+ pub enum PenaltyCard {
1062+ /// Overtly malicious behavior.
1063+ Red ,
1064+ /// Possibly sent malicious data on accident, will be considered malicious on repeat offenses.
1065+ Yellow ,
1066+ }
0 commit comments