2016-04-04 22:37:43 +02:00
|
|
|
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
|
|
|
// Copyright (c) 2009-2015 The Bitcoin Core developers
|
2023-09-14 11:40:35 +02:00
|
|
|
// Copyright (c) 2016 BitPay, Inc.
|
2023-09-18 19:16:04 +02:00
|
|
|
// Copyright (c) 2023 The Dash Core developers
|
2016-04-04 22:37:43 +02:00
|
|
|
// 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
|
|
|
|
|
2020-03-19 23:46:56 +01:00
|
|
|
#include <uint256.h>
|
|
|
|
#include <amount.h>
|
2016-04-04 22:37:43 +02:00
|
|
|
|
2019-10-02 16:55:03 +02:00
|
|
|
#include <chrono>
|
2023-09-25 16:49:30 +02:00
|
|
|
#include <tuple>
|
2019-10-02 16:55:03 +02:00
|
|
|
|
2023-09-18 20:39:11 +02:00
|
|
|
namespace AddressType {
|
|
|
|
enum AddressType {
|
|
|
|
P2PK = 1,
|
|
|
|
P2PKH = 1,
|
|
|
|
P2SH = 2,
|
|
|
|
|
|
|
|
UNKNOWN = 0
|
|
|
|
};
|
|
|
|
}; /* namespace AddressType */
|
|
|
|
|
2016-04-04 22:37:43 +02:00
|
|
|
struct CMempoolAddressDelta
|
|
|
|
{
|
2023-09-18 19:16:04 +02:00
|
|
|
public:
|
|
|
|
std::chrono::seconds m_time;
|
|
|
|
CAmount m_amount;
|
|
|
|
uint256 m_prev_hash;
|
|
|
|
uint32_t m_prev_out{0};
|
2016-04-04 22:37:43 +02:00
|
|
|
|
2023-09-18 19:16:04 +02:00
|
|
|
public:
|
|
|
|
CMempoolAddressDelta(std::chrono::seconds time, CAmount amount, uint256 prev_hash, uint32_t prev_out) :
|
|
|
|
m_time{time}, m_amount{amount}, m_prev_hash{prev_hash}, m_prev_out{prev_out} {}
|
2016-04-04 22:37:43 +02:00
|
|
|
|
2023-09-18 19:16:04 +02:00
|
|
|
CMempoolAddressDelta(std::chrono::seconds time, CAmount amount) :
|
|
|
|
m_time{time}, m_amount{amount} {}
|
2016-04-04 22:37:43 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
struct CMempoolAddressDeltaKey
|
|
|
|
{
|
2023-09-18 19:16:04 +02:00
|
|
|
public:
|
2023-09-13 18:52:54 +02:00
|
|
|
uint8_t m_address_type{AddressType::UNKNOWN};
|
2023-09-18 19:16:04 +02:00
|
|
|
uint160 m_address_bytes;
|
|
|
|
uint256 m_tx_hash;
|
|
|
|
uint32_t m_tx_index{0};
|
|
|
|
bool m_tx_spent{false};
|
2016-04-04 22:37:43 +02:00
|
|
|
|
2023-09-18 19:16:04 +02:00
|
|
|
public:
|
2023-09-13 18:52:54 +02:00
|
|
|
CMempoolAddressDeltaKey(uint8_t address_type, uint160 address_bytes, uint256 tx_hash, uint32_t tx_index, bool tx_spent) :
|
2023-09-18 19:16:04 +02:00
|
|
|
m_address_type{address_type},
|
|
|
|
m_address_bytes{address_bytes},
|
|
|
|
m_tx_hash{tx_hash},
|
|
|
|
m_tx_index{tx_index},
|
|
|
|
m_tx_spent{tx_spent} {};
|
2016-04-04 22:37:43 +02:00
|
|
|
|
2023-09-13 18:52:54 +02:00
|
|
|
CMempoolAddressDeltaKey(uint8_t address_type, uint160 address_bytes) :
|
2023-09-18 19:16:04 +02:00
|
|
|
m_address_type{address_type},
|
|
|
|
m_address_bytes{address_bytes} {};
|
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 {
|
2023-09-25 16:49:30 +02:00
|
|
|
auto to_tuple = [](const CMempoolAddressDeltaKey& obj) {
|
2023-09-18 19:16:04 +02:00
|
|
|
return std::tie(obj.m_address_type, obj.m_address_bytes, obj.m_tx_hash, obj.m_tx_index, obj.m_tx_spent);
|
2023-09-25 16:49:30 +02:00
|
|
|
};
|
|
|
|
return to_tuple(a) < to_tuple(b);
|
2016-04-04 22:37:43 +02:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // BITCOIN_ADDRESSINDEX_H
|