PRCYCoin  2.0.0.7rc1
P2P Digital Currency
validation.h
Go to the documentation of this file.
1 // Copyright (c) 2009-2010 Satoshi Nakamoto
2 // Copyright (c) 2009-2016 The Bitcoin Core developers
3 // Copyright (c) 2020 The PIVX developers
4 // Distributed under the MIT software license, see the accompanying
5 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
6 
7 #ifndef BITCOIN_CONSENSUS_VALIDATION_H
8 #define BITCOIN_CONSENSUS_VALIDATION_H
9 
10 #include <string>
11 
13 static const unsigned char REJECT_MALFORMED = 0x01;
14 static const unsigned char REJECT_INVALID = 0x10;
15 static const unsigned char REJECT_OBSOLETE = 0x11;
16 static const unsigned char REJECT_DUPLICATE = 0x12;
17 static const unsigned char REJECT_NONSTANDARD = 0x40;
18 static const unsigned char REJECT_DUST = 0x41;
19 static const unsigned char REJECT_INSUFFICIENTFEE = 0x42;
20 static const unsigned char REJECT_CHECKPOINT = 0x43;
21 
24 {
25 private:
26  enum mode_state {
30  } mode;
31  int nDoS;
32  std::string strRejectReason;
33  unsigned char chRejectCode;
35 
36 public:
38  bool DoS(int level, bool ret = false, unsigned char chRejectCodeIn = 0, std::string strRejectReasonIn = "", bool corruptionIn = false)
39  {
40  chRejectCode = chRejectCodeIn;
41  strRejectReason = strRejectReasonIn;
42  corruptionPossible = corruptionIn;
43  if (mode == MODE_ERROR)
44  return ret;
45  nDoS += level;
47  return ret;
48  }
49  bool Invalid(bool ret = false,
50  unsigned char _chRejectCode = 0,
51  std::string _strRejectReason = "")
52  {
53  return DoS(0, ret, _chRejectCode, _strRejectReason);
54  }
55  bool Error(std::string strRejectReasonIn = "")
56  {
57  if (mode == MODE_VALID)
58  strRejectReason = strRejectReasonIn;
59  mode = MODE_ERROR;
60  return false;
61  }
62  bool IsValid() const
63  {
64  return mode == MODE_VALID;
65  }
66  bool IsInvalid() const
67  {
68  return mode == MODE_INVALID;
69  }
70  bool IsError() const
71  {
72  return mode == MODE_ERROR;
73  }
74  bool IsInvalid(int& nDoSOut) const
75  {
76  if (IsInvalid()) {
77  nDoSOut = nDoS;
78  return true;
79  }
80  return false;
81  }
82  bool CorruptionPossible() const
83  {
84  return corruptionPossible;
85  }
86  unsigned char GetRejectCode() const { return chRejectCode; }
87  std::string GetRejectReason() const { return strRejectReason; }
88 };
89 
90 #endif // BITCOIN_CONSENSUS_VALIDATION_H
CValidationState::MODE_VALID
@ MODE_VALID
Definition: validation.h:27
CValidationState::IsError
bool IsError() const
Definition: validation.h:70
CValidationState::MODE_ERROR
@ MODE_ERROR
network rule violation (DoS value may be set)
Definition: validation.h:29
CValidationState::corruptionPossible
bool corruptionPossible
Definition: validation.h:34
CValidationState::Invalid
bool Invalid(bool ret=false, unsigned char _chRejectCode=0, std::string _strRejectReason="")
Definition: validation.h:49
CValidationState::GetRejectReason
std::string GetRejectReason() const
Definition: validation.h:87
CValidationState::chRejectCode
unsigned char chRejectCode
Definition: validation.h:33
CValidationState::IsInvalid
bool IsInvalid() const
Definition: validation.h:66
CValidationState::nDoS
int nDoS
Definition: validation.h:31
CValidationState::IsInvalid
bool IsInvalid(int &nDoSOut) const
Definition: validation.h:74
CValidationState::CorruptionPossible
bool CorruptionPossible() const
Definition: validation.h:82
CValidationState::GetRejectCode
unsigned char GetRejectCode() const
Definition: validation.h:86
CValidationState::CValidationState
CValidationState()
Definition: validation.h:37
CValidationState::strRejectReason
std::string strRejectReason
Definition: validation.h:32
CValidationState::MODE_INVALID
@ MODE_INVALID
everything ok
Definition: validation.h:28
CValidationState::DoS
bool DoS(int level, bool ret=false, unsigned char chRejectCodeIn=0, std::string strRejectReasonIn="", bool corruptionIn=false)
Definition: validation.h:38
CValidationState::Error
bool Error(std::string strRejectReasonIn="")
Definition: validation.h:55
CValidationState::mode
enum CValidationState::mode_state mode
CValidationState::IsValid
bool IsValid() const
Definition: validation.h:62
CValidationState
Capture information about block/transaction validation.
Definition: validation.h:23
CValidationState::mode_state
mode_state
Definition: validation.h:26