a109a611f3
* Implement proposal validation Includes commits: Implemented CProposalValidator Use CProposalValidator to check proposals at prepare and submit stages Modify proposal validator to support numerical data in string format Multiple bug fixes in governance-validators.cpp Fixed bug in CheckURL Fixed stream state check Increase strictness of payment address validation for compatibility with sentinel Improved error reporting Implemented "check" rpc command to validate proposals Fixes to RPC check command Fix error message Unit test and data files for proposal validator Added test cases Removed debugging code * Fix name validation * Changes to address code review comments
64 lines
1.3 KiB
C++
64 lines
1.3 KiB
C++
// Copyright (c) 2014-2017 The Dash Core developers
|
|
// Distributed under the MIT/X11 software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef GOVERNANCE_VALIDATORS_H
|
|
#define GOVERNANCE_VALIDATORS_H
|
|
|
|
#include <string>
|
|
|
|
#include <univalue.h>
|
|
|
|
class CProposalValidator {
|
|
public:
|
|
CProposalValidator(const std::string& strDataHexIn = std::string());
|
|
|
|
void Clear();
|
|
|
|
void SetHexData(const std::string& strDataHexIn);
|
|
|
|
bool Validate();
|
|
|
|
bool ValidateJSON();
|
|
|
|
bool ValidateName();
|
|
|
|
bool ValidateStartEndEpoch();
|
|
|
|
bool ValidatePaymentAmount();
|
|
|
|
bool ValidatePaymentAddress();
|
|
|
|
bool ValidateURL();
|
|
|
|
const std::string& GetErrorMessages()
|
|
{
|
|
return strErrorMessages;
|
|
}
|
|
|
|
private:
|
|
void ParseJSONData();
|
|
|
|
bool GetDataValue(const std::string& strKey, std::string& strValue);
|
|
|
|
bool GetDataValue(const std::string& strKey, int64_t& nValue);
|
|
|
|
bool GetDataValue(const std::string& strKey, double& dValue);
|
|
|
|
static std::string StripWhitespace(const std::string& strIn);
|
|
|
|
static bool CheckURL(const std::string& strURLIn);
|
|
|
|
private:
|
|
std::string strData;
|
|
|
|
UniValue objJSON;
|
|
|
|
bool fJSONValid;
|
|
|
|
std::string strErrorMessages;
|
|
|
|
};
|
|
|
|
#endif
|