17 #include <boost/test/unit_test.hpp> 36 coins_view.AddCoin(outp, std::move(newcoin),
false);
43 1 << 23,
true,
false);
119 std::vector<CMutableTransaction> noTxns;
121 CBlock validation_block = this->CreateBlock(noTxns, scriptPubKey, background_cs);
122 auto pblock = std::make_shared<const CBlock>(validation_block);
126 bool newblock =
false;
134 bool accepted = background_cs.AcceptBlock(
135 pblock, state, &pindex,
true,
nullptr, &newblock,
true);
139 bool block_added = background_cs.ActivateBestChain(state, pblock);
142 BOOST_CHECK_EQUAL(background_cs.m_chain.Tip()->GetBlockHash(), validation_block.GetHash());
CCoinsViewCache & CoinsTip() EXCLUSIVE_LOCKS_REQUIRED(
Testing setup that performs all steps up until right before ChainstateManager gets initialized...
void assign(size_type n, const T &val)
bool LoadGenesisBlock()
Ensures we have a genesis block in the block tree, possibly writing one to disk.
BOOST_FIXTURE_TEST_CASE(chainstate_update_tip, TestChain100Setup)
Test UpdateTip behavior for both active and background chainstates.
Provides an interface for creating and interacting with one or two chainstates: an IBD chainstate gen...
CTxOut out
unspent transaction output
void InitCoinsDB(size_t cache_size_bytes, bool in_memory, bool should_wipe, fs::path leveldb_name="chainstate")
Initialize the CoinsViews UTXO set database management data structures.
bool HaveCoinInCache(const COutPoint &outpoint) const
Check if we have the given utxo already loaded in this cache.
CChainParams defines various tweakable parameters of a given instance of the Bitcoin system...
static uint32_t InsecureRand32()
BOOST_AUTO_TEST_CASE(validation_chainstate_resize_caches)
Test resizing coins-related Chainstate caches during runtime.
uint256 g_best_block
Used to notify getblocktemplate RPC of new tips.
std::unique_ptr< CTxMemPool > mempool
void SetBestBlock(const uint256 &hashBlock)
uint32_t nHeight
at which height this containing transaction was included in the active block chain ...
bool IsSnapshotActive() const
Chainstate stores and provides an API to update our local knowledge of the current best chain...
BOOST_AUTO_TEST_SUITE_END()
bool CheckBlock(const CBlock &block, BlockValidationState &state, const Consensus::Params &consensusParams, bool fCheckPOW, bool fCheckMerkleRoot)
Functions for validating blocks and updating the block tree.
Testing fixture that pre-creates a 100-block REGTEST-mode block chain.
An outpoint - a combination of a transaction hash and an index n into its vout.
static void add_coin(const CAmount &nValue, int nInput, std::vector< OutputGroup > &set)
Chainstate &InitializeChainstate(CTxMemPool *mempool, const std::optional< uint256 > &snapshot_blockhash=std::nullopt) LIFETIMEBOUND EXCLUSIVE_LOCKS_REQUIRED(std::vector< Chainstate * GetAll)()
Instantiate a new chainstate and assign it based upon whether it is from a snapshot.
#define WITH_LOCK(cs, code)
Run code while locking a mutex.
std::vector< unsigned char > ToByteVector(const T &in)
CTxMemPool stores valid-according-to-the-current-best-chain transactions that may be included in the ...
#define BOOST_CHECK_EQUAL(v1, v2)
The block chain is a tree shaped structure starting with the genesis block at the root...
const CChainParams & Params()
Return the currently selected parameters.
Serialized script, used inside transaction inputs and outputs.
RecursiveMutex cs_main
Mutex to guard access to validation specific variables, such as reading or changing the chainstate...
const Consensus::Params & GetConsensus() const
Chainstate & ActiveChainstate() const
The most-work chain.
CCoinsView that adds a memory cache for transactions to another CCoinsView.
static uint256 InsecureRand256()
std::unique_ptr< ChainstateManager > chainman
#define Assert(val)
Identity function.
static bool CreateAndActivateUTXOSnapshot(node::NodeContext &node, const fs::path root, F malleation=NoMalleation)
Create and activate a UTXO snapshot, optionally providing a function to malleate the snapshot...
#define BOOST_CHECK(expr)