Bitcoin Core  26.99.0
P2P Digital Currency
txmempool.h
Go to the documentation of this file.
1 // Copyright (c) 2022 The Bitcoin Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4 
5 #ifndef BITCOIN_TEST_UTIL_TXMEMPOOL_H
6 #define BITCOIN_TEST_UTIL_TXMEMPOOL_H
7 
8 #include <policy/packages.h>
9 #include <txmempool.h>
10 #include <util/time.h>
11 
12 namespace node {
13 struct NodeContext;
14 }
16 
18 
20  // Default values
23  unsigned int nHeight{1};
24  uint64_t m_sequence{0};
25  bool spendsCoinbase{false};
26  unsigned int sigOpCost{4};
28 
30  CTxMemPoolEntry FromTx(const CTransactionRef& tx) const;
31 
32  // Change the default value
33  TestMemPoolEntryHelper& Fee(CAmount _fee) { nFee = _fee; return *this; }
34  TestMemPoolEntryHelper& Time(NodeSeconds tp) { time = tp; return *this; }
35  TestMemPoolEntryHelper& Height(unsigned int _height) { nHeight = _height; return *this; }
36  TestMemPoolEntryHelper& Sequence(uint64_t _seq) { m_sequence = _seq; return *this; }
37  TestMemPoolEntryHelper& SpendsCoinbase(bool _flag) { spendsCoinbase = _flag; return *this; }
38  TestMemPoolEntryHelper& SigOpsCost(unsigned int _sigopsCost) { sigOpCost = _sigopsCost; return *this; }
39 };
40 
45 std::optional<std::string> CheckPackageMempoolAcceptResult(const Package& txns,
46  const PackageMempoolAcceptResult& result,
47  bool expect_valid,
48  const CTxMemPool* mempool);
49 
57 void CheckMempoolV3Invariants(const CTxMemPool& tx_pool);
58 
59 #endif // BITCOIN_TEST_UTIL_TXMEMPOOL_H
int64_t CAmount
Amount in satoshis (Can be negative)
Definition: amount.h:12
CTxMemPoolEntry stores data about the corresponding transaction, as well as data about all in-mempool...
Definition: mempool_entry.h:66
CTxMemPool stores valid-according-to-the-current-best-chain transactions that may be included in the ...
Definition: txmempool.h:300
Definition: init.h:25
std::vector< CTransactionRef > Package
A package is an ordered list of transactions.
Definition: packages.h:50
std::shared_ptr< const CTransaction > CTransactionRef
Definition: transaction.h:423
A mutable version of CTransaction.
Definition: transaction.h:378
Validation result for package mempool acceptance.
Definition: validation.h:233
Definition: txmempool.h:19
TestMemPoolEntryHelper & SpendsCoinbase(bool _flag)
Definition: txmempool.h:37
CAmount nFee
Definition: txmempool.h:21
TestMemPoolEntryHelper & SigOpsCost(unsigned int _sigopsCost)
Definition: txmempool.h:38
bool spendsCoinbase
Definition: txmempool.h:25
LockPoints lp
Definition: txmempool.h:27
CTxMemPoolEntry FromTx(const CMutableTransaction &tx) const
Definition: txmempool.cpp:31
TestMemPoolEntryHelper & Height(unsigned int _height)
Definition: txmempool.h:35
unsigned int nHeight
Definition: txmempool.h:23
TestMemPoolEntryHelper & Time(NodeSeconds tp)
Definition: txmempool.h:34
unsigned int sigOpCost
Definition: txmempool.h:26
TestMemPoolEntryHelper & Fee(CAmount _fee)
Definition: txmempool.h:33
TestMemPoolEntryHelper & Sequence(uint64_t _seq)
Definition: txmempool.h:36
NodeSeconds time
Definition: txmempool.h:22
uint64_t m_sequence
Definition: txmempool.h:24
Options struct containing options for constructing a CTxMemPool.
NodeContext struct containing references to chain state and connection state.
Definition: context.h:48
CTxMemPool::Options MemPoolOptionsForTest(const node::NodeContext &node)
Definition: txmempool.cpp:19
std::optional< std::string > CheckPackageMempoolAcceptResult(const Package &txns, const PackageMempoolAcceptResult &result, bool expect_valid, const CTxMemPool *mempool)
Check expected properties for every PackageMempoolAcceptResult, regardless of value.
Definition: txmempool.cpp:41
void CheckMempoolV3Invariants(const CTxMemPool &tx_pool)
For every transaction in tx_pool, check v3 invariants:
Definition: txmempool.cpp:121
std::chrono::time_point< NodeClock, std::chrono::seconds > NodeSeconds
Definition: time.h:23