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