Bitcoin ABC 0.26.3
P2P Digital Currency
|
#include <compressor.h>
#include <memusage.h>
#include <primitives/blockhash.h>
#include <serialize.h>
#include <support/allocators/pool.h>
#include <util/hasher.h>
#include <cassert>
#include <cstdint>
#include <functional>
#include <unordered_map>
Go to the source code of this file.
Classes | |
class | Coin |
A UTXO entry. More... | |
struct | CCoinsCacheEntry |
A Coin in one level of the coins database caching hierarchy. More... | |
class | CCoinsViewCursor |
Cursor for iterating over CoinsView state. More... | |
class | CCoinsView |
Abstract view on the open txout dataset. More... | |
class | CCoinsViewBacked |
CCoinsView backed by another CCoinsView. More... | |
class | CCoinsViewCache |
CCoinsView that adds a memory cache for transactions to another CCoinsView. More... | |
class | CCoinsViewErrorCatcher |
This is a minimally invasive approach to shutdown on LevelDB read errors from the chainstate, while keeping user interface out of the common library, which is shared between bitcoind, and bitcoin-qt and non-server tools. More... | |
Typedefs | |
using | CCoinsMap = std::unordered_map< COutPoint, CCoinsCacheEntry, SaltedOutpointHasher, std::equal_to< COutPoint >, PoolAllocator< std::pair< const COutPoint, CCoinsCacheEntry >, sizeof(std::pair< const COutPoint, CCoinsCacheEntry >)+sizeof(void *) *4 > > |
PoolAllocator's MAX_BLOCK_SIZE_BYTES parameter here uses sizeof the data, and adds the size of 4 pointers. | |
using | CCoinsMapMemoryResource = CCoinsMap::allocator_type::ResourceType |
Functions | |
void | AddCoins (CCoinsViewCache &cache, const CTransaction &tx, int nHeight, bool check=false) |
Utility function to add all of a transaction's outputs to a cache. | |
const Coin & | AccessByTxid (const CCoinsViewCache &cache, const TxId &txid) |
Utility function to find any unspent output with a given txid. | |
using CCoinsMap = std::unordered_map< COutPoint, CCoinsCacheEntry, SaltedOutpointHasher, std::equal_to<COutPoint>, PoolAllocator<std::pair<const COutPoint, CCoinsCacheEntry>, sizeof(std::pair<const COutPoint, CCoinsCacheEntry>) + sizeof(void *) * 4> > |
PoolAllocator's MAX_BLOCK_SIZE_BYTES parameter here uses sizeof the data, and adds the size of 4 pointers.
We do not know the exact node size used in the std::unordered_node implementation because it is implementation defined. Most implementations have an overhead of 1 or 2 pointers, so nodes can be connected in a linked list, and in some cases the hash value is stored as well. Using an additional sizeof(void*)*4 for MAX_BLOCK_SIZE_BYTES should thus be sufficient so that all implementations can allocate the nodes from the PoolAllocator.
using CCoinsMapMemoryResource = CCoinsMap::allocator_type::ResourceType |
const Coin & AccessByTxid | ( | const CCoinsViewCache & | cache, |
const TxId & | txid | ||
) |
Utility function to find any unspent output with a given txid.
This function can be quite expensive because in the event of a transaction which is not found in the cache, it can cause up to MAX_OUTPUTS_PER_BLOCK lookups to database, so it should be used with care.
Definition at line 397 of file coins.cpp.
void AddCoins | ( | CCoinsViewCache & | cache, |
const CTransaction & | tx, | ||
int | nHeight, | ||
bool | check = false |
||
) |
Utility function to add all of a transaction's outputs to a cache.
When check is false, this assumes that overwrites are only possible for coinbase transactions. When check is true, the underlying view may be queried to determine whether an addition is an overwrite.
Definition at line 156 of file coins.cpp.