Bitcoin ABC 0.32.5
P2P Digital Currency
addrdb.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// Distributed under the MIT software license, see the accompanying
4// file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
6#ifndef BITCOIN_ADDRDB_H
7#define BITCOIN_ADDRDB_H
8
9#include <net_types.h>
10#include <serialize.h>
11#include <univalue.h>
12#include <util/fs.h>
13#include <util/result.h>
14
15#include <memory>
16#include <string>
17#include <vector>
18
19class ArgsManager;
20class AddrMan;
21class CAddress;
22class CDataStream;
23class CChainParams;
24
25bool DumpPeerAddresses(const CChainParams &chainParams, const ArgsManager &args,
26 const AddrMan &addr);
28void ReadFromStream(const CChainParams &chainParams, AddrMan &addr,
29 CDataStream &ssPeers);
30
31class CBanEntry {
32public:
33 static const int CURRENT_VERSION = 1;
35 int64_t nCreateTime;
36 int64_t nBanUntil;
37
39
40 explicit CBanEntry(int64_t nCreateTimeIn) {
41 SetNull();
42 nCreateTime = nCreateTimeIn;
43 }
44
51 explicit CBanEntry(const UniValue &json);
52
55 uint8_t ban_reason = 2;
56 READWRITE(obj.nVersion, obj.nCreateTime, obj.nBanUntil, ban_reason);
57 }
58
59 void SetNull() {
61 nCreateTime = 0;
62 nBanUntil = 0;
63 }
64
70 UniValue ToJson() const;
71};
72
74class CBanDB {
75private:
79 static constexpr const char *JSON_KEY = "banned_nets";
80
84
85public:
86 CBanDB(fs::path ban_list_path, const CChainParams &_chainParams);
87 bool Write(const banmap_t &banSet);
88
98 bool Read(banmap_t &banSet, bool &dirty);
99};
100
103LoadAddrman(const CChainParams &chainparams, const std::vector<bool> &asmap,
104 const ArgsManager &args);
105
112void DumpAnchors(const CChainParams &chainParams,
113 const fs::path &anchors_db_path,
114 const std::vector<CAddress> &anchors);
115
123std::vector<CAddress> ReadAnchors(const CChainParams &chainParams,
124 const fs::path &anchors_db_path);
125
126#endif // BITCOIN_ADDRDB_H
std::vector< CAddress > ReadAnchors(const CChainParams &chainParams, const fs::path &anchors_db_path)
Read the anchor IP address database (anchors.dat)
Definition: addrdb.cpp:336
util::Result< std::unique_ptr< AddrMan > > LoadAddrman(const CChainParams &chainparams, const std::vector< bool > &asmap, const ArgsManager &args)
Returns an error string on failure.
Definition: addrdb.cpp:273
void ReadFromStream(const CChainParams &chainParams, AddrMan &addr, CDataStream &ssPeers)
Only used by tests.
Definition: addrdb.cpp:267
bool DumpPeerAddresses(const CChainParams &chainParams, const ArgsManager &args, const AddrMan &addr)
Definition: addrdb.cpp:260
void DumpAnchors(const CChainParams &chainParams, const fs::path &anchors_db_path, const std::vector< CAddress > &anchors)
Dump the anchor IP address database (anchors.dat)
Definition: addrdb.cpp:326
Stochastic address manager.
Definition: addrman.h:68
A CService with information about it as peer.
Definition: protocol.h:443
Access to the banlist databases (banlist.json and banlist.dat)
Definition: addrdb.h:74
bool Write(const banmap_t &banSet)
Definition: addrdb.cpp:203
bool Read(banmap_t &banSet, bool &dirty)
Read the banlist from disk.
Definition: addrdb.cpp:216
const fs::path m_banlist_dat
Definition: addrdb.h:81
CBanDB(fs::path ban_list_path, const CChainParams &_chainParams)
Definition: addrdb.cpp:199
static constexpr const char * JSON_KEY
JSON key under which the data is stored in the json database.
Definition: addrdb.h:79
const fs::path m_banlist_json
Definition: addrdb.h:82
const CChainParams & chainParams
Definition: addrdb.h:83
Definition: addrdb.h:31
static const int CURRENT_VERSION
Definition: addrdb.h:33
int64_t nCreateTime
Definition: addrdb.h:35
UniValue ToJson() const
Generate a JSON representation of this ban entry.
Definition: addrdb.cpp:34
CBanEntry()
Definition: addrdb.h:38
CBanEntry(int64_t nCreateTimeIn)
Definition: addrdb.h:40
SERIALIZE_METHODS(CBanEntry, obj)
Definition: addrdb.h:53
void SetNull()
Definition: addrdb.h:59
int nVersion
Definition: addrdb.h:34
int64_t nBanUntil
Definition: addrdb.h:36
CChainParams defines various tweakable parameters of a given instance of the Bitcoin system.
Definition: chainparams.h:86
Path class wrapper to block calls to the fs::path(std::string) implicit constructor and the fs::path:...
Definition: fs.h:30
char const * json() noexcept
Template to generate JSON data.
std::map< CSubNet, CBanEntry > banmap_t
Definition: net_types.h:13
#define READWRITE(...)
Definition: serialize.h:189