Fabcoin Core
0.16.2
P2P Digital Currency
|
CCoinsView that adds a memory cache for transactions to another CCoinsView. More...
#include <coins.h>
Public Member Functions | |
CCoinsViewCache (CCoinsView *baseIn) | |
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 fabcoins 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... | |
Public Member Functions inherited from CCoinsViewBacked | |
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... | |
Public Member Functions inherited from CCoinsView | |
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 |
Protected Attributes inherited from CCoinsViewBacked | |
CCoinsView * | base |
Private Member Functions | |
CCoinsMap::iterator | FetchCoin (const COutPoint &outpoint) const |
CCoinsViewCache (const CCoinsViewCache &) | |
By making the copy constructor private, we prevent accidentally using it when one intends to create a cache on top of a base cache. More... | |
CCoinsView that adds a memory cache for transactions to another CCoinsView.
CCoinsViewCache::CCoinsViewCache | ( | CCoinsView * | baseIn | ) |
|
private |
By making the copy constructor private, 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 119 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 148 of file coins.cpp.
|
inlineoverridevirtual |
Get a cursor to iterate over the whole state.
Reimplemented from CCoinsViewBacked.
Definition at line 223 of file coins.h.
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 204 of file coins.cpp.
|
overridevirtual |
Retrieve the block hash whose state this CCoinsView currently represents.
Reimplemented from CCoinsViewBacked.
Definition at line 138 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 60 of file coins.cpp.
CAmount CCoinsViewCache::GetValueIn | ( | const CTransaction & | tx | ) | const |
Amount of fabcoins 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 224 of file coins.cpp.
|
overridevirtual |
Just check whether a given outpoint is unspent.
Reimplemented from CCoinsViewBacked.
Definition at line 128 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.
Definition at line 133 of file coins.cpp.
bool CCoinsViewCache::HaveInputs | ( | const CTransaction & | tx | ) | const |
void CCoinsViewCache::SetBestBlock | ( | const uint256 & | hashBlock | ) |
void CCoinsViewCache::Uncache | ( | const COutPoint & | outpoint | ) |
|
mutableprotected |