![]() |
Bitcoin ABC 0.31.1
P2P Digital Currency
|
Cache to track stake contenders for recent blocks. More...
#include <stakecontendercache.h>
Public Member Functions | |
StakeContenderCache () | |
void | cleanup (const int requestedMinHeight) |
bool | isEmpty () const |
For tests. More... | |
bool | add (const CBlockIndex *pindex, const ProofRef &proof, uint8_t status=StakeContenderStatus::UNKNOWN) |
Add a proof to consider in staking rewards pre-consensus. More... | |
void | promoteToBlock (const CBlockIndex *activeTip, std::function< bool(const ProofId &proofid)> const &shouldPromote) |
Promote cache entries to a the active chain tip. More... | |
bool | setWinners (const CBlockIndex *pindex, const std::vector< CScript > &payoutScripts) |
Set proof(s) that should be treated as winners (already finalized). More... | |
bool | accept (const StakeContenderId &contenderId) |
Helpers to set avalanche state of a contender. More... | |
bool | finalize (const StakeContenderId &contenderId) |
bool | reject (const StakeContenderId &contenderId) |
int | getVoteStatus (const StakeContenderId &contenderId, BlockHash &prevblockhashout) const |
Get contender acceptance state for avalanche voting. More... | |
size_t | getPollableContenders (const BlockHash &prevblockhash, size_t maxPollable, std::vector< StakeContenderId > &pollableContenders) const |
Get the best ranking contenders, accepted contenders ranking first. More... | |
bool | getWinners (const BlockHash &prevblockhash, std::vector< std::pair< ProofId, CScript > > &winners) const |
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 | |
int | lastPromotedHeight {0} |
ContenderSet | contenders |
ManualWinnersSet | manualWinners |
Cache to track stake contenders for recent blocks.
Definition at line 95 of file stakecontendercache.h.
|
private |
Definition at line 98 of file stakecontendercache.h.
|
private |
Definition at line 118 of file stakecontendercache.h.
|
inline |
Definition at line 134 of file stakecontendercache.h.
bool avalanche::StakeContenderCache::accept | ( | const StakeContenderId & | contenderId | ) |
Helpers to set avalanche state of a contender.
Definition at line 102 of file stakecontendercache.cpp.
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 45 of file stakecontendercache.cpp.
void avalanche::StakeContenderCache::cleanup | ( | const int | requestedMinHeight | ) |
bool avalanche::StakeContenderCache::finalize | ( | const StakeContenderId & | contenderId | ) |
size_t avalanche::StakeContenderCache::getPollableContenders | ( | const BlockHash & | prevblockhash, |
size_t | maxPollable, | ||
std::vector< StakeContenderId > & | pollableContenders | ||
) | const |
Get the best ranking contenders, accepted contenders ranking first.
The output of this function is only reliable to select contenders to reconcile and should not be called after contender polling begins.
Definition at line 169 of file stakecontendercache.cpp.
int avalanche::StakeContenderCache::getVoteStatus | ( | const StakeContenderId & | contenderId, |
BlockHash & | prevblockhashout | ||
) | const |
Get contender acceptance state for avalanche voting.
Returns 0 for accepted, 1 for rejected, and -1 for not in cache. prevblockhashout gets set if the contender is in the cache.
Definition at line 139 of file stakecontendercache.cpp.
bool avalanche::StakeContenderCache::getWinners | ( | const BlockHash & | prevblockhash, |
std::vector< std::pair< ProofId, CScript > > & | winners | ||
) | const |
Definition at line 227 of file stakecontendercache.cpp.
|
inline |
For tests.
Definition at line 141 of file stakecontendercache.h.
void avalanche::StakeContenderCache::promoteToBlock | ( | const CBlockIndex * | activeTip, |
std::function< bool(const ProofId &proofid)> const & | shouldPromote | ||
) |
Promote cache entries to a the active chain tip.
Definition at line 53 of file stakecontendercache.cpp.
bool avalanche::StakeContenderCache::reject | ( | const StakeContenderId & | contenderId | ) |
bool avalanche::StakeContenderCache::setWinners | ( | const CBlockIndex * | pindex, |
const std::vector< CScript > & | payoutScripts | ||
) |
Set proof(s) that should be treated as winners (already finalized).
This should only be used for manually added winners via RPC.
Definition at line 88 of file stakecontendercache.cpp.
|
private |
Definition at line 116 of file stakecontendercache.h.
|
private |
Definition at line 96 of file stakecontendercache.h.
|
private |
Definition at line 131 of file stakecontendercache.h.