![]() |
BSHA3
0.17.99
P2P Blockchain, based on Bitcoin
|
CCoinsView that adds a memory cache for transactions to another CCoinsView. More...
#include <coins.h>
Public Member Functions | |
CCoinsViewCache (CCoinsView *baseIn) | |
CCoinsViewCache (const CCoinsViewCache &)=delete | |
By deleting the copy constructor, we prevent accidentally using it when one intends to create a cache on top of a base cache. More... | |
bool | GetCoin (const COutPoint &outpoint, Coin &coin) const override |
Retrieve the Coin (unspent transaction output) for a given outpoint. More... | |
bool | HaveCoin (const COutPoint &outpoint) const override |
Just check whether a given outpoint is unspent. More... | |
uint256 | GetBestBlock () const override |
Retrieve the block hash whose state this CCoinsView currently represents. More... | |
void | SetBestBlock (const uint256 &hashBlock) |
bool | BatchWrite (CCoinsMap &mapCoins, const uint256 &hashBlock) override |
Do a bulk modification (multiple Coin changes + BestBlock change). More... | |
CCoinsViewCursor * | Cursor () const override |
Get a cursor to iterate over the whole state. More... | |
bool | HaveCoinInCache (const COutPoint &outpoint) const |
Check if we have the given utxo already loaded in this cache. More... | |
const Coin & | AccessCoin (const COutPoint &output) const |
Return a reference to Coin in the cache, or a pruned one if not found. More... | |
void | AddCoin (const COutPoint &outpoint, Coin &&coin, bool potential_overwrite) |
Add a coin. More... | |
bool | SpendCoin (const COutPoint &outpoint, Coin *moveto=nullptr) |
Spend a coin. More... | |
bool | Flush () |
Push the modifications applied to this cache to its base. More... | |
void | Uncache (const COutPoint &outpoint) |
Removes the UTXO with the given outpoint from the cache, if it is not modified. More... | |
unsigned int | GetCacheSize () const |
Calculate the size of the cache (in number of transaction outputs) More... | |
size_t | DynamicMemoryUsage () const |
Calculate the size of the cache (in bytes) More... | |
CAmount | GetValueIn (const CTransaction &tx) const |
Amount of bitcoins coming in to a transaction Note that lightweight clients may not know anything besides the hash of previous transactions, so may not be able to calculate this. More... | |
bool | HaveInputs (const CTransaction &tx) const |
Check whether all prevouts of the transaction are present in the UTXO set represented by this view. More... | |
![]() | |
CCoinsViewBacked (CCoinsView *viewIn) | |
std::vector< uint256 > | GetHeadBlocks () const override |
Retrieve the range of blocks that may have been only partially written. More... | |
void | SetBackend (CCoinsView &viewIn) |
size_t | EstimateSize () const override |
Estimate database size (0 if not implemented) More... | |
![]() | |
virtual | ~CCoinsView () |
As we use CCoinsViews polymorphically, have a virtual destructor. More... | |
Protected Attributes | |
uint256 | hashBlock |
Make mutable so that we can "fill the cache" even from Get-methods declared as "const". More... | |
CCoinsMap | cacheCoins |
size_t | cachedCoinsUsage |
![]() | |
CCoinsView * | base |
Private Member Functions | |
CCoinsMap::iterator | FetchCoin (const COutPoint &outpoint) const |
CCoinsView that adds a memory cache for transactions to another CCoinsView.
CCoinsViewCache::CCoinsViewCache | ( | CCoinsView * | baseIn | ) |
|
delete |
By deleting the copy constructor, we prevent accidentally using it when one intends to create a cache on top of a base cache.
Return a reference to Coin in the cache, or a pruned one if not found.
This is more efficient than GetCoin.
Generally, do not hold the reference returned for more than a short scope. While the current implementation allows for modifications to the contents of the cache while holding the reference, this behavior should not be relied on! To be safe, best to not hold the returned reference through any other calls to this cache.
Definition at line 116 of file coins.cpp.
|
overridevirtual |
Do a bulk modification (multiple Coin changes + BestBlock change).
The passed mapCoins can be modified.
Reimplemented from CCoinsViewBacked.
Definition at line 145 of file coins.cpp.
|
inlineoverridevirtual |
Get a cursor to iterate over the whole state.
Reimplemented from CCoinsViewBacked.
size_t CCoinsViewCache::DynamicMemoryUsage | ( | ) | const |
|
private |
bool CCoinsViewCache::Flush | ( | ) |
Push the modifications applied to this cache to its base.
Failure to call this method before destruction will cause the changes to be forgotten. If false is returned, the state of this cache (and its backing view) will be undefined.
Definition at line 203 of file coins.cpp.
|
overridevirtual |
Retrieve the block hash whose state this CCoinsView currently represents.
Reimplemented from CCoinsViewBacked.
Definition at line 135 of file coins.cpp.
unsigned int CCoinsViewCache::GetCacheSize | ( | ) | const |
Retrieve the Coin (unspent transaction output) for a given outpoint.
Returns true only when an unspent coin was found, which is returned in coin. When false is returned, coin's value is unspecified.
Reimplemented from CCoinsViewBacked.
Definition at line 57 of file coins.cpp.
CAmount CCoinsViewCache::GetValueIn | ( | const CTransaction & | tx | ) | const |
Amount of bitcoins coming in to a transaction Note that lightweight clients may not know anything besides the hash of previous transactions, so may not be able to calculate this.
[in] | tx | transaction for which we are checking input total |
Definition at line 223 of file coins.cpp.
|
overridevirtual |
Just check whether a given outpoint is unspent.
Reimplemented from CCoinsViewBacked.
Definition at line 125 of file coins.cpp.
bool CCoinsViewCache::HaveCoinInCache | ( | const COutPoint & | outpoint | ) | const |
Check if we have the given utxo already loaded in this cache.
The semantics are the same as HaveCoin(), but no calls to the backing CCoinsView are made.
bool CCoinsViewCache::HaveInputs | ( | const CTransaction & | tx | ) | const |
void CCoinsViewCache::SetBestBlock | ( | const uint256 & | hashBlock | ) |
void CCoinsViewCache::Uncache | ( | const COutPoint & | outpoint | ) |
|
mutableprotected |