2016-04-04 22:37:43 +02:00
|
|
|
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
|
|
|
// Copyright (c) 2009-2015 The Bitcoin Core developers
|
|
|
|
// Distributed under the MIT software license, see the accompanying
|
|
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
|
|
|
|
#ifndef BITCOIN_ADDRESSINDEX_H
|
|
|
|
#define BITCOIN_ADDRESSINDEX_H
|
|
|
|
|
|
|
|
#include "uint256.h"
|
|
|
|
#include "amount.h"
|
|
|
|
|
|
|
|
struct CMempoolAddressDelta
|
|
|
|
{
|
|
|
|
int64_t time;
|
|
|
|
CAmount amount;
|
|
|
|
uint256 prevhash;
|
|
|
|
unsigned int prevout;
|
|
|
|
|
|
|
|
CMempoolAddressDelta(int64_t t, CAmount a, uint256 hash, unsigned int out) {
|
|
|
|
time = t;
|
|
|
|
amount = a;
|
|
|
|
prevhash = hash;
|
|
|
|
prevout = out;
|
|
|
|
}
|
|
|
|
|
|
|
|
CMempoolAddressDelta(int64_t t, CAmount a) {
|
|
|
|
time = t;
|
|
|
|
amount = a;
|
|
|
|
prevhash.SetNull();
|
|
|
|
prevout = 0;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
struct CMempoolAddressDeltaKey
|
|
|
|
{
|
|
|
|
int type;
|
|
|
|
uint160 addressBytes;
|
|
|
|
uint256 txhash;
|
|
|
|
unsigned int index;
|
2016-06-10 20:41:51 +02:00
|
|
|
int spending;
|
2016-04-04 22:37:43 +02:00
|
|
|
|
2016-06-10 20:41:51 +02:00
|
|
|
CMempoolAddressDeltaKey(int addressType, uint160 addressHash, uint256 hash, unsigned int i, int s) {
|
2016-04-04 22:37:43 +02:00
|
|
|
type = addressType;
|
|
|
|
addressBytes = addressHash;
|
|
|
|
txhash = hash;
|
|
|
|
index = i;
|
|
|
|
spending = s;
|
|
|
|
}
|
|
|
|
|
|
|
|
CMempoolAddressDeltaKey(int addressType, uint160 addressHash) {
|
|
|
|
type = addressType;
|
|
|
|
addressBytes = addressHash;
|
|
|
|
txhash.SetNull();
|
|
|
|
index = 0;
|
2016-06-10 20:41:51 +02:00
|
|
|
spending = 0;
|
2016-04-04 22:37:43 +02:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
struct CMempoolAddressDeltaKeyCompare
|
|
|
|
{
|
2016-04-13 05:25:55 +02:00
|
|
|
bool operator()(const CMempoolAddressDeltaKey& a, const CMempoolAddressDeltaKey& b) const {
|
2016-04-04 22:37:43 +02:00
|
|
|
if (a.type == b.type) {
|
|
|
|
if (a.addressBytes == b.addressBytes) {
|
|
|
|
if (a.txhash == b.txhash) {
|
2016-06-10 20:41:51 +02:00
|
|
|
if (a.index == b.index) {
|
|
|
|
return a.spending < b.spending;
|
|
|
|
} else {
|
|
|
|
return a.index < b.index;
|
|
|
|
}
|
2016-04-04 22:37:43 +02:00
|
|
|
} else {
|
|
|
|
return a.txhash < b.txhash;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
return a.addressBytes < b.addressBytes;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
return a.type < b.type;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // BITCOIN_ADDRESSINDEX_H
|