class CMessageHeader
{
public:
- CMessageHeader();
- CMessageHeader(const char* pszCommand, unsigned int nMessageSizeIn);
+ typedef unsigned char MessageStartChars[MESSAGE_START_SIZE];
+
+ CMessageHeader(const MessageStartChars& pchMessageStartIn);
+ CMessageHeader(const MessageStartChars& pchMessageStartIn, const char* pszCommand, unsigned int nMessageSizeIn);
std::string GetCommand() const;
- bool IsValid() const;
+ bool IsValid(const MessageStartChars& messageStart) const;
ADD_SERIALIZE_METHODS;
/** nServices flags */
enum {
+ // NODE_NETWORK means that the node is capable of serving the block chain. It is currently
+ // set by all Bitcoin Core nodes, and is unset by SPV clients or other peers that just want
+ // network services but don't provide them.
NODE_NETWORK = (1 << 0),
+ // NODE_GETUTXO means the node is capable of responding to the getutxo protocol request.
+ // Bitcoin Core does not support this but a patch set called Bitcoin XT does.
+ // See BIP 64 for details on how this is implemented.
+ NODE_GETUTXO = (1 << 1),
// Bits 24-31 are reserved for temporary experiments. Just pick a bit that
// isn't getting used, or one not being used much, and notify the