github.com/pokt-network/tendermint@v0.32.11-0.20230426215212-59310158d3e9/behaviour/peer_behaviour.go (about) 1 package behaviour 2 3 import ( 4 "github.com/tendermint/tendermint/p2p" 5 ) 6 7 // PeerBehaviour is a struct describing a behaviour a peer performed. 8 // `peerID` identifies the peer and reason characterizes the specific 9 // behaviour performed by the peer. 10 type PeerBehaviour struct { 11 peerID p2p.ID 12 reason interface{} 13 } 14 15 type badMessage struct { 16 explanation string 17 } 18 19 // BadMessage returns a badMessage PeerBehaviour. 20 func BadMessage(peerID p2p.ID, explanation string) PeerBehaviour { 21 return PeerBehaviour{peerID: peerID, reason: badMessage{explanation}} 22 } 23 24 type messageOutOfOrder struct { 25 explanation string 26 } 27 28 // MessageOutOfOrder returns a messagOutOfOrder PeerBehaviour. 29 func MessageOutOfOrder(peerID p2p.ID, explanation string) PeerBehaviour { 30 return PeerBehaviour{peerID: peerID, reason: messageOutOfOrder{explanation}} 31 } 32 33 type consensusVote struct { 34 explanation string 35 } 36 37 // ConsensusVote returns a consensusVote PeerBehaviour. 38 func ConsensusVote(peerID p2p.ID, explanation string) PeerBehaviour { 39 return PeerBehaviour{peerID: peerID, reason: consensusVote{explanation}} 40 } 41 42 type blockPart struct { 43 explanation string 44 } 45 46 // BlockPart returns blockPart PeerBehaviour. 47 func BlockPart(peerID p2p.ID, explanation string) PeerBehaviour { 48 return PeerBehaviour{peerID: peerID, reason: blockPart{explanation}} 49 }