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
17 /** Alerts are for notifying old versions if they become too obsolete and
18 * need to upgrade. The message is displayed in the status bar.
19 * Alert messages are broadcast as a vector of signed data. Unserializing may
20 * not read the entire buffer if the alert is for a newer version, but older
21 * versions can still relay the original data.
27 int64 nRelayUntil; // when newer nodes stop relaying to newer nodes
31 std::set<int> setCancel;
32 int nMinVer; // lowest version inclusive
33 int nMaxVer; // highest version inclusive
34 std::set<std::string> setSubVer; // empty matches all
38 std::string strComment;
39 std::string strStatusBar;
40 std::string strReserved;
44 READWRITE(this->nVersion);
45 nVersion = this->nVersion;
46 READWRITE(nRelayUntil);
47 READWRITE(nExpiration);
56 READWRITE(strComment);
57 READWRITE(strStatusBar);
58 READWRITE(strReserved);
63 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);