6 #ifndef BITCOIN_COINS_H 7 #define BITCOIN_COINS_H 20 #include <unordered_map> 58 template<
typename Stream>
66 template<
typename Stream>
122 typedef std::unordered_map<COutPoint, CCoinsCacheEntry, SaltedOutpointHasher>
CCoinsMap;
135 virtual bool Valid()
const = 0;
136 virtual void Next() = 0;
229 throw std::logic_error(
"CCoinsViewCache cursor iteration not supported.");
318 #endif // BITCOIN_COINS_H
unsigned int fCoinBase
whether containing transaction was a coinbase
Definition: coins.h:36
virtual bool GetKey(COutPoint &key) const =0
virtual size_t EstimateSize() const
Estimate database size (0 if not implemented)
Definition: coins.h:177
CCoinsViewCursor * Cursor() const override
Get a cursor to iterate over the whole state.
Definition: coins.h:228
bool HaveCoin(const COutPoint &outpoint) const override
Just check whether a given outpoint is unspent.
Definition: coins.cpp:25
Definition: compressor.h:86
CCoinsView * base
Definition: coins.h:185
size_t DynamicMemoryUsage() const
Calculate the size of the cache (in bytes)
Definition: coins.cpp:37
bool IsSpent() const
Definition: coins.h:75
static size_t DynamicUsage(const int8_t &v)
Definition: memusage.h:27
CCoinsMap cacheCoins
Definition: coins.h:209
bool IsCoinBase() const
Definition: coins.h:54
bool IsNull() const
Definition: transaction.h:160
unsigned int nHeight
Definition: mempool_eviction.cpp:15
virtual std::vector< uint256 > GetHeadBlocks() const
Definition: coins.cpp:13
bool GetCoin(const COutPoint &outpoint, Coin &coin) const override
Definition: coins.cpp:58
const uint64_t k1
Definition: coins.h:88
Coin()
empty constructor
Definition: coins.h:52
virtual bool GetCoin(const COutPoint &outpoint, Coin &coin) const
Definition: coins.cpp:11
virtual ~CCoinsView()
As we use CCoinsViews polymorphically, have a virtual destructor.
Definition: coins.h:174
CCoinsViewCursor(const uint256 &hashBlockIn)
Definition: coins.h:128
virtual uint256 GetBestBlock() const
Retrieve the block hash whose state this CCoinsView currently represents.
Definition: coins.cpp:12
uint256 GetBestBlock() const override
Retrieve the block hash whose state this CCoinsView currently represents.
Definition: coins.cpp:26
const uint64_t k0
Definition: coins.h:88
uint256 hashBlock
Definition: coins.h:208
void AddCoin(const COutPoint &outpoint, Coin &&coin, bool potential_overwrite)
Definition: coins.cpp:67
void Serialize(Stream &s) const
Definition: coins.h:59
bool SpendCoin(const COutPoint &outpoint, Coin *moveto=nullptr)
Definition: coins.cpp:99
virtual bool Valid() const =0
void Unserialize(Stream &s)
Definition: coins.h:67
int64_t CAmount
Definition: amount.h:12
CCoinsCacheEntry(Coin &&coin_)
Definition: coins.h:119
std::vector< uint256 > GetHeadBlocks() const override
Definition: coins.cpp:27
bool BatchWrite(CCoinsMap &mapCoins, const uint256 &hashBlock) override
Definition: coins.cpp:29
size_t operator()(const COutPoint &id) const
Definition: coins.h:98
bool GetCoin(const COutPoint &outpoint, Coin &coin) const override
Definition: coins.cpp:24
Definition: transaction.h:270
Definition: transaction.h:18
const Coin & AccessCoin(const COutPoint &output) const
Definition: coins.cpp:117
const Coin & AccessByTxid(const CCoinsViewCache &cache, const uint256 &txid)
Definition: coins.cpp:251
unsigned int uint32_t
Definition: stdint.h:21
uint32_t nHeight
at which height this containing transaction was included in the active block chain
Definition: coins.h:39
unsigned char flags
Definition: coins.h:106
unsigned long long uint64_t
Definition: stdint.h:22
CCoinsViewCache(CCoinsView *baseIn)
Definition: coins.cpp:35
bool HaveCoin(const COutPoint &outpoint) const override
Just check whether a given outpoint is unspent.
Definition: coins.cpp:126
std::unordered_map< COutPoint, CCoinsCacheEntry, SaltedOutpointHasher > CCoinsMap
Definition: coins.h:122
CCoinsMap::iterator FetchCoin(const COutPoint &outpoint) const
Definition: coins.cpp:41
CCoinsCacheEntry()
Definition: coins.h:118
void SetBackend(CCoinsView &viewIn)
Definition: coins.cpp:28
uint256 GetBestBlock() const override
Retrieve the block hash whose state this CCoinsView currently represents.
Definition: coins.cpp:136
bool HaveInputs(const CTransaction &tx) const
Check whether all prevouts of the transaction are present in the UTXO set represented by this view.
Definition: coins.cpp:236
virtual bool BatchWrite(CCoinsMap &mapCoins, const uint256 &hashBlock)
Definition: coins.cpp:14
void SetBestBlock(const uint256 &hashBlock)
Definition: coins.cpp:142
CTxOut out
unspent transaction output
Definition: coins.h:33
Flags
Definition: coins.h:108
uint64_t SipHashUint256Extra(uint64_t k0, uint64_t k1, const uint256 &val, uint32_t extra)
Definition: siphash.cpp:134
CScript scriptPubKey
Definition: transaction.h:137
virtual bool GetValue(Coin &coin) const =0
virtual ~CCoinsViewCursor()
Definition: coins.h:129
uint256 hashBlock
Definition: coins.h:141
Definition: uint256.h:121
CCoinsViewCursor * Cursor() const override
Get a cursor to iterate over the whole state.
Definition: coins.cpp:30
size_t cachedCoinsUsage
Definition: coins.h:212
void AddCoins(CCoinsViewCache &cache, const CTransaction &tx, int nHeight, bool check=false)
Definition: coins.cpp:88
virtual bool HaveCoin(const COutPoint &outpoint) const
Just check whether a given outpoint is unspent.
Definition: coins.cpp:17
CCoinsViewBacked(CCoinsView *viewIn)
Definition: coins.cpp:23
const uint256 & GetBestBlock() const
Get best block at the time this cursor was created.
Definition: coins.h:139
bool Flush()
Definition: coins.cpp:204
size_t EstimateSize() const override
Estimate database size (0 if not implemented)
Definition: coins.cpp:31
bool HaveCoinInCache(const COutPoint &outpoint) const
Definition: coins.cpp:131
unsigned int GetCacheSize() const
Calculate the size of the cache (in number of transaction outputs)
Definition: coins.cpp:220
Coin(const CTxOut &outIn, int nHeightIn, bool fCoinBaseIn)
Definition: coins.h:43
bool BatchWrite(CCoinsMap &mapCoins, const uint256 &hashBlock) override
Definition: coins.cpp:146
virtual CCoinsViewCursor * Cursor() const
Get a cursor to iterate over the whole state.
Definition: coins.cpp:15
Coin(CTxOut &&outIn, int nHeightIn, bool fCoinBaseIn)
construct a Coin from a CTxOut and height/coinbase information.
Definition: coins.h:42
Coin coin
Definition: coins.h:105
size_t DynamicMemoryUsage() const
Definition: coins.h:79
T & REF(const T &val)
Definition: serialize.h:48
void SetNull()
Definition: transaction.h:154
SaltedOutpointHasher()
Definition: coins.cpp:33
#define VARINT(obj,...)
Definition: serialize.h:422
CAmount GetValueIn(const CTransaction &tx) const
Definition: coins.cpp:224
void Uncache(const COutPoint &outpoint)
Definition: coins.cpp:211
virtual unsigned int GetValueSize() const =0
void Clear()
Definition: coins.h:45
Definition: transaction.h:133