1 // Copyright (c) 2010 Satoshi Nakamoto
2 // Copyright (c) 2009-2012 The Bitcoin developers
3 // Distributed under the MIT/X11 software license, see the accompanying
4 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
6 #ifndef _BITCOINALERT_H_
7 #define _BITCOINALERT_H_ 1
12 #include "serialize.h"
18 /** Alerts are for notifying old versions if they become too obsolete and
19 * need to upgrade. The message is displayed in the status bar.
20 * Alert messages are broadcast as a vector of signed data. Unserializing may
21 * not read the entire buffer if the alert is for a newer version, but older
22 * versions can still relay the original data.
28 int64_t nRelayUntil; // when newer nodes stop relaying to newer nodes
32 std::set<int32_t> setCancel;
33 int32_t nMinVer; // lowest version inclusive
34 int32_t nMaxVer; // highest version inclusive
35 std::set<std::string> setSubVer; // empty matches all
39 std::string strComment;
40 std::string strStatusBar;
41 std::string strReserved;
45 READWRITE(this->nVersion);
46 nVersion = this->nVersion;
47 READWRITE(nRelayUntil);
48 READWRITE(nExpiration);
57 READWRITE(strComment);
58 READWRITE(strStatusBar);
59 READWRITE(strReserved);
64 std::string ToString() const;
67 /** An alert is a combination of a serialized CUnsignedAlert and a signature. */
68 class CAlert : public CUnsignedAlert
71 std::vector<unsigned char> vchMsg;
72 std::vector<unsigned char> vchSig;
87 uint256 GetHash() const;
88 bool IsInEffect() const;
89 bool Cancels(const CAlert& alert) const;
90 bool AppliesTo(int nVersion, std::string strSubVerIn) const;
91 bool AppliesToMe() const;
92 bool RelayTo(CNode* pnode) const;
93 bool CheckSignature() const;
97 * Get copy of (active) alert object by hash. Returns a null alert if it is not found.
99 static CAlert getAlertByHash(const uint256 &hash);