Bitcoin Core  0.20.99
P2P Digital Currency
Public Types | Public Member Functions | Public Attributes | List of all members
CCoinsCacheEntry Struct Reference

A Coin in one level of the coins database caching hierarchy. More...

#include <coins.h>

Collaboration diagram for CCoinsCacheEntry:
[legend]

Public Types

enum  Flags { DIRTY = (1 << 0), FRESH = (1 << 1) }
 

Public Member Functions

 CCoinsCacheEntry ()
 
 CCoinsCacheEntry (Coin &&coin_)
 

Public Attributes

Coin coin
 
unsigned char flags
 

Detailed Description

A Coin in one level of the coins database caching hierarchy.

A coin can either be:

Out of these 2^3 = 8 states, only some combinations are valid:

Definition at line 127 of file coins.h.

Member Enumeration Documentation

◆ Flags

Enumerator
DIRTY 

DIRTY means the CCoinsCacheEntry is potentially different from the version in the parent cache.

Failure to mark a coin as DIRTY when it is potentially different from the parent cache will cause a consensus failure, since the coin's state won't get written to the parent when the cache is flushed.

FRESH 

FRESH means the parent cache does not have this coin or that it is a spent coin in the parent cache.

If a FRESH coin in the cache is later spent, it can be deleted entirely and doesn't ever need to be flushed to the parent. This is a performance optimization. Marking a coin as FRESH when it exists unspent in the parent cache will cause a consensus failure, since it might not be deleted from the parent when this cache is flushed.

Definition at line 132 of file coins.h.

Constructor & Destructor Documentation

◆ CCoinsCacheEntry() [1/2]

CCoinsCacheEntry::CCoinsCacheEntry ( )
inline

Definition at line 153 of file coins.h.

◆ CCoinsCacheEntry() [2/2]

CCoinsCacheEntry::CCoinsCacheEntry ( Coin &&  coin_)
inlineexplicit

Definition at line 154 of file coins.h.

Member Data Documentation

◆ coin

Coin CCoinsCacheEntry::coin

Definition at line 129 of file coins.h.

◆ flags

unsigned char CCoinsCacheEntry::flags

Definition at line 130 of file coins.h.


The documentation for this struct was generated from the following file: