PRCYCoin  2.0.0.7rc1
P2P Digital Currency
invalid.cpp
Go to the documentation of this file.
1 // Copyright (c) 2015-2018 The PIVX developers
2 // Copyright (c) 2018-2020 The DAPS Project developers
3 // Distributed under the MIT software license, see the accompanying
4 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 
6 #include "invalid.h"
8 
9 namespace invalid_out
10 {
11  std::set<COutPoint> setInvalidOutPoints;
12 
13  UniValue read_json(const std::string& jsondata)
14  {
15  UniValue v;
16 
17  if (!v.read(jsondata) || !v.isArray())
18  {
19  return UniValue(UniValue::VARR);
20  }
21  return v.get_array();
22  }
23 
25  {
27 
28  if (v.empty())
29  return false;
30 
31  for (unsigned int idx = 0; idx < v.size(); idx++) {
32  const UniValue &val = v[idx];
33  const UniValue &o = val.get_obj();
34 
35  const UniValue &vTxid = find_value(o, "txid");
36  if (!vTxid.isStr())
37  return false;
38 
39  uint256 txid = uint256(vTxid.get_str());
40  if (txid.IsNull())
41  return false;
42 
43  const UniValue &vN = find_value(o, "n");
44  if (!vN.isNum())
45  return false;
46 
47  auto n = static_cast<uint32_t>(vN.get_int());
48  COutPoint out(txid, n);
49  setInvalidOutPoints.insert(out);
50  }
51  return true;
52  }
53 
54  bool ContainsOutPoint(const COutPoint& out)
55  {
56  return static_cast<bool>(setInvalidOutPoints.count(out));
57  }
58 }
59 
invalid_out::setInvalidOutPoints
std::set< COutPoint > setInvalidOutPoints
Definition: invalid.cpp:11
invalid_out::ContainsOutPoint
bool ContainsOutPoint(const COutPoint &out)
Definition: invalid.cpp:54
UniValue::read
bool read(const char *raw, size_t len)
Definition: univalue_read.cpp:253
invalid_out::read_json
UniValue read_json(const std::string &jsondata)
Definition: invalid.cpp:13
UniValue::isNum
bool isNum() const
Definition: univalue.h:82
UniValue
Definition: univalue.h:19
UniValue::get_str
const std::string & get_str() const
Definition: univalue.cpp:309
UniValue::isStr
bool isStr() const
Definition: univalue.h:81
UniValue::get_obj
const UniValue & get_obj() const
Definition: univalue.cpp:346
invalid_out
Definition: invalid.cpp:9
uint256
256-bit unsigned big integer.
Definition: uint256.h:38
base_uint::IsNull
bool IsNull() const
Definition: arith_uint256.h:312
UniValue::isArray
bool isArray() const
Definition: univalue.h:83
invalid.h
UniValue::get_int
int get_int() const
Definition: univalue.cpp:316
invalid_outpoints.json.h
UniValue::empty
bool empty() const
Definition: univalue.h:67
UniValue::size
size_t size() const
Definition: univalue.h:69
LoadInvalidOutPoints
std::string LoadInvalidOutPoints()
Definition: invalid_outpoints.json.h:9
COutPoint
An outpoint - a combination of a transaction hash and an index n into its vout.
Definition: transaction.h:36
find_value
const UniValue & find_value(const UniValue &obj, const std::string &name)
Definition: univalue.cpp:279
invalid_out::LoadOutpoints
bool LoadOutpoints()
Definition: invalid.cpp:24
UniValue::get_array
const UniValue & get_array() const
Definition: univalue.cpp:353
UniValue::VARR
@ VARR
Definition: univalue.h:21