Bitcoin ABC 0.26.3
P2P Digital Currency
Loading...
Searching...
No Matches
Public Member Functions | Private Types | Private Attributes | List of all members
avalanche::StakeContenderCache Class Reference

Cache to track stake contenders for recent blocks. More...

#include <stakecontendercache.h>

Public Member Functions

 StakeContenderCache ()
 
void cleanup (const int minHeight)
 
size_t isEmpty () const
 For tests.
 
bool add (const CBlockIndex *pindex, const ProofRef &proof, uint8_t status=StakeContenderStatus::UNKNOWN)
 Add a proof to consider in staking rewards pre-consensus.
 
bool addWinner (const CBlockIndex *pindex, const CScript &payoutScript)
 Add a proof that should be treated as a winner (already finalized).
 
bool accept (const StakeContenderId &contenderId)
 Helpers to set avalanche state of a contender.
 
bool finalize (const StakeContenderId &contenderId)
 
bool reject (const StakeContenderId &contenderId)
 
bool invalidate (const StakeContenderId &contenderId)
 
int getVoteStatus (const StakeContenderId &contenderId) const
 Get contender acceptance state for avalanche voting.
 
bool getWinners (const BlockHash &prevblockhash, std::vector< CScript > &payouts) const
 Get payout scripts of the winning proofs.
 

Private Types

using ContenderSet = boost::multi_index_container< StakeContenderCacheEntry, bmi::indexed_by< bmi::hashed_unique< bmi::tag< by_stakecontenderid >, stakecontenderid_index, SaltedUint256Hasher >, bmi::hashed_non_unique< bmi::tag< by_prevblockhash >, bmi::member< StakeContenderCacheEntry, BlockHash, &StakeContenderCacheEntry::prevblockhash >, SaltedUint256Hasher >, bmi::ordered_non_unique< bmi::tag< by_blockheight >, bmi::member< StakeContenderCacheEntry, int, &StakeContenderCacheEntry::blockheight > > > >
 
using ManualWinnersSet = boost::multi_index_container< ManualWinners, bmi::indexed_by< bmi::hashed_unique< bmi::tag< by_prevblockhash >, bmi::member< ManualWinners, BlockHash, &ManualWinners::prevblockhash >, SaltedUint256Hasher >, bmi::ordered_unique< bmi::tag< by_blockheight >, bmi::member< ManualWinners, int, &ManualWinners::blockheight > > > >
 

Private Attributes

ContenderSet contenders
 
ManualWinnersSet manualWinners
 

Detailed Description

Cache to track stake contenders for recent blocks.

Definition at line 88 of file stakecontendercache.h.

Member Typedef Documentation

◆ ContenderSet

using avalanche::StakeContenderCache::ContenderSet = boost::multi_index_container< StakeContenderCacheEntry, bmi::indexed_by< bmi::hashed_unique<bmi::tag<by_stakecontenderid>, stakecontenderid_index, SaltedUint256Hasher>, bmi::hashed_non_unique< bmi::tag<by_prevblockhash>, bmi::member<StakeContenderCacheEntry, BlockHash, &StakeContenderCacheEntry::prevblockhash>, SaltedUint256Hasher>, bmi::ordered_non_unique< bmi::tag<by_blockheight>, bmi::member<StakeContenderCacheEntry, int, &StakeContenderCacheEntry::blockheight> >> >
private

Definition at line 89 of file stakecontendercache.h.

◆ ManualWinnersSet

using avalanche::StakeContenderCache::ManualWinnersSet = boost::multi_index_container< ManualWinners, bmi::indexed_by< bmi::hashed_unique<bmi::tag<by_prevblockhash>, bmi::member<ManualWinners, BlockHash, &ManualWinners::prevblockhash>, SaltedUint256Hasher>, bmi::ordered_unique< bmi::tag<by_blockheight>, bmi::member<ManualWinners, int, &ManualWinners::blockheight> >> >
private

Definition at line 109 of file stakecontendercache.h.

Constructor & Destructor Documentation

◆ StakeContenderCache()

avalanche::StakeContenderCache::StakeContenderCache ( )
inline

Definition at line 125 of file stakecontendercache.h.

Member Function Documentation

◆ accept()

bool avalanche::StakeContenderCache::accept ( const StakeContenderId contenderId)

Helpers to set avalanche state of a contender.

Definition at line 59 of file stakecontendercache.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add()

bool avalanche::StakeContenderCache::add ( const CBlockIndex pindex,
const ProofRef proof,
uint8_t  status = StakeContenderStatus::UNKNOWN 
)

Add a proof to consider in staking rewards pre-consensus.

Definition at line 34 of file stakecontendercache.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ addWinner()

bool avalanche::StakeContenderCache::addWinner ( const CBlockIndex pindex,
const CScript payoutScript 
)

Add a proof that should be treated as a winner (already finalized).

This should only be used for manually added winners via RPC.

Definition at line 42 of file stakecontendercache.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cleanup()

void avalanche::StakeContenderCache::cleanup ( const int  minHeight)

Definition at line 9 of file stakecontendercache.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ finalize()

bool avalanche::StakeContenderCache::finalize ( const StakeContenderId contenderId)

Definition at line 71 of file stakecontendercache.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getVoteStatus()

int avalanche::StakeContenderCache::getVoteStatus ( const StakeContenderId contenderId) const

Get contender acceptance state for avalanche voting.

Returns 0 for accepted, 1 for rejected, and -1 for not in cache.

Definition at line 109 of file stakecontendercache.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getWinners()

bool avalanche::StakeContenderCache::getWinners ( const BlockHash prevblockhash,
std::vector< CScript > &  payouts 
) const

Get payout scripts of the winning proofs.

Definition at line 137 of file stakecontendercache.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ invalidate()

bool avalanche::StakeContenderCache::invalidate ( const StakeContenderId contenderId)

Definition at line 96 of file stakecontendercache.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ isEmpty()

size_t avalanche::StakeContenderCache::isEmpty ( ) const
inline

For tests.

Definition at line 132 of file stakecontendercache.h.

Here is the caller graph for this function:

◆ reject()

bool avalanche::StakeContenderCache::reject ( const StakeContenderId contenderId)

Definition at line 84 of file stakecontendercache.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ contenders

ContenderSet avalanche::StakeContenderCache::contenders
private

Definition at line 107 of file stakecontendercache.h.

◆ manualWinners

ManualWinnersSet avalanche::StakeContenderCache::manualWinners
private

Definition at line 122 of file stakecontendercache.h.


The documentation for this class was generated from the following files: