// Copyright (c) 2009-2010 Satoshi Nakamoto // Copyright (c) 2009-2015 The Bitcoin Core developers // Copyright (c) 2016-2024 The Hush developers // Distributed under the GPLv3 software license, see the accompanying // file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html #ifndef HUSH_ADDRESSINDEX_H #define HUSH_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; int spending; CMempoolAddressDeltaKey(int addressType, uint160 addressHash, uint256 hash, unsigned int i, int s) { type = addressType; addressBytes = addressHash; txhash = hash; index = i; spending = s; } CMempoolAddressDeltaKey(int addressType, uint160 addressHash) { type = addressType; addressBytes = addressHash; txhash.SetNull(); index = 0; spending = 0; } }; struct CMempoolAddressDeltaKeyCompare { bool operator()(const CMempoolAddressDeltaKey& a, const CMempoolAddressDeltaKey& b) const { if (a.type == b.type) { if (a.addressBytes == b.addressBytes) { if (a.txhash == b.txhash) { if (a.index == b.index) { return a.spending < b.spending; } else { return a.index < b.index; } } else { return a.txhash < b.txhash; } } else { return a.addressBytes < b.addressBytes; } } else { return a.type < b.type; } } }; #endif // HUSH_ADDRESSINDEX_H